For AI agents: a documentation index is available at the root level at /llms.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
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
X-API-Keystring
A unique API Key is required to authorize API access. [Get your API Key with free credits](https://you.com/platform).
Request
This endpoint expects an object.
inputstringRequired<=40000 characters
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.
research_effortenumOptionalDefaults to standard
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. Good for straightforward questions that just need a fast, reliable answer.
- `standard`: The default. Balances speed and depth, a good fit for most questions.
- `deep`: Spends more time researching and cross-referencing sources. Use this when accuracy and thoroughness matter more than speed.
- `exhaustive`: The most thorough option. Explores the topic as fully as possible, best suited for complex research tasks where you want the highest quality result.
- `frontier`: Designed for long-running, deep research tasks that require the maximum compute budget. Latency ranges from 30s to 12000s (p50: 300s). Requires `background: true` — synchronous requests with `research_effort: "frontier"` return `422`.
Allowed values:
source_controlobjectOptional
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`).
output_schemamap from strings to anyOptional
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, `$defs` names, enum values, and `const` values.
Schema rules:
- Root must be a JSON object. Top-level `anyOf` is not allowed. - Every object must define `properties` and set `additionalProperties: false`. - Every property must be listed in `required`. To make a field optional, keep it in `required` and 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 a `null` branch inside an `anyOf`.
See [Structured Output](/docs/guides/research#structured-output) for full rules, supported patterns, the optional-via-nullable pattern, conditional structure, and examples.
backgroundbooleanOptionalDefaults to false
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.
ResearchOutputobject
The research output containing the answer and sources.
OR
ResearchTaskobject
A handle for a background research task returned immediately on submission.
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. Good for straightforward questions that just need a fast, reliable answer.
standard: The default. Balances speed and depth, a good fit for most questions.
deep: Spends more time researching and cross-referencing sources. Use this when accuracy and thoroughness matter more than speed.
exhaustive: The most thorough option. Explores the topic as fully as possible, best suited for complex research tasks where you want the highest quality result.
frontier: Designed for long-running, deep research tasks that require the maximum compute budget. Latency ranges from 30s to 12000s (p50: 300s). Requires background: true — synchronous requests with research_effort: "frontier" return 422.
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, $defs names, enum values, and const values.
Schema rules:
Root must be a JSON object. Top-level anyOf is not allowed. - Every object must define properties and set additionalProperties: false. - Every property must be listed in required. To make a field optional, keep it in required and 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 a null branch inside an anyOf.
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".