---
title: "Response Schema"
description: "每个 AI 引擎返回的 Answer 类型：回答正文、引用和来源、卡片、提及和追问建议。"
---

> Every apinoa docs page as markdown: https://apinoa.com/llms.txt (all in one file: https://apinoa.com/llms-full.txt; this API family in one file: https://apinoa.com/docs/answers/llms.txt)

每个引擎都返回一种类型：`Answer`。同一个字段在所有引擎上含义相同。

可选字段确实是可选的：**缺失表示引擎没有说明**。没有 `rating` 的卡片表示没有显示星级。时间为 ISO 8601、UTC。金额以
主单位（可带小数）加 ISO 4217 货币代码表示。每个对象都可能带有 `ext`，其中保存只有该引擎才有的信息。

## Answer

| 字段 | 类型 | 说明 |
|---|---|---|
| `engine` | string | `chatgpt` `gemini` `google-aio` `google-ai-mode` `naver-ai-brief` `naver-ai-tab` |
| `outcome` | string | 见下文 |
| `prompt` | string | 提出的问题 |
| `askedAt` | string | 提问时间 |
| `country` | string | 提问所在的市场（`US`、`KR`） |
| `language` | string? | |
| `conversation` | object? | `{id, turn, expiresAt?}`。把 `id` 作为 `conversation` 传入即可追问 |
| `title` | string? | 引擎给出的对话标题 |
| `blocks` | Block[] | 按顺序排列的回答区块，见下文 |
| `text` | string | 由 `blocks` 生成的纯文本回答 |
| `markdown` | string | 由 `blocks` 生成的 Markdown 回答 |
| `citations` | Citation[] | `text` 的哪一部分引用了哪些来源 |
| `sources` | Source[] | 引擎显示的全部来源，无论是否被引用 |
| `mentions` | Mention[] | 引擎自己标出的品牌、商品和地点 |
| `cards` | Card[] | 商品、地点、视频和图片卡片，包括广告 |
| `suggestions` | array | `{text, prompt?}`：引擎给出的追问建议 |
| `results` | Result[]? | 回答周围的搜索结果（Google AI 概览、Naver AI 简报） |
| `page` | string? | 使用 `include=page` 时：以独立 HTML 页面呈现的回答 |

### Outcome

| 值 | 含义 |
|---|---|
| `answered` | 引擎回答了 |
| `noAnswer` | 该提问没有显示回答。Google 对许多搜索不显示 AI 概览，Naver 也常不显示简报。这不是错误，页面其余部分（`results`）仍会返回 |
| `refused` | 引擎拒绝回答；它的原话在 `text` 中 |
| `partial` | 引擎中途停止，但返回了部分正文 |

### Blocks

`text`、`markdown` 和 `blocks` 是同一回答的三种视图，始终一致。区块为以下之一：

| `type` | 字段 |
|---|---|
| `heading` | `level`（1–6）、`markdown` |
| `paragraph` `quote` | `markdown` |
| `list` | `ordered`、`items`：`{markdown, depth}[]` |
| `table` | `header`：string[]、`rows`：string[][] |
| `code` | `language?`、`text` |
| `cards` | `cards`：引擎在回答中此处显示的卡片在 `cards` 中的索引 |
| `rule` | |

## Citation

| 字段 | 类型 | 说明 |
|---|---|---|
| `start` `end` | integer | `text` 的字符范围 `[start, end)` |
| `sources` | integer[] | `sources` 中的索引 |

## Source

| 字段 | 类型 | 说明 |
|---|---|---|
| `url` | string | |
| `title` `site` `favicon` `image` `snippet` | string? | `site` 为网站的显示名称 |
| `publishedAt` | string? | |
| `cited` | boolean | 有引用指向它时为 `true`；引擎读取了但未引用时为 `false` |

## Card

| 字段 | 类型 | 说明 |
|---|---|---|
| `type` | string | `product` `place` `video` `image` `other` |
| `title` `url` | string? | |
| `image` `thumbnail` | string? | 图片卡片的 `image` 即图片本身 |
| `width` `height` | integer? | |
| `price` `originalPrice` | object? | `{text, amount?, currency?}`。`text` 按显示原样；仅当文本是一个明确金额时才有 `amount` |
| `rating` `reviews` | number? | |
| `merchant` `site` | string? | |
| `badges` | string[]? | 卡片上的标签，逐字保留（"Best overall"） |
| `address` | string? | |
| `coordinates` | object? | `{lat, lng}` |
| `sponsored` | boolean | 广告。广告也是卡片，绝不单独列出 |

## Mention

| 字段 | 类型 | 说明 |
|---|---|---|
| `name` | string | |
| `kind` | string | `brand` `product` `place` `other` |
| `category` | string? | 引擎自己的标签，逐字保留 |
| `at` | integer? | 引擎标出它的位置在 `text` 中的偏移 |
| `card` | integer? | 引擎显示了卡片时，其在 `cards` 中的索引 |

提及只包括引擎自己标出的内容，绝不从正文中猜测。

## Result

回答周围搜索结果中的一条。

| 字段 | 类型 | 说明 |
|---|---|---|
| `position` | integer | 从 1 开始 |
| `title` `url` | string | |
| `site` `favicon` `image` `snippet` | string? | |
| `publishedAt` | string? | |
| `breadcrumbs` | string[]? | 页面为该结果显示的路径 |
| `sitelinks` | array? | `{title, url}` |

同一个 `Answer` 也是 [SERP API](/docs/api-reference/serp/response-schema#resultspage) 中 Google 搜索 `aiOverview` 项的
`answer`。
