surfaces values you can request from POST /v1/search. Every capture comes from the live Gemini web app in a real browser, then normalizes into the same canonical Envelope — so the parser you write for Gemini is the parser you use for every other surface.
Enum value:
gemini · Credits per capture: 4 (charged only on success).What Gemini returns
Gemini typically populates:answer
The synthesized reply.
answer.markdown is always populated; answer.blocks[] carry referenceIds back into evidence.sources.evidence.sources
The pages Gemini drew on, with
role, cited, charRanges, and quote.evidence.mentions
Entity strings referenced in the answer.
shopping, ads, fanOut) may be present or empty depending on the query. Read whichever fields you need — the shape never changes across surfaces.
Request a Gemini capture
Addgemini to surfaces. By default POST /v1/search is async and returns a 202 with a parent job plus one child per surface × region.
202 gives you a parent job and its children:
202 Accepted
GET /v1/jobs/:id with the child id (job_8t2q.gemini.us) to fetch the Envelope once it’s ready. See Asynchronous jobs for the full polling and webhook flow.
Get it inline (sync)
To wait for a single Gemini capture and receive the Envelope in the response body, use?mode=sync (or the header Prefer: wait) with exactly one surface.
Alias route
POST /v1/search/gemini is sync-by-default and accepts prompt (an alias of query) plus a flat country. Handy when you’re targeting a single surface.
Trimmed Envelope
A Gemini child Envelope, abbreviated to the fields Gemini commonly fills:Envelope (gemini)
Working with the answer
answer.markdown is always populated, so it’s the safest field to render. Use answer.blocks[] when you need structure: each block’s referenceIds map to evidence.sources[].id, letting you attach citations inline. For the full rendering contract, see Output formats.
Regions
Target Gemini per country and city. One child is produced per surface × region.
Search endpoint
All body fields, priority, webhooks, and idempotency.