Start a research run
All requests require anX-API-Key header. Accepted requests use a Server-Sent Events stream, including when stream is omitted or false. Invalid input and other failures before a run starts return the standard JSON error body.
data: line containing JSON. Save the research_run_id from the created event and stop reading after done.
Modes
auto and an omitted mode currently select standard. Set browser_enabled: false to keep Max mode to search and static fetches. browser_enabled: true is accepted only in Max mode.
Request body
Do not combine
recency_minutes with after_date or before_date. Date and recency filters are unavailable for research_paper searches. session_id and prior_run_id are mutually exclusive.
Domain filtering
Useinclude to prioritize listed domains while retaining other results. Use exclusive to restrict results to the allowlist. Blocked domains are always removed. Each list accepts at most 150 entries.
Read the event stream
Ordered
synthesis_delta values for a checkpoint reconstruct its matching summary or final result. If synthesis_discarded appears, discard the provisional partial checkpoint. Heartbeats keep long-running connections open.
Continue prior research
Passprior_run_id to seed a new session with a completed report and its evidence. To continue an existing standard-mode conversation, pass the session_id emitted by the earlier run.
Retrieve saved runs
Fetch one run withGET /v1/research-run/{research_run_id}. List runs with GET /v1/research-run; supported filters are status, query, created_after, and created_before. Pagination uses limit from 1–100, sort_direction=asc|desc, and the returned next_cursor. Reuse a cursor only with the same sort direction.
429; daily-limit responses include Retry-After and X-RateLimit-* headers.
/v1/automation/run-research remains available for compatibility. New integrations should use v2.