Captures come from the real ChatGPT app in a live browser, not a sanitized
model API. You get what a person would actually see.
Capture ChatGPT
With POST /v1/search
Pass surfaces: ["chatgpt"]. A single-surface request with no webhook runs synchronously by default — a 200 with the finished Envelope inline. Add ?mode=async for the durable 202 + poll path:
GET /v1/jobs/job_8t2q.chatgpt.us. See Synchronous and Asynchronous.
With the alias POST /v1/search/chatgpt
The per-surface alias targets ChatGPT only — sync by default like any single-surface call — and accepts prompt (an alias of query) and a flat country.
Request fields
The prompt to run — a non-empty string. On the alias endpoint you may send
prompt instead.For this page,
["chatgpt"]. Only used with POST /v1/search — the alias
infers the surface from the path.{ country, state?, city?, language? }[], country as an ISO-3166 alpha-2 code, at most 10 per request. Omitted: one untargeted (GLOBAL) capture. See Regions.The Envelope
ChatGPT returns the same canonical Envelope as every other surface, so one parser handles them all. Below it’s trimmed; the real result always has four sections (job, provenance, answer, evidence). For the full schema, see Output formats.
Envelope (trimmed)
Plain-text answer.
Markdown rendering of the answer. Always populated.
Structured blocks, each typed (
paragraph, heading, list, code,
quote) with text and referenceIds.Cited and retrieved sources, each
{ id, url, title, role, cited, charRanges }.
id is an integer that answer.blocks[].referenceIds point to.The follow-up web searches behind the answer. ChatGPT surfaces these, so
provenance is "observed" and queries is populated. mentions,
shopping, and ads are reserved and currently null.Which model produced the answer:
{ providerId, observedLabel, inferred, confidence }.true when ChatGPT returned an answer; false when it returned nothing.If ChatGPT returns nothing for a query,
provenance.surfacePresent is false
and a surface_absent warning is attached. The job still completes with an
empty answer — absence is a valid result, and it costs no credits.Search reference
Full request and response schema for
POST /v1/search.Output formats
The canonical Envelope every surface returns.