Google AI Mode is Google’s conversational search experience: a follow-up-friendly, chat-style answer built on top of Search. Captures come from the live experience in a real browser, then normalize into the exact same Envelope every other surface returns, so one parser reads AI Mode, ChatGPT, Perplexity, and the rest.
Enum: google_ai_mode · Credits: 4 per successful capture · Typically returns: a conversational answer with provenance

What it returns

Everything maps to the same fields, so your rendering logic never branches per surface. See Output formats for how text, markdown, and blocks relate.

Request

Add google_ai_mode to surfaces on POST /v1/search. A single-surface request with no webhook runs synchronously by default; add ?mode=async for the durable path — one child per surface × region.
The async call returns 202 with a parent job and one child id per surface × region:
Fetch the child id (dotted) once it completes to get the Envelope:

Sync alias

For a single surface and region, the alias POST /v1/search/google_ai_mode is sync-by-default (like any single-surface call) and returns the result inline (200, the Envelope in children[0]). It accepts prompt (an alias of query) and a flat country.

Envelope (trimmed)

Every surface returns this shape, four sections: job, provenance, answer, evidence.
If provenance.surfacePresent is false and the child carries a surface_absent warning, AI Mode returned nothing for that query. The job still completes with an empty answer. Parse it the same way and check surfacePresent before rendering.

Notes

Each successful google_ai_mode capture costs 4 credits, charged only on success. You start with 500 free credits.
Pass regions: [{ country, state?, city?, language? }] (ISO-3166 alpha-2; omitted means one untargeted GLOBAL capture). Each surface × region produces one child. Compare provenance.region.requested with effective to see whether the region was honored exactly. See Regions.
AI Mode, ChatGPT, Claude, Perplexity, Copilot, Google AI Overview, Google Search, and Google News all normalize to this Envelope. Write your rendering once against answer and every surface flows through it.

Output formats

How answer.text, answer.markdown, and answer.blocks[] relate.

Search endpoint

The full async request body, fields, and lifecycle.