Apinoa Docs

Response Schema

The Answer type every AI engine returns: the answer's text, its citations and sources, cards, mentions and follow-ups.

View raw .mdx

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

FieldTypeNotes
enginestringchatgpt gemini google-aio google-ai-mode naver-ai-brief naver-ai-tab
outcomestringsee below
promptstringthe question as asked
askedAtstringwhen it was asked
countrystringthe market it was asked from (US, KR)
languagestring?
conversationobject?{id, turn, expiresAt?}. Pass id as conversation to ask a follow-up
titlestring?the conversation's title, where the engine gives one
blocksBlock[]the answer as ordered blocks. See below
textstringthe answer as plain text, rendered from blocks
markdownstringthe answer as markdown, rendered from blocks
citationsCitation[]which part of text cites which sources
sourcesSource[]every source the engine showed, cited or not
mentionsMention[]brands, products and places the engine itself marked
cardsCard[]product, place, video and image cards, ads included
suggestionsarray{text, prompt?}: the follow-up questions the engine offered
resultsResult[]?the results page around the answer (Google AI Overviews, Naver AI Briefing)
pagestring?with include=page: the answer as a self-contained HTML page

Outcome

ValueMeaning
answeredthe engine answered
noAnswerthe 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
refusedthe engine declined; its own words are in text
partialthe 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:

typeFields
headinglevel (1–6), markdown
paragraph quotemarkdown
listordered, items: {markdown, depth}[]
tableheader: string[], rows: string[][]
codelanguage?, text
cardscards: indexes into cards, where the engine showed them in the answer
rule

Citation

FieldTypeNotes
start endintegera character range of text, [start, end)
sourcesinteger[]indexes into sources

Source

FieldTypeNotes
urlstring
title site favicon image snippetstring?site is the site's display name
publishedAtstring?
citedbooleantrue if a citation points at it; false if the engine read it without citing it

Card

FieldTypeNotes
typestringproduct place video image other
title urlstring?
image thumbnailstring?for an image card, image is the image itself
width heightinteger?
price originalPriceobject?{text, amount?, currency?}. text is printed as shown; amount appears only when the text is one clear amount
rating reviewsnumber?
merchant sitestring?
badgesstring[]?the labels on the card, word for word ("Best overall")
addressstring?
coordinatesobject?{lat, lng}
sponsoredbooleanan ad. Ads are cards, never a separate list

Mention

FieldTypeNotes
namestring
kindstringbrand product place other
categorystring?the engine's own label, word for word
atinteger?where in text the engine marked it
cardinteger?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.

FieldTypeNotes
positioninteger1-based
title urlstring
site favicon image snippetstring?
publishedAtstring?
breadcrumbsstring[]?the path the page prints for the result
sitelinksarray?{title, url}

The same Answer is the answer of a Google search's aiOverview item in the SERP API.

On this page