API 接口文档
一次调用,拿到品牌在 11 个 AI 平台上的提及率、推荐排名和引用来源。RESTful 风格,JSON 进 JSON 出。
新用户送 100 次免费调用额度,注册后在控制台生成 API Key 即自动到账,不用申请。去注册
快速开始
- 注册账号,在控制台生成 API Key(形如
ab_live_xxxxxxxx) - 请求头带上
Authorization: Bearer <你的 Key> - POST 一个品牌名和要查的问题,读返回的 JSON
# 最小可运行示例
curl -X POST https://api.answerbit.org.cn/v1/visibility \
-H "Authorization: Bearer ab_live_xxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"brand":"你的品牌","query":"国内好用的 GEO 监控工具"}'认证
所有接口都走 Bearer Token,不需要额外签名。Key 在控制台生成,可以建多个、单独吊销。
Authorization: Bearer ab_live_xxxxxxxx Content-Type: application/json
Key 的几条规矩
- Key 只在生成时完整显示一次,之后只能看到后四位,丢了就重新生成
- 不要把 Key 写进前端代码或提交到公开仓库,泄露后请立刻在控制台吊销
- Key 属于账号,不要转让或共享给账号之外的人使用
接口
查询品牌可见度
POST /v1/visibility —— 同步返回,适合单次查询和联调。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| brand | string | 是 | 要监控的品牌名 |
| query | string | 是 | 用户会问的那个问题,比如「国内好用的 GEO 监控工具」 |
| platforms | string[] | 否 | 要查的平台 ID 数组,不传默认查全部 11 个 |
| competitors | string[] | 否 | 竞品名数组,传了会一并返回对比排名 |
# 请求
{
"brand": "你的品牌",
"query": "国内好用的 GEO 监控工具",
"platforms": ["doubao", "deepseek", "qwen"],
"competitors": ["竞品 A", "竞品 B"]
}
# 返回
{
"mention_rate": 0.63,
"avg_rank": 2.4,
"platforms": [
{ "id": "doubao", "mentioned": true, "rank": 2 },
{ "id": "deepseek", "mentioned": true, "rank": 1 },
{ "id": "qwen", "mentioned": false, "rank": null }
],
"competitors": [
{ "name": "竞品 A", "mention_rate": 0.71, "avg_rank": 1.8 },
{ "name": "竞品 B", "mention_rate": 0.45, "avg_rank": 3.2 }
],
"citations": ["example.com/post/123", "example.com/guide"],
"queried_at": "2026-08-27T09:12:04+08:00"
}提交批量监控任务
POST /v1/tasks —— 一次提交多个问题,异步跑,跑完回调。查得多的时候用这个,别拿同步接口硬轮。
# 请求
{
"brand": "你的品牌",
"queries": [
"国内好用的 GEO 监控工具",
"AI 搜索可见度怎么监控",
"品牌提及率用什么工具看"
],
"webhook": "https://your-server.com/answerbit/callback"
}
# 返回
{ "task_id": "tsk_9f2a1c", "status": "queued", "query_count": 3 }任务跑完后向 webhook POST 一次结果,结构和同步接口的返回一致,外层多一个 task_id。你的接口收到后返回 2xx 即视为送达,非 2xx 会重试三次。
查询任务结果
GET /v1/tasks/{task_id} —— 没配 webhook,或者想主动拉一次结果时用。
curl https://api.answerbit.org.cn/v1/tasks/tsk_9f2a1c \ -H "Authorization: Bearer ab_live_xxxxxxxx"
平台 ID 对照
platforms 参数里用下面这些 ID,不传就是全查。
| 平台 | ID | 厂商 |
|---|---|---|
| 豆包 | doubao | 字节跳动 |
| 元宝 | yuanbao | 腾讯 |
| 千问 | qwen | 阿里巴巴 |
| 文心 | wenxin | 百度 |
| DeepSeek | deepseek | 深度求索 |
| KIMI | kimi | 月之暗面 |
| ChatGLM | chatglm | 智谱 |
| ChatGPT | chatgpt | OpenAI |
| Gemini | gemini | |
| Grok | grok | xAI |
| Claude | claude | Anthropic |
返回字段说明
| 字段 | 类型 | 说明 |
|---|---|---|
| mention_rate | float | 提及率,0 到 1。被提到的平台数 ÷ 查询的平台总数 |
| avg_rank | float | 平均推荐排名,只统计被提到的平台。数字越小越靠前 |
| platforms[].mentioned | bool | 该平台的回答里有没有出现这个品牌 |
| platforms[].rank | int / null | 出现时排第几;没被提到是 null,不是 0 |
| citations | string[] | AI 回答里引用到的来源域名或页面 |
| queried_at | string | 本次采集时间,ISO 8601 带时区 |
错误码
出错时 HTTP 状态码非 2xx,响应体结构固定:
{ "error": { "code": "quota_exhausted", "message": "免费额度已用完" } }| HTTP | code | 怎么处理 |
|---|---|---|
| 400 | invalid_request | 参数缺失或格式不对,看 message 改请求 |
| 401 | invalid_key | Key 不对或已吊销,去控制台重新生成 |
| 402 | quota_exhausted | 额度用完了,升级套餐或等下个周期 |
| 404 | not_found | task_id 不存在 |
| 429 | rate_limited | 触发限流,按响应头 Retry-After 退避重试 |
| 500 | internal_error | 服务端问题,可重试;持续出现请联系我们 |
额度与限流
- 新用户注册送 100 次调用额度,自动到账
- 一次同步请求查 N 个平台,计 N 次额度;批量任务按实际跑完的查询数计
- 免费版按分钟限流,具体上限以控制台显示为准
- 命中限流返回 429,响应头带
Retry-After,按它退避,别原地重试 - 剩余额度在每次响应头的
X-Quota-Remaining里
接入建议
- 查一两个问题用同步接口,超过五个走批量任务,别拿同步接口打循环
- AI 回答本身有随机性,单次结果会波动,看趋势比看某一天的数更有意义
- Webhook 接口做好幂等,重试机制可能让同一个 task_id 送达多次
- 把
queried_at一起入库,后面回溯问题全靠它