Overview
Deep Research takes a free-text brief about one research target — a company, a person, or a team — and produces a cited report. A reasoning agent plans the research, fans out research agents that gather evidence from the web and Extruct’s data sources, reviews what came back, and synthesizes the result. It is implemented through thedeep_research_tasks endpoints in API Reference.
This Path Works Best When
- You want a deep, sourced report on one target: account planning, buyer research, initiative summaries, diligence.
- You are researching a person before outreach or a meeting: who they are, what their team owns, and the best angle to open a conversation.
- You need every claim backed by citations, or structured output that downstream systems can parse.
- You are willing to wait minutes for an asynchronous task in exchange for depth.
Choose Another Path If
- You want to discover many companies matching criteria. Use Deep Search.
- You want repeatable enrichment across a list of companies. Use AI Tables.
- You need one company’s profile facts instantly. Use Company Lookup.
Prerequisites
Deep Research requires a Pro plan, and starting a task requires the full depth budget in available credits (see Costs below).Endpoints used
- Create task (
POST /v1/deep_research_tasks) - Get task (
GET /v1/deep_research_tasks/:task_id) - List tasks (
GET /v1/deep_research_tasks)
Workflow
1) Create a task
Write the brief like a request to a research analyst: a detailed paragraph naming the target, your own context (what you sell or research, who your buyer is), and the decision the report should support. Detailed, specific briefs reliably produce better reports than one-liners — “Help me break into Shell” is a bad brief; the example below is a good one.jq. If unavailable, copy id manually from the response.
People are first-class targets too — include your own context and the profile to research:
2) Poll until done
iterations (analysis steps), agents (research agents completed), sources (unique sources collected). The task is finished when status is done or failed.
3) Read the report
For a markdown task,report.kind is "markdown": the markdown cites sources with bracketed ids like [1] that resolve against report.sources (id → URL).
report.degradation_reasons. It lists, in plain language, anything that reduced coverage — research stopped at its budget or step limit, or some research agents failed. Empty for a clean run. Show these notes to your users alongside the report.
If status is failed, read failure_reason: a rejected brief includes suggestions for fixing it, and failed tasks refund all their charges.
Structured reports (schema mode)
Pass anoutput_schema to get machine-readable output instead of markdown. The schema must be a JSON Schema object ("type": "object"); it is validated in full at creation time.
report.kind is "schema":
report.fields— values conforming to your schema. Adoneschema report is guaranteed to validate against it.report.basis— for every field, the ids of the sources supporting that value (empty when a value is unsupported — treat those with care).report.sources— the id → URL registry thebasisids resolve against.
basis is your audit trail.
Costs
depthsets the research-agent budget:medium= 25,high= 50,xhigh= 75.- Starting a task requires the full budget in available credits, but you are billed only for agents that actually run (1 credit each). A focused brief often finishes well under budget.
- Failed tasks — rejected briefs, mid-run credit exhaustion, internal errors — refund all their charges.