job_8t2q.chatgpt.us:
A parent id has no dots (
job_8t2q) and returns the list of children. A child id is dotted (job_8t2q.chatgpt.us) and returns the Envelope shown here. See Jobs & polling for how the two relate.The four sections
An Envelope always has these four top-level sections:| Section | What it holds |
|---|---|
job | Identity and status of this capture — the query, surface, region, timestamps, and any warnings. |
provenance | What actually produced the answer — which model, whether web search ran, and the effective region. |
answer | The answer the user saw — as plain text, as markdown, and as structured blocks. |
evidence | The structured proof behind the answer — cited sources, follow-up queries, mentions, shopping, and ads. |
Full example
job
The child id for this capture —
job_<id>.<surface>.<region>.The prompt that was submitted.
The surface this Envelope came from (
chatgpt, claude, perplexity, gemini, copilot, google_ai_overview, google_ai_mode).The requested region for this capture (ISO-3166 alpha-2).
Lifecycle state. Active:
queued, processing. Terminal: completed, partial, failed, canceled, expired. A child Envelope is only meaningful once status is terminal — a poll loop must stop on any terminal state. See Job lifecycle.Non-fatal notes about this capture. For example, a
surface_absent warning accompanies provenance.surfacePresent: false when the surface returned nothing.ISO-8601 timestamp when the capture was requested.
ISO-8601 timestamp when the capture reached a terminal state.
provenance
Which model produced the answer.
Whether the surface ran a web search for this answer.
enabled is the observed value; known is true when that value is certain.requested is the region you asked for; effective is the region the surface actually served.true when the surface returned an answer. false means the surface returned nothing — see When a surface returns nothing.answer
The answer as plain text — the words the user saw, stripped of formatting.
The same answer as markdown, preserving bold, lists, and other formatting. This field is always populated for a present answer, so you can render it directly.
The answer broken into structured blocks.
evidence
The sources behind the answer.
The follow-up queries the surface ran on its own to answer the prompt.
Brands and entities named in the answer.
Shopping results the surface returned, when present.
Ads the surface returned, when present.
When a surface returns nothing
Sometimes a surface produces no answer for a query. When that happens the job still reachescompleted — it does not fail. The Envelope reports the absence plainly:
provenance.surfacePresentisfalse.job.warningsincludes asurface_absentwarning.answeris empty.
Jobs & polling
How parent and child jobs relate, and how to read results.
Job lifecycle
Every state a job can be in, and when to stop polling.