Response Schema
The Answer type every AI engine returns: the answer's text, its citations and sources, cards, mentions and follow-ups.
Every engine returns one type, Answer. A field means the same thing on every engine.
Optional fields are genuinely optional: absent means the engine did not say. A card without rating showed
no stars. Times are ISO 8601 in UTC. Money is in decimal major units with an ISO 4217 code. Every object may
carry ext, which holds facts only that engine has.
Answer
| Field | Type | Notes |
|---|---|---|
engine | string | chatgpt gemini google-aio google-ai-mode naver-ai-brief naver-ai-tab |
outcome | string | see below |
prompt | string | the question as asked |
askedAt | string | when it was asked |
country | string | the market it was asked from (US, KR) |
language | string? | |
conversation | object? | {id, turn, expiresAt?}. Pass id as conversation to ask a follow-up |
title | string? | the conversation's title, where the engine gives one |
blocks | Block[] | the answer as ordered blocks. See below |
text | string | the answer as plain text, rendered from blocks |
markdown | string | the answer as markdown, rendered from blocks |
citations | Citation[] | which part of text cites which sources |
sources | Source[] | every source the engine showed, cited or not |
mentions | Mention[] | brands, products and places the engine itself marked |
cards | Card[] | product, place, video and image cards, ads included |
suggestions | array | {text, prompt?}: the follow-up questions the engine offered |
results | Result[]? | the results page around the answer (Google AI Overviews, Naver AI Briefing) |
page | string? | with include=page: the answer as a self-contained HTML page |
Outcome
| Value | Meaning |
|---|---|
answered | the engine answered |
noAnswer | the engine showed no answer for this prompt. Google shows no overview for many searches and Naver no briefing. This is not an error, and the rest of the page (results) is still returned |
refused | the engine declined; its own words are in text |
partial | the engine stopped early, but some text came back |
Blocks
text, markdown and blocks are three views of one answer and always agree. A block is one of:
type | Fields |
|---|---|
heading | level (1–6), markdown |
paragraph quote | markdown |
list | ordered, items: {markdown, depth}[] |
table | header: string[], rows: string[][] |
code | language?, text |
cards | cards: indexes into cards, where the engine showed them in the answer |
rule |
Citation
| Field | Type | Notes |
|---|---|---|
start end | integer | a character range of text, [start, end) |
sources | integer[] | indexes into sources |
Source
| Field | Type | Notes |
|---|---|---|
url | string | |
title site favicon image snippet | string? | site is the site's display name |
publishedAt | string? | |
cited | boolean | true if a citation points at it; false if the engine read it without citing it |
Card
| Field | Type | Notes |
|---|---|---|
type | string | product place video image other |
title url | string? | |
image thumbnail | string? | for an image card, image is the image itself |
width height | integer? | |
price originalPrice | object? | {text, amount?, currency?}. text is printed as shown; amount appears only when the text is one clear amount |
rating reviews | number? | |
merchant site | string? | |
badges | string[]? | the labels on the card, word for word ("Best overall") |
address | string? | |
coordinates | object? | {lat, lng} |
sponsored | boolean | an ad. Ads are cards, never a separate list |
Mention
| Field | Type | Notes |
|---|---|---|
name | string | |
kind | string | brand product place other |
category | string? | the engine's own label, word for word |
at | integer? | where in text the engine marked it |
card | integer? | the index of its card in cards, when the engine showed one |
Mentions are only what the engine marked itself. They are never guessed from the text.
Result
One result on the results page around the answer.
| Field | Type | Notes |
|---|---|---|
position | integer | 1-based |
title url | string | |
site favicon image snippet | string? | |
publishedAt | string? | |
breadcrumbs | string[]? | the path the page prints for the result |
sitelinks | array? | {title, url} |
The same Answer is the answer of a Google search's aiOverview item in the
SERP API.
AI Answers API
What ChatGPT, Gemini, Google AI Overviews, Google AI Mode and Naver's AI answer to a prompt, with every citation, source, product card and brand mention, in one answer type.
ChatGPT
ChatGPT's answers, with citations, sources, product cards and brand mentions. Conversations and photos are supported.