Research
Research goes beyond a single web search. In response to your question, it runs multiple searches, reads through the sources, and synthesizes everything into a thorough, well-cited answer. Use it when a question is too complex for a simple lookup, and when you need a response you can actually trust and verify.
Authentication
A unique API Key is required to authorize API access. Get your API Key with free credits.
Request
The research question or complex query requiring in-depth investigation and multi-step reasoning.
Note: The maximum length of the input is 40,000 characters.
Controls how much time and effort the Research API spends on your question. Higher effort levels run more searches and dig deeper into sources, at the cost of a longer response time.
Available levels:
lite: Returns answers quickly, in under 10s. Good for straightforward questions that just need a fast, reliable answer.standard: The default. Balances speed and depth, a good fit for most questions. Latency is about 10–30s.deep: Spends more time researching and cross-referencing sources. Use this when accuracy and thoroughness matter more than speed. Latency is under 120s.exhaustive: Explores the topic as fully as possible, best suited for complex research tasks where you want the highest quality result. Latency is under 300s.frontier: Designed for long-running, deep research tasks that require the maximum compute budget. Latency ranges from 30s to 12000s (p50: 300s). Requiresbackground: true— synchronous requests withresearch_effort: "frontier"return422.
Beta. Controls which web sources the research agent searches and visits. Use this to allow specific domains, block specific domains, boost specific domains, filter by recency, or focus web results by country.
include_domains and exclude_domains cannot be used together in the same request. Each domain list is capped at 500 entries. exclude_domains also blocks the research agent from visiting pages on those domains during browsing. boost_domains gives matching domains a relative ranking boost without filtering out other domains. It can be combined with exclude_domains but cannot be combined with include_domains (returns 422).
Beta. Requests structured JSON output in output.content using a supported JSON Schema subset. Supported with research_effort values standard, deep, exhaustive, and frontier. Sending output_schema with research_effort: "lite" returns 422.
Limits are enforced before model execution. The request fails with 422 if any limit is exceeded:
- Max nesting depth: 5. - Max total properties: 100. - Max total enum values: 500. - Max large-enum string budget (enums over 250 values): 7,500. - Max total schema string budget: 25,000. The schema string budget counts property names,
$defsnames, enum values, andconstvalues.
Schema rules:
- Root must be a JSON object. Top-level
anyOfis not allowed. - Every object must definepropertiesand setadditionalProperties: false. - Every property must be listed inrequired. To make a field optional, keep it inrequiredand add"null"to its type, for example["string", "null"]. - Recursive schemas are not supported. - A property’s type may not be a bare{"type": "null"}. Use a nullable array form such as["string", "null"], or anullbranch inside ananyOf.
See Structured Output for full rules, supported patterns, the optional-via-nullable pattern, conditional structure, and examples.
When true, runs the request asynchronously as a background task. The API returns a task handle immediately instead of waiting for the final answer. Poll GET /v1/research/{task_id} or stream progress via GET /v1/research/{task_id}/stream to retrieve the result. Useful for deep or exhaustive research that can exceed client-side timeouts, or when you want to decouple submission from retrieval. Required for research_effort: "frontier".
Response
In synchronous mode (background: false, the default), a JSON object containing a comprehensive answer with citations and supporting search results. In background mode (background: true), a JSON object with a task handle that you can poll or stream for the final result.