Research
Execute AI-powered research queries that search the web, analyze sources, and synthesize comprehensive answers. This endpoint always streams responses using Server-Sent Events (SSE).
Streaming Response:
- All responses are streamed using Server-Sent Events (
text/event-stream) - Real-time progress updates as research progresses through phases
Research Modes:
fast- Quick answers with minimal web searches (default)balanced- Standard research with multiple iterations
Use Cases:
- Answering complex questions with cited sources
- Synthesizing information from multiple web sources
- Research reports on specific topics
- Fact-checking and verification tasks
ParametersExpand Collapse
ReturnsExpand Collapse
ResearchEvent = V1ResearchEventAnalyzingEnd { data, event } | V1ResearchEventAnalyzingStart { data, event } | V1ResearchEventComplete { data, event } | 20 moreA Server-Sent Event from /v1/research. Typed discriminated union keyed on event.
A Server-Sent Event from /v1/research. Typed discriminated union keyed on event.
V1ResearchEventAnalyzingEnd { data, event } Envelope for the “analyzing:end” event from /v1/research.
Envelope for the “analyzing:end” event from /v1/research.
V1ResearchEventAnalyzingStart { data, event } Envelope for the “analyzing:start” event from /v1/research.
Envelope for the “analyzing:start” event from /v1/research.
V1ResearchEventComplete { data, event } Envelope for the “complete” event from /v1/research.
Envelope for the “complete” event from /v1/research.
data: Data { message, metadata, report, timestamp } complete - Research finished successfully
complete - Research finished successfully
metadata: Metadata { executedQueries, mode, prompt, 11 more } Research metadata
Note: citedPages, gapEvaluations, outline, and judgments are optional to support fast mode, which skips these phases for maximum speed.
Research metadata
Note: citedPages, gapEvaluations, outline, and judgments are optional to support fast mode, which skips these phases for maximum speed.
mode: "fast" | "balanced" | "deep" | 2 moreResearch mode determines depth, thinking budget, and quality controls
Modes (in order of cost/thoroughness):
- fast: Quick answers with minimal validation (~$2, 1 iteration, no judge)
- balanced: Standard research with moderate depth (~$8, 3 iterations, Flash models, no judge)
- deep: Thorough research with judge review (~$15, 5 iterations, Flash models, with judge)
- max: Maximum quality with Pro models (~$40, 5 iterations, Pro models, with judge)
- ultra: Ultimate tier - all Pro models, 10 iterations (expensive, for when accuracy is paramount)
Research mode determines depth, thinking budget, and quality controls
Modes (in order of cost/thoroughness):
- fast: Quick answers with minimal validation (~$2, 1 iteration, no judge)
- balanced: Standard research with moderate depth (~$8, 3 iterations, Flash models, no judge)
- deep: Thorough research with judge review (~$15, 5 iterations, Flash models, with judge)
- max: Maximum quality with Pro models (~$40, 5 iterations, Pro models, with judge)
- ultra: Ultimate tier - all Pro models, 10 iterations (expensive, for when accuracy is paramount)
citedPages?: Array<CitedPage>Pages cited in the report, ordered by first citation appearance
Pages cited in the report, ordered by first citation appearance
gapEvaluations?: Array<GapEvaluation>
Based on unanswered/partial questions, what specific information is still needed?
questionAssessments: Array<QuestionAssessment>Assessment of each research question’s status and findings
Assessment of each research question’s status and findings
researchCoverage: "Light" | "Moderate" | "Solid" | "Comprehensive"Research coverage level - assesses quality across all questions.
Hierarchy: Light < Moderate < Solid < Comprehensive
- Light: Basic info on some questions, most need more depth → Continue
- Moderate: Multiple questions answered, some remain partial → Continue
- Solid: Most questions well-answered with validated sources → Sufficient to stop
- Comprehensive: All questions thoroughly answered, exceptional depth → Definitely stop
Research coverage level - assesses quality across all questions.
Hierarchy: Light < Moderate < Solid < Comprehensive
- Light: Basic info on some questions, most need more depth → Continue
- Moderate: Multiple questions answered, some remain partial → Continue
- Solid: Most questions well-answered with validated sources → Sufficient to stop
- Comprehensive: All questions thoroughly answered, exceptional depth → Definitely stop
Explicit decision: should research continue with another iteration?
- Considers: how many questions unanswered/partial, coverage for mode, remaining iterations
- Drives query generation: true → generate queries, false → stop researching
metrics?: Metrics { cachedFetches, cachedSearches, fetches, 7 more } Complete research metrics
Complete research metrics
V1ResearchEventError { data, event } Envelope for the “error” event from /v1/research.
Envelope for the “error” event from /v1/research.
V1ResearchEventEvaluatingEnd { data, event } Envelope for the “evaluating:end” event from /v1/research.
Envelope for the “evaluating:end” event from /v1/research.
V1ResearchEventEvaluatingStart { data, event } Envelope for the “evaluating:start” event from /v1/research.
Envelope for the “evaluating:start” event from /v1/research.
V1ResearchEventFollowingEnd { data, event } Envelope for the “following:end” event from /v1/research.
Envelope for the “following:end” event from /v1/research.
V1ResearchEventFollowingStart { data, event } Envelope for the “following:start” event from /v1/research.
Envelope for the “following:start” event from /v1/research.
V1ResearchEventIterationEnd { data, event } Envelope for the “iteration:end” event from /v1/research.
Envelope for the “iteration:end” event from /v1/research.
V1ResearchEventIterationStart { data, event } Envelope for the “iteration:start” event from /v1/research.
Envelope for the “iteration:start” event from /v1/research.
V1ResearchEventJudgingStart { data, event } Envelope for the “judging:start” event from /v1/research.
Envelope for the “judging:start” event from /v1/research.
V1ResearchEventOutliningEnd { data, event } Envelope for the “outlining:end” event from /v1/research.
Envelope for the “outlining:end” event from /v1/research.
V1ResearchEventOutliningStart { data, event } Envelope for the “outlining:start” event from /v1/research.
Envelope for the “outlining:start” event from /v1/research.
V1ResearchEventPlanningStart { data, event } Envelope for the “planning:start” event from /v1/research.
Envelope for the “planning:start” event from /v1/research.
V1ResearchEventPrefetchingEnd { data, event } Envelope for the “prefetching:end” event from /v1/research.
Envelope for the “prefetching:end” event from /v1/research.
V1ResearchEventPrefetchingStart { data, event } Envelope for the “prefetching:start” event from /v1/research.
Envelope for the “prefetching:start” event from /v1/research.
V1ResearchEventSearchingEnd { data, event } Envelope for the “searching:end” event from /v1/research.
Envelope for the “searching:end” event from /v1/research.
V1ResearchEventSearchingStart { data, event } Envelope for the “searching:start” event from /v1/research.
Envelope for the “searching:start” event from /v1/research.
ResearchEvent = V1ResearchEventAnalyzingEnd { data, event } | V1ResearchEventAnalyzingStart { data, event } | V1ResearchEventComplete { data, event } | 20 moreA Server-Sent Event from /v1/research. Typed discriminated union keyed on event.
A Server-Sent Event from /v1/research. Typed discriminated union keyed on event.
V1ResearchEventAnalyzingEnd { data, event } Envelope for the “analyzing:end” event from /v1/research.
Envelope for the “analyzing:end” event from /v1/research.
V1ResearchEventAnalyzingStart { data, event } Envelope for the “analyzing:start” event from /v1/research.
Envelope for the “analyzing:start” event from /v1/research.
V1ResearchEventComplete { data, event } Envelope for the “complete” event from /v1/research.
Envelope for the “complete” event from /v1/research.
data: Data { message, metadata, report, timestamp } complete - Research finished successfully
complete - Research finished successfully
metadata: Metadata { executedQueries, mode, prompt, 11 more } Research metadata
Note: citedPages, gapEvaluations, outline, and judgments are optional to support fast mode, which skips these phases for maximum speed.
Research metadata
Note: citedPages, gapEvaluations, outline, and judgments are optional to support fast mode, which skips these phases for maximum speed.
mode: "fast" | "balanced" | "deep" | 2 moreResearch mode determines depth, thinking budget, and quality controls
Modes (in order of cost/thoroughness):
- fast: Quick answers with minimal validation (~$2, 1 iteration, no judge)
- balanced: Standard research with moderate depth (~$8, 3 iterations, Flash models, no judge)
- deep: Thorough research with judge review (~$15, 5 iterations, Flash models, with judge)
- max: Maximum quality with Pro models (~$40, 5 iterations, Pro models, with judge)
- ultra: Ultimate tier - all Pro models, 10 iterations (expensive, for when accuracy is paramount)
Research mode determines depth, thinking budget, and quality controls
Modes (in order of cost/thoroughness):
- fast: Quick answers with minimal validation (~$2, 1 iteration, no judge)
- balanced: Standard research with moderate depth (~$8, 3 iterations, Flash models, no judge)
- deep: Thorough research with judge review (~$15, 5 iterations, Flash models, with judge)
- max: Maximum quality with Pro models (~$40, 5 iterations, Pro models, with judge)
- ultra: Ultimate tier - all Pro models, 10 iterations (expensive, for when accuracy is paramount)
citedPages?: Array<CitedPage>Pages cited in the report, ordered by first citation appearance
Pages cited in the report, ordered by first citation appearance
gapEvaluations?: Array<GapEvaluation>
Based on unanswered/partial questions, what specific information is still needed?
questionAssessments: Array<QuestionAssessment>Assessment of each research question’s status and findings
Assessment of each research question’s status and findings
researchCoverage: "Light" | "Moderate" | "Solid" | "Comprehensive"Research coverage level - assesses quality across all questions.
Hierarchy: Light < Moderate < Solid < Comprehensive
- Light: Basic info on some questions, most need more depth → Continue
- Moderate: Multiple questions answered, some remain partial → Continue
- Solid: Most questions well-answered with validated sources → Sufficient to stop
- Comprehensive: All questions thoroughly answered, exceptional depth → Definitely stop
Research coverage level - assesses quality across all questions.
Hierarchy: Light < Moderate < Solid < Comprehensive
- Light: Basic info on some questions, most need more depth → Continue
- Moderate: Multiple questions answered, some remain partial → Continue
- Solid: Most questions well-answered with validated sources → Sufficient to stop
- Comprehensive: All questions thoroughly answered, exceptional depth → Definitely stop
Explicit decision: should research continue with another iteration?
- Considers: how many questions unanswered/partial, coverage for mode, remaining iterations
- Drives query generation: true → generate queries, false → stop researching
metrics?: Metrics { cachedFetches, cachedSearches, fetches, 7 more } Complete research metrics
Complete research metrics
V1ResearchEventError { data, event } Envelope for the “error” event from /v1/research.
Envelope for the “error” event from /v1/research.
V1ResearchEventEvaluatingEnd { data, event } Envelope for the “evaluating:end” event from /v1/research.
Envelope for the “evaluating:end” event from /v1/research.
V1ResearchEventEvaluatingStart { data, event } Envelope for the “evaluating:start” event from /v1/research.
Envelope for the “evaluating:start” event from /v1/research.
V1ResearchEventFollowingEnd { data, event } Envelope for the “following:end” event from /v1/research.
Envelope for the “following:end” event from /v1/research.
V1ResearchEventFollowingStart { data, event } Envelope for the “following:start” event from /v1/research.
Envelope for the “following:start” event from /v1/research.
V1ResearchEventIterationEnd { data, event } Envelope for the “iteration:end” event from /v1/research.
Envelope for the “iteration:end” event from /v1/research.
V1ResearchEventIterationStart { data, event } Envelope for the “iteration:start” event from /v1/research.
Envelope for the “iteration:start” event from /v1/research.
V1ResearchEventJudgingStart { data, event } Envelope for the “judging:start” event from /v1/research.
Envelope for the “judging:start” event from /v1/research.
V1ResearchEventOutliningEnd { data, event } Envelope for the “outlining:end” event from /v1/research.
Envelope for the “outlining:end” event from /v1/research.
V1ResearchEventOutliningStart { data, event } Envelope for the “outlining:start” event from /v1/research.
Envelope for the “outlining:start” event from /v1/research.
V1ResearchEventPlanningStart { data, event } Envelope for the “planning:start” event from /v1/research.
Envelope for the “planning:start” event from /v1/research.
V1ResearchEventPrefetchingEnd { data, event } Envelope for the “prefetching:end” event from /v1/research.
Envelope for the “prefetching:end” event from /v1/research.
V1ResearchEventPrefetchingStart { data, event } Envelope for the “prefetching:start” event from /v1/research.
Envelope for the “prefetching:start” event from /v1/research.
V1ResearchEventSearchingEnd { data, event } Envelope for the “searching:end” event from /v1/research.
Envelope for the “searching:end” event from /v1/research.
V1ResearchEventSearchingStart { data, event } Envelope for the “searching:start” event from /v1/research.
Envelope for the “searching:start” event from /v1/research.
Research
import Tabstack from '@tabstack/sdk';
const client = new Tabstack({
apiKey: process.env['TABSTACK_API_KEY'], // This is the default and can be omitted
});
const researchEvent = await client.agent.research({
query: 'What are the latest developments in quantum computing?',
});
console.log(researchEvent);