Initial public release.The first public version of the AI Search API is here. Capture what the live AI apps actually show, from a real browser, and parse every surface with one shape.Search
POST /v1/search— async by default. Fan out across surfaces and regions in one call and get back202 { jobId, status: "processing", children: [...] }, with one child per surface × region.- Synchronous mode for a single surface via
?mode=sync(or thePrefer: waitheader), returning the Envelope inline with200. - Sync alias
POST /v1/search/:surface(for example/v1/search/chatgpt) that acceptsprompt(alias ofquery) and a flatcountry.
- Seven surfaces at launch:
chatgpt,claude,perplexity,gemini,copilot,google_ai_overview, andgoogle_ai_mode.
- The canonical Envelope normalizes every surface into the same shape —
job,provenance,answer, andevidence— so you write one parser and it works everywhere. answer.markdownis always populated, alongsideanswer.textandanswer.blocks[]that referenceevidence.sources.- Rich evidence:
sources,fanOut,mentions,shopping, andads, plusprovenance.modelandprovenance.surfacePresent.
- Batch fan-out across many surfaces and regions from a single request.
GET /v1/jobs/:idto poll a parent (job status plus children) or fetch a child Envelope by its dotted id (for examplejob_8t2q.chatgpt.us).
- HMAC-signed webhook delivery via
webhook: { url, secret }so you can react to results without polling.
- Per-request
regions: [{ country, city?, language? }](ISO-3166 alpha-2 country, defaultUS). provenance.regionreportsrequestedvseffectivewhen a region can’t be honored exactly.
- Safe retries with an
idempotencyKeybody field.
- Usage, health, and live async status endpoints, including
GET /v1/async/statusfor an inflight snapshot of your key.
- Credit-based billing, charged only on successful captures, with 500 free credits to start.