知识库 API
知识库是 AI 读取信息的内容来源。它包含两个部分,本页面将涵盖这两部分:
- 知识源 (
/kb-sources) — 您提供给平台的网页和上传的文档。每一项都会被读取、拆分为多个部分,并转化为 AI 可以回答的常见问题 (FAQ)。 - 知识组 (
/kb-groups) — 常见问题的命名集合,您可以在一次调用中将其应用于代理 (Agent) 或营销活动,以便您可以将已经整理好的知识库重复用于您创建的下一个代理。
知识源生成的常见问题会进入与您手动编写的常见问题相同的库中,因此一旦导入完成,您就可以使用 FAQs API 来阅读、编辑和链接它们。
以下所有端点均相对于基础 URL https://api.youraiconnector.com/v1。每个请求都必须经过身份验证——请参阅 API 访问 和 身份验证。API 访问是一项付费功能;如果没有该权限,请求将被 403 拒绝。
导入会消耗积分。 读取页面或文档并从中生成常见问题会消耗积分,消耗量大致与内容量成正比。在进行大规模抓取之前,请使用 估算导入成本。
导入的工作原理
导入是一个后台任务,不会立即完成。每个导入端点都会立即返回一个 source_id,您需要轮询该源直到其完成:
- 开始导入 —
POST /kb-sources/url(单个页面)、POST /kb-sources/file(上传的文档)或POST /kb-sources/bulk-import(最多 100 个页面)。您将获得一个源 ID 和status: "queued"。 - 轮询 —
GET /kb-sources/{sourceId}直到status不再是queued或processing。 - 阅读常见问题 — 当状态为
ready时,它生成的条目就在您的常见问题库中:GET /faqs。
每个源都会报告以下状态之一:
| 状态 | 含义 |
|---|---|
queued |
等待读取。尚未扣费。 |
processing |
正在读取并转化为常见问题。 |
ready |
已完成。其常见问题已存入您的库中。 |
failed |
无法导入。error_message 说明了原因。 |
cancelled |
在读取前已停止(请参阅 停止导入)。 |
paused |
因您的 AI 密钥在导入过程中失效而停止(请参阅 恢复已暂停的导入)。 |
deleting |
批量删除操作正在处理中。 |
unknown |
该记录没有状态。请将其视为未就绪。 |
导入时附加。 在任何导入端点上传递
autoLinkToAgentId,该源及其生成的每个常见问题都会在同一次调用中添加到该代理的知识库中,无需后续的链接步骤。autoLinkToCampaignId对经典营销活动执行相同的操作。链接是尽力而为的:如果 ID 不存在或属于另一个账户,它会被静默跳过,导入仍会运行,因此请通过读取代理信息来确认链接情况。
导入网页
POST /kb-sources/url
将一个网页添加到您的知识库。
请求字段
| 字段 | 必填 | 描述 |
|---|---|---|
url |
是 | 页面的完整 http 或 https 地址。 |
autoLinkToAgentId |
否 | 要将导入的源附加到的 AI Agent 的 ID。 |
autoLinkToCampaignId |
否 | 旧版。要将导入的源附加到的营销活动的 ID。 |
cURL
curl -X POST "https://api.youraiconnector.com/v1/kb-sources/url?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/pricing",
"autoLinkToAgentId": "ag7HkQ2ZpLxR3mNb"
}'
JavaScript
const res = await fetch("https://api.youraiconnector.com/v1/kb-sources/url", {
method: "POST",
headers: {
"X-API-Key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
url: "https://example.com/pricing",
autoLinkToAgentId: "ag7HkQ2ZpLxR3mNb",
}),
});
const { source_id } = await res.json();
Python
import requests
res = requests.post(
"https://api.youraiconnector.com/v1/kb-sources/url",
headers={"X-API-Key": "YOUR_API_KEY"},
json={
"url": "https://example.com/pricing",
"autoLinkToAgentId": "ag7HkQ2ZpLxR3mNb",
},
)
source_id = res.json().get("source_id")
响应 — 202 Accepted
{
"success": true,
"source_id": "kb_src_abc123",
"status": "queued",
"batch_id": "batch_9f2a"
}
使用 检查源 轮询 source_id,直到状态为 ready 或 failed。
如果同一个页面已存在于您的知识库中,则不会排队任何新内容,您将收到一个 200 — 如果您请求了自动链接,现有的源仍会为您链接:
{
"success": true,
"status": "exists",
"skipped_duplicate": 1
}
缺少 url,或者不是有效的 http/https 地址,将返回 400。
导入已上传的文档
POST /kb-sources/file
将已在您账户文件存储中的文档添加为知识源。支持的类型:PDF、DOCX、TXT、MD、CSV 和 XLSX。
此端点不携带文件。 没有多部分上传、没有 base64 正文,也没有从 URL 下载:您发送的是已存在文件的存储位置,并且它必须位于您自己的上传文件夹下(
storage_path必须以users/{your user id}/uploads/开头),否则请求将被拒绝并返回403。当您将文件拖入仪表板时,仪表板会将文件放置在那里。如果您无法将文件放置在那里,请改用 导入网页。
请求字段
| 字段 | 必填 | 描述 |
|---|---|---|
storage_path |
是 | 已上传文件的存储位置。必须以 users/{your user id}/uploads/ 开头。 |
filename |
是 | 原始文件名(包括扩展名)——这是检测文件类型的方式。 |
mime_type |
是 | 文件的 MIME 类型,例如 application/pdf。 |
autoLinkToAgentId |
否 | 要将文档附加到的 AI Agent 的 ID。 |
autoLinkToCampaignId |
否 | 旧版。要将文档附加到的营销活动的 ID。 |
cURL
curl -X POST "https://api.youraiconnector.com/v1/kb-sources/file?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"storage_path": "users/abc123uid/uploads/handbook.pdf",
"filename": "handbook.pdf",
"mime_type": "application/pdf",
"autoLinkToAgentId": "ag7HkQ2ZpLxR3mNb"
}'
响应 — 202 Accepted
{
"success": true,
"source_id": "kb_src_abc123",
"status": "queued"
}
| 状态 | 何时 |
|---|---|
400 |
缺少必填字段,或者文件类型无法读取。 |
403 |
storage_path 不在您自己的上传文件夹内。 |
检查源
GET /kb-sources/{sourceId}
每次导入和刷新后进行的轮询。重复此操作,直到状态为 ready 或 failed。
cURL
curl "https://api.youraiconnector.com/v1/kb-sources/kb_src_abc123?apiKey=YOUR_API_KEY"
JavaScript
const res = await fetch(
"https://api.youraiconnector.com/v1/kb-sources/kb_src_abc123",
{ headers: { "X-API-Key": "YOUR_API_KEY" } }
);
const source = await res.json();
Python
import requests
res = requests.get(
"https://api.youraiconnector.com/v1/kb-sources/kb_src_abc123",
headers={"X-API-Key": "YOUR_API_KEY"},
)
source = res.json()
响应
{
"success": true,
"source_id": "kb_src_abc123",
"status": "ready",
"faq_count": 24,
"section_count": 31,
"error_message": null
}
| 字段 | 类型 | 描述 |
|---|---|---|
status |
string | 源在流水线中的位置(请参阅状态表)。 |
faq_count |
integer | 到目前为止由此源生成的常见问题解答(FAQ)数量。 |
section_count |
integer | 该源被拆分成的内容部分数量。 |
error_message |
string | null | 当状态为 failed 时,导入失败的原因。否则为 null。 |
删除源
DELETE /kb-sources/{sourceId}
移除一个知识源。默认情况下,它生成的常见问题解答(FAQ)会被保留 —— 添加 delete_faqs=true 可同时将其一并删除。
查询参数
| 参数 | 必需 | 描述 |
|---|---|---|
delete_faqs |
否 | 设置为 true 以同时删除该源生成的所有常见问题解答。默认为 false。 |
cURL
curl -X DELETE "https://api.youraiconnector.com/v1/kb-sources/kb_src_abc123?delete_faqs=true&apiKey=YOUR_API_KEY"
响应
{
"success": true,
"faqs_deleted": 24
}
faqs_deleted 为 0,除非您要求 delete_faqs=true。
一次性导入多个页面
POST /kb-sources/bulk-import
单次调用最多可添加 100 个网页 —— 这是发现网站页面或查找网站新页面后的常用后续操作。知识库中已有的页面会被跳过,而不会重复添加(如果您有相关要求,它们仍会链接到智能体)。
请求字段
| 字段 | 必需 | 描述 |
|---|---|---|
urls |
是 | 要导入的地址。每次调用至少 1 个,最多 100 个。 |
autoLinkToAgentId |
否 | 要将每个导入页面关联到的 AI 智能体 ID。 |
autoLinkToCampaignId |
否 | 旧版字段。要将每个导入页面关联到的营销活动 ID。 |
cURL
curl -X POST "https://api.youraiconnector.com/v1/kb-sources/bulk-import?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"urls": ["https://example.com/pricing", "https://example.com/faq"],
"autoLinkToAgentId": "ag7HkQ2ZpLxR3mNb"
}'
JavaScript
const res = await fetch("https://api.youraiconnector.com/v1/kb-sources/bulk-import", {
method: "POST",
headers: {
"X-API-Key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
urls: ["https://example.com/pricing", "https://example.com/faq"],
autoLinkToAgentId: "ag7HkQ2ZpLxR3mNb",
}),
});
const { queued_source_ids } = await res.json();
Python
import requests
res = requests.post(
"https://api.youraiconnector.com/v1/kb-sources/bulk-import",
headers={"X-API-Key": "YOUR_API_KEY"},
json={
"urls": ["https://example.com/pricing", "https://example.com/faq"],
"autoLinkToAgentId": "ag7HkQ2ZpLxR3mNb",
},
)
queued_source_ids = res.json()["queued_source_ids"]
响应 — 202 Accepted
{
"success": true,
"batch_id": "batch_9f2a",
"queued": 2,
"skipped_duplicate": 0,
"queued_source_ids": ["kb_src_abc123", "kb_src_def456"]
}
使用检查源轮询 queued_source_ids 中的每个 ID。发送空的 urls 数组、非字符串条目或超过 100 个条目将返回 400。
一次性删除多个源
POST /kb-sources/bulk-delete
单次调用最多可移除 2,000 个知识源。移除操作在后台运行,完成后您会收到一封电子邮件。
批量删除也会同时移除常见问题解答 (FAQs)。 与 删除数据源 不同(后者除非您另有要求,否则会保留常见问题解答),此端点会删除每个数据源及其生成的常见问题解答。没有保留它们的选项。
请求字段
| 字段 | 必填 | 说明 |
|---|---|---|
sourceIds |
是 | 要移除的数据源 ID。每次调用至少 1 个,最多 2,000 个。 |
domainLabel |
否 | 此清理任务的友好名称。仅用于完成通知邮件中。 |
cURL
curl -X POST "https://api.youraiconnector.com/v1/kb-sources/bulk-delete?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"sourceIds": ["kb_src_abc123", "kb_src_def456"],
"domainLabel": "example.com"
}'
响应 — 202 Accepted
{
"success": true,
"batch_id": "del_batch_31a",
"queued": 2
}
发现网站页面
POST /kb-sources/discover-pages
从一个起始地址探索网站,并列出在同一域名下找到的页面,同时对每个页面是否值得导入给出建议。不会导入任何内容,也不会为您进行任何选择 —— 这是您在决定发送给 批量导入多个页面 之前执行的“网站内容概览”步骤。
请求字段
| 字段 | 必填 | 说明 |
|---|---|---|
url |
是 | 开始探索的地址,通常是网站的主页。 |
maxPages |
否 | 返回页面的数量上限。 |
cURL
curl -X POST "https://api.youraiconnector.com/v1/kb-sources/discover-pages?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "url": "https://example.com", "maxPages": 100 }'
响应
{
"success": true,
"source_type": "sitemap",
"pages": [
{
"url": "https://example.com/pricing",
"title": "Pricing",
"depth": 1,
"score": 95,
"recommendation": "add",
"reason_key": "core_page"
}
]
}
| 字段 | 类型 | 说明 |
|---|---|---|
source_type |
string | 发现页面的方式 — sitemap(网站自身的站点地图)或 link_discovery(通过跟踪链接)。 |
url |
string | 页面的完整地址。 |
title |
string | null | 页面标题(如果可以读取的话)。 |
depth |
integer | 该页面距离起始页面有多少个链接层级。 |
score |
integer | 该页面作为知识库的有用程度,从 0 到 100。 |
recommendation |
string | add(显然值得导入,评分 90 或以上)、maybe(处于临界值)或 skip(很少对助手有帮助的内容 — 更新日志、法律页面、重复的翻译)。 |
reason_key |
string | 推荐背后的稳定、机器可读的原因,例如 core_page、changelog_history、legal_page 或 locale_duplicate。 |
探索是尽力而为的。 如果无法读取网站,响应仍为
200,包含success: false、空的pages列表和error消息。在读取pages之前,请检查success。
缺少 url 会返回 400。
估算导入成本
POST /kb-sources/estimate-cost
在您提交导入之前,计算拟议的导入将消耗多少积分。系统会抓取页面并读取文档以衡量其大小,但不会导入任何内容,且估算本身不会消耗积分。
请求字段
| 字段 | 必填 | 说明 |
|---|---|---|
urls |
否 | 您考虑导入的页面地址。 |
files |
否 | 您考虑使用的已上传文件。每个条目都需要 storage_path、filename 和 mime_type。 |
tier |
否 | 导入将运行的 AI 质量层级,以便估算结果与您实际将被收取的费用相匹配。如果不填,则按标准费率计算。 |
发送 urls、files 或两者皆有。
cURL
curl -X POST "https://api.youraiconnector.com/v1/kb-sources/estimate-cost?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "urls": ["https://example.com/pricing"] }'
响应
{
"success": true,
"estimates": [
{ "ref": "https://example.com/pricing", "chunks": 7, "credits": 7 }
],
"total_chunks": 7,
"total_credits": 7
}
每一行都会回显 ref 中的 URL 或存储路径,以便您将其与输入进行匹配。无法读取的页面或文件仍会占据一行,计为一个数据块,并带有 error 标记。
停止导入
POST /kb-sources/cancel-import
停止仍在导入队列中等待的页面——这是针对超出预期规模的爬取任务的“停止导入”按钮。取消等待中的页面不会产生任何费用,因为它尚未被读取。
已经处于处理中的页面不会被停止:它们的工作正在进行中,无论如何都会计费,因此它们会继续完成。响应会报告此类页面的数量。
请求字段
| 字段 | 必填 | 说明 |
|---|---|---|
host |
否 | 仅停止此网站上等待中的页面(例如 docs.example.com)。留空则停止账户中所有等待中的导入任务。 |
cURL
curl -X POST "https://api.youraiconnector.com/v1/kb-sources/cancel-import?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "host": "docs.example.com" }'
响应
{
"success": true,
"cancelled": 412,
"in_flight": 3
}
恢复已暂停的导入
POST /kb-sources/resume-import
重启因您自己的 AI 密钥失效而暂停的导入任务。
调用此接口即表示您同意使用当前有效的密钥完成导入——如果您的密钥仍不可用,这可能意味着需要消耗平台额度。
请求字段
| 字段 | 必填 | 说明 |
|---|---|---|
host |
否 | 仅恢复此网站上已暂停的页面。留空则恢复所有已暂停的任务。 |
cURL
curl -X POST "https://api.youraiconnector.com/v1/kb-sources/resume-import?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
响应
{
"success": true,
"resumed": 58
}
查找网站上的新页面
POST /kb-sources/refresh-domain
探索您已经导入过的网站,并仅报告那些尚未进入您知识库的页面,每个页面都会提供与页面发现相同的建议。此操作不会导入任何内容,也不会进行任何更改。
这两个后续操作是刻意分开调用的,因此即使不执行此操作也不会产生任何费用:
- 使用 一次导入多个页面 导入您想要的新页面;
- 使用 刷新网站上的每个页面 重新读取您已有的页面。
请求字段
| 字段 | 必填 | 描述 |
|---|---|---|
baseUrl |
是 | 网站上的任何地址,或仅主机名。 |
maxPages |
否 | 探索页面的上限。 |
cURL
curl -X POST "https://api.youraiconnector.com/v1/kb-sources/refresh-domain?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "baseUrl": "https://example.com" }'
响应
{
"success": true,
"source_type": "sitemap",
"discovered": 249,
"new_pages": [
{
"url": "https://example.com/new-guide",
"score": 95,
"recommendation": "add",
"reason_key": "core_page"
}
],
"new_urls_queued": 0,
"existing_refresh_queued": 249
}
| 字段 | 类型 | 描述 |
|---|---|---|
discovered |
integer | 网站上总共找到的页面数量。 |
new_pages |
array | 尚未进入您知识库的页面。不会为您排队任何内容 — 请导入您想要的页面。 |
new_urls_queued |
integer | 始终为 0。保留此项是为了向后兼容;此端点从不排队任何内容。 |
existing_refresh_queued |
integer | 从该网站已导入并准备好重新读取的页面数量。此调用不会排队任何内容。 |
batch_id |
string | 仅在创建批处理时出现。 |
与发现功能一样,此功能采用软失败机制:无法读取的网站仍会返回 200,其中 success: false 为空,new_pages 为空,且 error 为空。缺少或空的 baseUrl 会返回 400。
刷新网站上的每个页面
POST /kb-sources/trigger-domain-refresh
重新读取您已从网站导入的每个页面,以便其常见问题解答(FAQ)遵循网站的当前内容:已更改的部分会更新,新增的部分会添加,已删除的部分会被移除。
此操作会排队任务并立即返回。随后可使用 跟踪网站刷新 进行跟踪,并使用 停止网站刷新 停止任务。
请求字段
| 字段 | 必填 | 描述 |
|---|---|---|
baseUrl |
是 | 网站上的任何地址,或仅主机名。 |
cURL
curl -X POST "https://api.youraiconnector.com/v1/kb-sources/trigger-domain-refresh?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "baseUrl": "https://example.com" }'
响应
{
"success": true,
"queued": 249
}
跟踪网站刷新
GET /kb-sources/domain-refresh-status
网站刷新的进度,以便您可以显示类似“221 / 249”的进度信息。
查询参数
| 参数 | 必填 | 描述 |
|---|---|---|
baseUrl |
是 | 网站上的任何地址,或仅主机名。 |
cURL
curl "https://api.youraiconnector.com/v1/kb-sources/domain-refresh-status?baseUrl=https://example.com&apiKey=YOUR_API_KEY"
响应
{
"success": true,
"job": {
"domainBatchId": "job_7c1e",
"host": "example.com",
"total": 249,
"pending": 28,
"succeeded": 219,
"failed": 2,
"skippedDuplicate": 0,
"status": "refreshing",
"startedAtIso": "2026-06-15T09:00:00.000Z"
}
}
当该网站没有正在进行的刷新时,job 为 null。目前已完成的页面数为 total 减去 pending。任务 status 的状态为 refreshing(仍在处理页面)、deduplicating(最后的清理阶段),或者最终的 completed、failed 和 cancelled。请保留 domainBatchId — 这是您传递给取消端点的值。
缺少或空的 baseUrl 会返回 400。
停止网站刷新
POST /kb-sources/refresh-domain/cancel
停止仍在处理页面的网站刷新。已完成的页面将保留其更新后的内容;未开始的页面将被丢弃,而正在重新读取的页面将恢复到之前的状态。
请求字段
| 字段 | 必填 | 说明 |
|---|---|---|
jobId |
是 | 由 跟踪网站刷新 返回的 domainBatchId。 |
cURL
curl -X POST "https://api.youraiconnector.com/v1/kb-sources/refresh-domain/cancel?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "jobId": "job_7c1e" }'
响应
{
"success": true,
"status": "cancelled",
"cancelled_units": 28,
"sources_reset": 3,
"sources_cancelled": 25
}
| 字段 | 类型 | 说明 |
|---|---|---|
status |
string | 此调用后的刷新状态:cancelled、deduplicating、completed 或 failed。 |
cancelled_units |
integer | 取消时仍未完成的工作量。重复取消时返回 0。 |
sources_reset |
integer | 从处理中撤回并返回 ready 的页面数。 |
sources_cancelled |
integer | 此刷新中仍处于队列中且现已被取消的全新页面数。 |
取消两次是无害的——第二次调用会报告相同的最终状态。一旦刷新进入清理阶段,它就无法再被停止,响应将返回 success: false 和 reason: "already_finalizing"。缺失 jobId 将返回 400,而不在您账户中的作业将返回 404。
刷新单个来源
POST /kb-sources/{sourceId}/refresh
重新读取您已导入的一个网页,并使其常见问题解答(FAQ)与该页面的当前内容保持一致:更新已更改的部分,添加新的部分,并删除已移除的部分。
cURL
curl -X POST "https://api.youraiconnector.com/v1/kb-sources/kb_src_abc123/refresh?apiKey=YOUR_API_KEY"
响应 — 202 Accepted
{
"success": true,
"source_id": "kb_src_abc123",
"status": "queued"
}
轮询该来源,直到其状态离开 queued 和 processing。不在您账户中的来源 ID 将返回 404。
选择最相关的页面
POST /kb-sources/select-relevant-pages
要求 AI 从候选列表中选出最能描述业务的五个页面——用于从网站生成营销活动手册时。此操作会消耗积分。
请求字段
| 字段 | 必填 | 说明 |
|---|---|---|
urls |
是 | 供选择的候选页面地址,通常来自页面发现。 |
homeUrl |
是 | 网站主页,用作选择的上下文。 |
cURL
curl -X POST "https://api.youraiconnector.com/v1/kb-sources/select-relevant-pages?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"homeUrl": "https://example.com",
"urls": ["https://example.com/about", "https://example.com/pricing"]
}'
响应
{
"success": true,
"pages": [
{ "url": "https://example.com/pricing", "title": "Pricing", "type": "pricing" }
]
}
这是一个辅助工具,而非资源:在失败时它仍会响应 200,包含 success: false、一个空的 pages 列表以及一条 error 消息。
知识组
知识组是一个已命名的常见问题解答(FAQ)集合——例如“配送与退货”、“入职引导”——您可以在一次调用中将其应用于智能体或营销活动。该组持有的是引用而非副本:FAQ 本身保留在您的单一库中,因此使用 FAQs API 编辑其中一个 FAQ 时,它在所有使用该 FAQ 的地方都会同步更新。
应用一个组只会添加缺失的内容,因此重复应用同一个组不会产生负面影响,第二次调用时 added_count 会返回 0。
创建知识组
POST /kb-groups
创建一个组。它初始为空——请使用 将 FAQ 添加到组 向其中添加 FAQ。
请求字段
| 字段 | 必填 | 描述 |
|---|---|---|
name |
是 | 组的名称。 |
cURL
curl -X POST "https://api.youraiconnector.com/v1/kb-groups?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "name": "Shipping and returns" }'
JavaScript
const res = await fetch("https://api.youraiconnector.com/v1/kb-groups", {
method: "POST",
headers: {
"X-API-Key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({ name: "Shipping and returns" }),
});
const { group_id } = await res.json();
Python
import requests
res = requests.post(
"https://api.youraiconnector.com/v1/kb-groups",
headers={"X-API-Key": "YOUR_API_KEY"},
json={"name": "Shipping and returns"},
)
group_id = res.json()["group_id"]
响应 — 201 Created
{
"success": true,
"group_id": "kbg_abc123"
}
重命名知识组
PUT /kb-groups/{groupId}
更改组的名称。其中的 FAQ 不受影响。
请求字段
| 字段 | 必填 | 描述 |
|---|---|---|
name |
是 | 组的新名称。 |
cURL
curl -X PUT "https://api.youraiconnector.com/v1/kb-groups/kbg_abc123?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "name": "Shipping, returns and refunds" }'
响应
{
"success": true,
"group_id": "kbg_abc123",
"name": "Shipping, returns and refunds"
}
删除知识组
DELETE /kb-groups/{groupId}
删除该组。仅移除该集合——其中的 FAQ 会保留在您的库中,且该组之前已应用到的任何对象仍会保留这些 FAQ。
cURL
curl -X DELETE "https://api.youraiconnector.com/v1/kb-groups/kbg_abc123?apiKey=YOUR_API_KEY"
响应
{
"success": true
}
将常见问题解答 (FAQ) 添加到组
POST /kb-groups/{groupId}/faqs
将现有的 FAQ 放入组中。这只会更改捆绑包,而不会自行将 FAQ 附加到任何智能体 (Agent);请为此应用该组。
请求字段
| 字段 | 必填 | 描述 |
|---|---|---|
faq_id |
是 | 要添加的 FAQ 的 ID。 |
cURL
curl -X POST "https://api.youraiconnector.com/v1/kb-groups/kbg_abc123/faqs?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "faq_id": "aBcD1234eFgH5678" }'
响应
{
"success": true,
"group_id": "kbg_abc123",
"faq_id": "aBcD1234eFgH5678"
}
从组中移除 FAQ
DELETE /kb-groups/{groupId}/faqs/{faqId}
将 FAQ 从组中移除。FAQ 本身不会被删除,且已经应用了该组的智能体将保留它。
cURL
curl -X DELETE "https://api.youraiconnector.com/v1/kb-groups/kbg_abc123/faqs/aBcD1234eFgH5678?apiKey=YOUR_API_KEY"
响应
{
"success": true,
"group_id": "kbg_abc123",
"faq_id": "aBcD1234eFgH5678"
}
将组应用到智能体
POST /kb-groups/{groupId}/apply-to-agent
通过一次调用将组中的每个 FAQ 添加到 AI 智能体的知识库中——这是为新智能体提供您已整理好的知识库的快捷方式。
请求字段
| 字段 | 必填 | 描述 |
|---|---|---|
agent_id |
是 | 要应用该组的 AI 智能体的 ID。 |
cURL
curl -X POST "https://api.youraiconnector.com/v1/kb-groups/kbg_abc123/apply-to-agent?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "agent_id": "ag7HkQ2ZpLxR3mNb" }'
JavaScript
const res = await fetch(
"https://api.youraiconnector.com/v1/kb-groups/kbg_abc123/apply-to-agent",
{
method: "POST",
headers: {
"X-API-Key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({ agent_id: "ag7HkQ2ZpLxR3mNb" }),
}
);
const { added_count } = await res.json();
Python
import requests
res = requests.post(
"https://api.youraiconnector.com/v1/kb-groups/kbg_abc123/apply-to-agent",
headers={"X-API-Key": "YOUR_API_KEY"},
json={"agent_id": "ag7HkQ2ZpLxR3mNb"},
)
added_count = res.json()["added_count"]
响应
{
"success": true,
"group_id": "kbg_abc123",
"agent_id": "ag7HkQ2ZpLxR3mNb",
"added_count": 12
}
added_count 是实际添加的 FAQ 数量——当组为空或已应用时为 0。
将组应用到营销活动
POST /kb-groups/{groupId}/apply-to-campaign
上述调用的经典营销活动版本。在基于智能体的账户上,请改用 将组应用到智能体。
请求字段
| 字段 | 必填 | 描述 |
|---|---|---|
campaign_id |
是 | 要应用该组的营销活动 ID。 |
cURL
curl -X POST "https://api.youraiconnector.com/v1/kb-groups/kbg_abc123/apply-to-campaign?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "campaign_id": "campaign123" }'
响应
{
"success": true,
"group_id": "kbg_abc123",
"campaign_id": "campaign123",
"added_count": 12
}
知识库 API 错误
这些端点返回标准的错误封装:
{
"success": false,
"error": "Knowledge base source not found."
}
| 状态 | 在知识库端点上发生时 |
|---|---|
400 |
缺少必填字段或字段无效 — 例如 url 为空、缺少 baseUrl 或 jobId、批量导入中超过 100 个 URL、批量删除中超过 2,000 个 ID,或文件类型无法读取。 |
402 |
积分不足,无法运行导入。请充值后再试。 |
403 |
storage_path 超出了您自己的上传文件夹范围 — 或者您的套餐不包含 API 访问权限。 |
404 |
未找到源、组、常见问题解答 (FAQ)、智能体 (Agent)、营销活动或刷新任务 — 它可能不存在,或者属于其他账户。 |
软失败不是错误。 当无法读取网站时,发现功能(
discover-pages、refresh-domain)和页面选择助手会以200响应,并附带success: false和error消息,而不是使请求失败。在读取数据之前,请务必检查success。
每个端点都可能返回的共享代码 — 401, 403(您的套餐不包含 API 访问权限), 429(速率限制)和 500 — 及其重试指南列在 错误与分页 中。