logo
登录

API 概述

声量开放 API 让你把 GEO 监测和软文发稿接进自己的系统 —— 在你的后台里发起检测、 取回品牌在各个 AI 平台的可见度数据、提交发稿工单,不必每次都打开控制台操作。

API 和控制台是同一个账号、同一份数据:用 API 跑出来的检测,在控制台的 GEO 页面里 看得到;在控制台配好的品牌和意图词,API 也读得到。配额也共用一份,不另外计费。

第一次接入请看快速开始,五步跑通一轮检测。


服务地址

https://shengliang.cn

请求与响应一律 UTF-8 JSON。机器可读的接口定义见 openapi.json,可直接导入 Postman / Swagger UI 或用来生成客户端。


认证

每个请求都要在 Header 里带上 API Key:

HTTP
Authorization: Bearer sk-xxxxxxxxxxxx

Key 在控制台「API Key」页创建。明文只在创建时显示一次,请当场保存 —— 我们只存 哈希值,无法帮你找回,丢了只能吊销重建。

Key 等同于你的账号凭证,不要提交到代码仓库,也不要放进浏览器或移动端代码里。

调 GET /openapi/v1/me 可以验证一把 Key 是否可用、它有哪些权限。

权限范围

创建 Key 时可以限定它能做什么。

scope可以做
geo:read读品牌、意图词、竞品、检测轮次与分析结果
geo:write建品牌、改品牌资料、增删改话题与意图词、改竞品
geo:run发起 GEO 监测(消耗检测配额)
media:read查媒体列表、详情、筛选字典、发布点数与发稿记录
media:order提交 / 撤回发稿工单(消耗发布点数)

也可以用通配符:* 代表全部,geo:* 代表 GEO 域内全部(不跨域)。控制台新建 Key 时 默认给全部权限,切到「自定义」可逐项勾选。

权限在创建后不可修改,需要调整请重新创建一把。给第三方或自动化脚本用的 Key, 建议只勾选它实际需要的权限 —— 尤其 geo:run 和 media:order 会消耗你的配额和点数。

权限不足时返回 1002,detail.missing 会列出缺少的 scope:

JSON
{ "code": 1002, "msg": "API Key 缺少权限:geo:run",
  "detail": { "required": ["geo:run"], "missing": ["geo:run"] } }

可访问的数据范围

API 只能访问个人空间的数据。团队空间里的品牌、意图词、发稿记录通过 API 读不到, 即使你是该团队成员。有团队场景的需求请联系我们。


响应结构

成功和失败用同一个结构,不需要写两套解析:

JSON
{ "code": 0, "msg": "ok", "data": { } }
字段说明
code0 表示成功,非 0 为业务错误码。请用它做判断
msg中文提示文案,会随版本调整,不要用来做判断
data成功时的返回内容,失败时为 null
detail仅失败时出现,补充信息(缺哪个权限、还差多少点数、需要等多久)

同一个 HTTP 状态码可能对应多种原因,例如 429 既可能是请求太频繁(等几秒),也可能是 当日检测次数用完(等到明天)。请根据 code 分支处理,完整码表与排查步骤见 错误码说明。


端点总览

端点说明
GET /me查看当前 Key 的身份与权限
GEO 监测
POST /geo/runs发起一轮 GEO 监测
GET /geo/runs/{run_id}查监测进度
GET /geo/brands/{brand_id}/overview结果概览(核心指标与趋势)
GET /geo/brands/{brand_id}/visibility品牌可见性细分
GET /geo/brands/{brand_id}/sentiment口碑分析
GET /geo/brands/{brand_id}/citations引用来源分析
GEO 配置
POST /geo/brands/{brand_id}/generateAI 生成话题与意图词
GET /geo/brands/{brand_id}/generate查生成进度
GET /geo/brands · POST品牌列表 / 新建
GET /geo/brands/{brand_id} · PATCH品牌详情 / 更新
GET /geo/brands/{brand_id}/prompts · POST意图词列表 / 新建
PATCH /geo/prompts/{prompt_id} · DELETE意图词启停改写 / 删除
GET /geo/brands/{brand_id}/topics · POST话题列表 / 新建
GET /geo/brands/{brand_id}/competitors · POST竞品列表 / 新建
软文发稿
GET /media按条件筛选可投放媒体
GET /media/{media_id}媒体详情
GET /media/channels筛选字典(含各档位边界)
POST /media/orders提交发稿
GET /media/orders发稿记录与真实状态
DELETE /media/orders/{order_id}撤回工单并退回点数
GET /media/publish-quota本月发布点数余额
GET /media/points-records点数消耗明细

路径均省略了 /openapi/v1 前缀。


配额与限制

API 与控制台共用同一套配额,具体额度按订阅套餐:

限制品牌版及以下超级品牌版
可检测平台豆包、DeepSeek、元宝(3 个)再加 千问、文心、Kimi(6 个)
同时启用的意图词10 条20 条
每日检测次数1 次3 次
两次检测的最小间隔1 小时1 小时
每月发布点数3001000

几点说明:

  • 可检测平台:传入超出档位的平台会被忽略,不会报错。当前可用的平台列表见 结果概览的返回。
  • 意图词上限限的是同时「启用」的条数,不限总数。一轮检测的问答次数 = 启用意图词数 × 平台数,这也是上限存在的原因。超限时启用操作返回 2002。
  • 每日检测次数按北京时间自然日计算,00:00 重置;只统计你主动触发的(含 API 调用), 套餐内的定时监测不占用。
  • 最小间隔是为了保证数据质量:AI 平台的回答在短时间内高度相似,间隔太近跑两次 拿到的几乎是同一份答案,反而会把趋势曲线压平。
  • 发布点数按订阅周期发放,每家媒体消耗多少与其价格挂钩。撤回待审核的工单会退回点数。

请求频率

除业务配额外,还按 Key 做频率限制。超限返回 2001,detail.retry_after 给出建议 等待秒数。轮询监测进度建议 30 秒一次 —— 一轮检测以分钟计,更密的轮询拿不到更多 信息,只会更快触发限制。


接入前值得知道

用 code 判断成败code == 0 才是成功,不要只看 HTTP 状态码
监测是异步的提交只代表受理,要轮询进度才知道跑完没有
提交发稿 ≠ 已发布工单会先进入待审核队列,用发稿记录查真实状态
多值查询参数要重复传?areas=a&areas=b,写成 ?areas=a,b 筛选不会生效
订阅过期后仍可读取历史数据照常读,只是不能再发起检测或提交发稿

下一步