> ## Documentation Index
> Fetch the complete documentation index at: https://docs.querying.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Source Influence

> 被引用页面的哪些段落对应 AI 回答的哪些部分：精确的回答范围、每条关联的简短说明，以及由这些关联生成的简短总结

将一个已完成的 AI 回答与其引用的来源进行比对。结果是一张紧凑的对应图：结果中包含的每个来源页面的段落、
它们对应的回答部分、每条关联的说明，以及由这些关联生成的简短总结。

这是对已有回答的事后对应分析，不能证明某个来源促使模型生成了某句话，也不是对页面质量的评分。
请把它当作需要检查的证据，而不是结论。

```bash theme={null}
curl -X POST https://api.querying.ai/v1/source-influence \
  -H "Authorization: Bearer $QUERYING_API_KEY" -H "Content-Type: application/json" \
  -d '{
    "answer": "…the AI answer, as raw markdown…",
    "prompt": "best password manager for a small team",
    "engine": "CHATGPT",
    "brand": "1Password",
    "competitors": ["Bitwarden"],
    "citations": [
      { "url": "https://example.com/best-password-managers", "body": "…the page markdown…" },
      { "url": "https://another.example.com/pricing" }
    ]
  }'
```

轮询 `GET /v1/async/task/:id`，或在提交时提供 `webhook.url`；任务报告为 `taskType: "SOURCE_INFLUENCE"`。
不要通过 `POST /v1/async/task` 提交此分析，请使用专用端点。`POST /v1/research` 和 `CITATION_ATTRIBUTION`
任务类型是 2026 年 9 月之前的名称，作为已弃用别名仍然可用。

### 分析你已运行过的任务

如果回答来自本 API，请直接发送它的任务 id，而不是从结果中复制回答和引用：

```bash theme={null}
curl -X POST https://api.querying.ai/v1/source-influence \
  -H "Authorization: Bearer $QUERYING_API_KEY" -H "Content-Type: application/json" \
  -d '{ "taskId": "7c1f…", "brand": "1Password", "competitors": ["Bitwarden"] }'
```

该任务必须属于你、状态为 `COMPLETED`，并且仍可通过 `GET /v1/async/task/:id` 读取。它的回答 Markdown（引擎未返回
Markdown 时为文本）成为 `answer`，其引用 URL 按引擎顺序成为 `citations`：取前 100 个，其中讨论帖最多 10 个。
商品和视频卡片占位符（`googleusercontent.com` 链接）以及 Google 搜索链接会被跳过，因为它们没有可读取的页面。
除非你另行发送，否则使用该任务的 `prompt`、`country` 和引擎。将 `taskId` 与 `answer` 或 `citations` 一起发送会以
`400` 拒绝；未完成、没有回答文本或引用 URL 的任务同样如此。未知或已过期的任务 id 返回 `404`。

## Payload

| 字段 | 必填 | 说明 |
| - | - | - |
| `taskId` | 替代 `answer` + `citations` | 你已完成的回答任务，见上文。 |
| `answer` | 是（无 `taskId` 时） | 原始回答 Markdown，1–200,000 个字符。请保持不变；所有范围都是这段文本的 UTF-16 偏移量。 |
| `citations[]` | 是（无 `taskId` 时） | 1–100 个来源，讨论帖 URL 最多 10 个。 |
| `citations[].url` | 是 | HTTP(S) URL，最多 2,048 个字符。 |
| `citations[].body` | 否 | 来源 Markdown，每条引用最多 300,000 个字符；整个请求正文最多 1 MiB。提供的正文按原样分析，不会被重新抓取的内容替换。未提供正文时我们会抓取页面；无法读取的页面会在该来源上以 `error` 报告。 |
| `citations[].kind` | 否 | `inline` 或 `panel`；省略时根据回答中的链接判断。 |
| `prompt` | 否 | 原始问题。为兼容现有集成而保留，不会在结果中返回。 |
| `engine` | 否 | 生成回答的 AI 引擎。同为兼容用途，不返回。 |
| `brand` | 否 | 你的品牌名。同为兼容用途，不返回。 |
| `competitors[]` | 否 | 最多 25 个竞争对手名称。同为兼容用途，不返回。 |
| `country` | 否 | 抓取来源时使用的国家，默认 `US`。 |

<Warning>
  `analysis` 选项已停用。
  早期版本接受 `analysis: {version: 1, …}`。现在每个结果都包含洞察，因此该字段不会被忽略，而是以 `400` 拒绝。
  请从现有集成中移除它。已有任务内容仍可读取；已存储的记录不会迁移。
</Warning>

## 结果

```json theme={null}
{
  "answer": "Teams plan starts at $19.95 per month for up to 10 users. The Business plan adds audit logs.",
  "sources": [
    {
      "id": "s1",
      "url": "https://example.com/pricing",
      "paragraphs": [
        { "id": "p1", "text": "Teams: $19.95 / month, up to 10 users." },
        { "id": "p2", "text": "Business adds audit logs and SSO." }
      ]
    },
    {
      "id": "s2",
      "url": "https://review.example.com/note",
      "paragraphs": [],
      "error": "…"
    }
  ],
  "links": [
    { "id": "l1", "paragraphId": "p1", "answerRanges": [{ "start": 0, "end": 57 }], "explanation": "States the same price and seat cap." },
    { "id": "l2", "paragraphId": "p2", "answerRanges": [{ "start": 58, "end": 92 }], "explanation": "Names the audit-log add-on." }
  ],
  "insights": [
    { "summary": "The pricing page covers both statements; the review page could not be read.", "linkIds": ["l1", "l2"] }
  ]
}
```

### `answer`

原样返回你提交的回答。`answerRanges` 是这个字符串的偏移量：JavaScript UTF-16 码元，`start` 包含，`end` 不包含。
请直接截取，即 `answer.slice(start, end)`，不要重新切分文本。每个范围都对应回答中一个完整的语义单元：句子、
列表项或表格单元格，边界以原文为准。

### `sources[]`：你发送的每条引用对应一项

* `id`：不透明标识符，在结果内唯一。
* `url`：你提供的引用 URL。
* `paragraphs[]`：结果中包含的该页面段落。每个段落有一个 `id`（在整个结果中全局唯一）和段落 `text`。
  段落也可能在没有任何关联的情况下被包含。
* `error`：仅在页面无法读取时出现。此时 `paragraphs` 为空，字符串是该来源的简短原因。

### `links[]`：每个段落一条关系

* `paragraphId`：这条关联所指的段落，始终指向 `sources[]` 中存在的段落。
* `answerRanges[]`：该段落对应的回答部分，以与上文相同的 UTF-16 偏移量给出 `start`/`end` 对。一条关联可以有多个
  范围，同一段回答文本不会在范围之间重复。每个范围都是完整的回答单元（句子、列表项或表格单元格）。
* `explanation`：描述对应关系的一句简短说明：该段落对回答的这一部分说了什么。

### `insights[]`

对本结果中各条关联整体含义的简短总结。`linkIds` 指明每条总结所依据的关联，且只能指向 `links[]` 中出现的关联，
洞察绝不会声称响应中不存在的关系。没有关联时，也就没有可供总结的内容。

## 正确解读结果

* **没有关联不是结论。** 没有关联的段落只是没有匹配到回答范围；没有范围的回答部分只是没有段落与之关联。
  两者都不说明页面无关、未被使用或不可信。
* **未读取的页面仍属未知。** 设置了 `sources[].error` 时，该引用已被排除在分析之外，不要把它缺少关联当作否定结论。
  如果它重要，请重试或提供其 `body`。
* **是对应而非因果。** 结果描述的是已有回答与已有页面文本在事后如何对应。它不衡量对生成的影响，不对页面排序或
  评分，也不报告回答是如何生成的。
* **id 仅供内部使用。** 不要把 `p…`/`l…` 标识符当作跨运行的稳定键保存；它们只在单个结果内有效。

## 执行与限制

* **规模不会导致失败。** 请求协议接受的一切，即最多 200,000 个字符的 `answer` 与最多 100 条引用，都会被分析。
  长回答、大量来源和超长页面会通过拆分工作来处理，而不是拒绝任务。
* **深度取决于回答，而非页面。** 长页面不会产生比回答所能支撑的更多关联：分析集中在最可能与回答对应的段落，
  并且每个显示出对应关系的来源都会出现在结果中。对于大页面，或在导航、列表和评论中重复同一陈述的页面，
  预期得到的是最有力的段落，而不是每一次出现。
* **标记不是证据。** 站点地图、链接索引和图片库不产生关联；仅由这些构成的页面会以无段落的形式报告，而不是编造对应关系。
* 如果还有其他可读来源，无法读取的来源会在 `sources[].error` 中报告，任务不会失败。当没有任何来源可读、
  分析失败、超时或服务配置错误时，任务失败。
* 请求与 API 其余部分一样按用量计量。提交响应显示临时额度冻结；最终费用在任务进入终止状态时结算。
