Run one or more web searches; return merged, de-duplicated results.
For depth in {instant, fast, auto} this is synchronous: the response is
the full SearchResponse. For depth='deep' the response is HTTP 202
with a SearchRunView carrying a search_id - poll
GET /v1/searches/{search_id}, stream events via SSE
(/v1/searches/{search_id}/events) or WebSocket
(/v1/searches/{search_id}/ws), or pass a webhook URL on the body to
receive the finished run.
Keyword search queries to run; their results are merged and de-duplicated. Provide 1-5.
Natural-language description of what the caller is looking for. When set, results are automatically re-ranked by their relevance to this objective using a fast LLM pass - off-topic rows are dropped. Also focuses excerpts when advanced_settings.contents.highlights/summary is requested.
‘instant’ (~200ms, top of page, no enrichment), ‘fast’ (~450ms, single SERP page), ‘auto’ (~1s, recommended), ‘deep’ (~4-18s, multi-page gather + merge).
Alias of depth (basic -> fast, advanced -> auto). If both are supplied, depth wins.
Result category hint. One of: company, research_paper, news, personal_site, financial_report, people.
Two-letter country code to localize results.
Alias of country (Parallel-style). If both are supplied, country wins.
Restrict to recent results: hour, day, week, month or year.
Optional caller-supplied session id. Echoed back; if absent a new one is generated.
Caller’s model identifier. Echoed only; not used.
Envelope for advanced tuning - source policy (include/exclude domains, date window), excerpt sizing, and inline second-pass content extraction.
If set, deep-mode (depth='deep') runs POST the finished payload to this URL. Ignored for non-deep depths (which return synchronously).
Research question for the agentic deep-research engine (only applied when depth='deep'). When absent, the engine falls back to joining queries.
Caps the planner’s sub-query count (deep only). Default 8.
Global cap on pages fetched across all sub-queries (deep only). Default 18.