Skip to main content
Beta: The Research API is available to everyone while in beta. Contact support if you encounter any bugs.

Endpoints

All endpoints use https://agent.tinyfish.ai and require the X-API-Key header.
Research must be enabled for the API key’s account. POST /v1/automation/run-research returns 403 when it is not.

Modes

An omitted mode selects deep. Legacy auto selects 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 date filters. Date and recency filters are unavailable for research_paper. session_id and prior_run_id are mutually exclusive.

Event Stream

Accepted requests return text/event-stream, including when stream is omitted or false. Invalid input and other pre-run failures return the standard JSON error body. Ordered synthesis_delta values reconstruct their matching summary or final result. Discard a provisional partial checkpoint after synthesis_discarded. Heartbeats keep long-running connections open.

Run Statuses

COMPLETED, FAILED, CANCELLED, and TIMED_OUT are terminal.

List Saved Runs

GET /v1/research-run supports 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.
quick_result holds the standard-mode answer and deep_result the Deep and Max report. Both are objects: read the report from deep_result.result, not from deep_result itself. quick_result_summary is the one plain string. run_ids lists the Agent runs a Max run started. Fields that do not apply to the run are null.

Retrieve One Run

GET /v1/research-run/{research_run_id} returns the list fields plus the working state kept for the run.
A run that does not exist returns HTTP 404. A run owned by another API key returns HTTP 403.

Cancel a Run

Call POST /v1/research-run/{research_run_id}/cancel to cancel a running research run. The response reports whether this request changed the run to CANCELLED and includes its current status.
Cancellation is idempotent. A run that is already terminal returns HTTP 200 with cancelled: false and its current status. A missing run, or a run owned by another API key, returns HTTP 404.

Limits

Research creation is limited by concurrent runs and by runs started per Pacific calendar day. While Research is in beta both default to 5 per account. Contact support if you need higher limits. The daily count includes runs still in progress as well as completed ones, so five in-flight runs exhaust the day’s allowance. Runs that fail, time out, or are cancelled do not count. Daily-limit responses use HTTP 429 with error.code set to DAILY_LIMIT_EXCEEDED, carry Retry-After and X-RateLimit-Limit / X-RateLimit-Remaining / X-RateLimit-Reset headers, and report the window in error.details.
If the limit cannot be evaluated, the request returns HTTP 503 with error.code set to SERVICE_BUSY. Retry after a short pause.