把内容 Agent 接进你的系统
一组 REST 接口,查询你的选题、稿件、发布状态与效果数据,也可以直接提交内容需求指令。 数据严格按账号隔离,指令经控制台确认后才计费执行。
快速开始
生成 API Key
登录控制台 → 左侧栏底部「我的」→「OpenAPI(开发者)」卡片 →「开通并生成 API Key」。完整 Key 只显示这一次,请立即复制保存;丢失可在同一卡片重置(旧 Key 立即失效)。
验证 Key 是否生效
所有请求通过 Authorization 请求头携带 Key:
curl -H "Authorization: Bearer svt_你的Key" \
https://sarasvati.cn/api/v1/me返回你的账号信息(如下)即接入成功:
{
"ok": true,
"data": {
"tenantId": 5,
"name": "路信通",
"plan": "pro",
"certifiedUntil": "2027-09-01T00:00:00.000Z",
"balanceUnits": 2000,
"status": "active",
"unitCosts": { "rewritePerArticle": 20, "imagePerPiece": 5, "eoReport": 30 }
}
}开始调用
拉稿件、拉效果、提需求——参考下方接口文档。所有接口只返回你自己账号的数据。
通用约定
Base URL 与认证
| 字段 | 类型 | 说明 |
|---|---|---|
Base URL | — | https://sarasvati.cn/api/v1 |
认证方式 | 请求头 | Authorization: Bearer svt_xxx(Key 为 svt_ + 48 位十六进制) |
请求编码 | — | POST body 为 JSON(Content-Type: application/json) |
数据范围 | — | 严格按 Key 所属账号(租户)隔离,跨账号数据一律 404 |
响应格式
成功统一返回 { "ok": true, "data": … };列表接口额外带分页字段;失败统一返回 { "ok": false, "error": "错误说明" } 并配对应 HTTP 状态码。
| 字段 | 类型 | 说明 |
|---|---|---|
ok | boolean | 请求是否成功 |
data | array | object | 业务数据(列表接口为数组) |
page / limit | number | 列表接口:当前页码 / 每页条数 |
total | number | 列表接口:符合条件的总条数 |
hasNext | boolean | 列表接口:是否还有下一页 |
error | string | 失败时的中文错误说明 |
分页
列表接口统一支持 page(从 1 开始)与 limit(默认 20,最大 100)两个 query 参数。
错误码
| 字段 | 类型 | 说明 |
|---|---|---|
400 | 参数错误 | 请求参数不合法,error 里有具体说明(如 rawText 长度不符、brandId 不属于当前账号) |
401 | 未认证 | API Key 缺失、格式不对、已吊销,或账号已停用 |
404 | 不存在 | 资源不存在,或不属于当前账号(出于隔离考虑不区分这两种情况) |
GET/api/v1/me
验证 Key 并返回账号概要:名称、认证档位、到期时间、单元余额与各项单元单价。
响应字段
| 字段 | 类型 | 说明 |
|---|---|---|
tenantId | number | 账号(租户)ID |
name | string | 账号名称 |
plan | string | 认证档位:trial(试用)/ standard(基础版)/ pro(专业版)/ premium(高级版) |
certifiedUntil | string | null | 认证到期时间(ISO 8601) |
balanceUnits | number | 当前单元余额 |
status | string | 账号状态(active 为正常) |
unitCosts | object | 单元单价参考:rewritePerArticle(改写/篇)、imagePerPiece(配图/张)、eoReport(EO 报告/份) |
示例
curl -H "Authorization: Bearer svt_你的Key" \
https://sarasvati.cn/api/v1/meGET/api/v1/topics
选题清单:Agent 根据你的信源与品牌综合研判后产出的选题,按创建时间倒序。
请求参数
| 参数 | 位置/类型 | 必填 | 说明 |
|---|---|---|---|
status | query · string | 否 | 按状态筛选:proposed(待审批)/ approved(已通过)/ auto_approved(自动通过)/ rejected(已拒绝)/ producing(生产中)/ produced(已产出)/ expired(已过期);不传返回全部 |
brandId | query · number | 否 | 按品牌筛选(品牌 ID 见控制台「品牌管理」) |
page | query · number | 否 | 页码,从 1 开始,默认 1 |
limit | query · number | 否 | 每页条数,默认 20,最大 100 |
响应字段(data 数组项)
| 字段 | 类型 | 说明 |
|---|---|---|
id | number | 选题 ID |
title | string | 选题标题 |
status | string | 选题状态(枚举同上) |
score | number | 选题评分(Agent 综合热点度与品牌匹配度给出) |
source | string | 选题来源(信源 / 数据分析建议等) |
brand | object | null | 所属品牌:{ id, name } |
manuscriptId | number | null | 该选题产出的稿件 ID(未产出为 null) |
createdAt / updatedAt | string | 创建 / 更新时间(ISO 8601) |
示例
curl -H "Authorization: Bearer svt_你的Key" \
"https://sarasvati.cn/api/v1/topics?status=proposed&limit=10"{
"ok": true,
"data": [
{
"id": 128,
"title": "国庆假期高速出行预测与避堵指南",
"status": "proposed",
"score": 86,
"source": "tavily-hot",
"brand": { "id": 3, "name": "路信通" },
"manuscriptId": null,
"createdAt": "2026-09-25T09:12:00.000Z",
"updatedAt": "2026-09-25T09:12:00.000Z"
}
],
"page": 1, "limit": 10, "total": 1, "hasNext": false
}GET/api/v1/manuscripts
稿件列表:一篇稿件含多个平台适配版本,每个版本的发布状态、作品链接、失败原因都独立返回。
请求参数
| 参数 | 位置/类型 | 必填 | 说明 |
|---|---|---|---|
status | query · string | 否 | 按稿件状态筛选:draft(草稿)/ pending_review(待审批)/ approved(已通过)/ rejected(已拒绝)/ cancelled(已取消)/ published(已发布)/ failed(发布失败);不传返回全部 |
brandId | query · number | 否 | 按品牌筛选 |
page | query · number | 否 | 页码,默认 1 |
limit | query · number | 否 | 每页条数,默认 20,最大 100 |
响应字段(data 数组项)
| 字段 | 类型 | 说明 |
|---|---|---|
id | number | 稿件 ID |
title | string | 稿件标题 |
status | string | 稿件状态(枚举同上) |
contentType | string | article(图文)/ video(视频) |
brand | object | null | 所属品牌:{ id, name } |
video | object | 视频稿件才有:{ status, durationSec } |
platforms | array | 各平台版本(见下表) |
publishedCount | number | 已成功发布的平台数 |
createdAt / updatedAt | string | 创建 / 更新时间 |
platforms 数组项
| 字段 | 类型 | 说明 |
|---|---|---|
platform | string | 平台标识(如 zhihu / mp / toutiao / xiaohongshu …) |
title | string | 该平台版本的标题(各平台自动改写) |
publishStatus | string | draft(未发布)/ queued(已入队)/ publishing(发布中)/ published(已发布)/ drafted(已入平台草稿箱,需人工点发布)/ failed(失败)/ skipped(跳过) |
publishedUrl | string | null | 作品链接(已发布且成功回采到链接时) |
publishedAt | string | null | 发布时间 |
lastError | string | null | 最近一次发布失败原因 |
示例
curl -H "Authorization: Bearer svt_你的Key" \
"https://sarasvati.cn/api/v1/manuscripts?status=published&limit=5"GET/api/v1/manuscripts/{id}
稿件详情:字段与列表一致,额外返回摘要与各平台版本的完整正文。稿件不存在或不属于当前账号时返回 404。
额外返回字段
| 字段 | 类型 | 说明 |
|---|---|---|
summary | string | 稿件摘要 |
platforms[].content | string | 该平台版本的完整正文 |
platforms[].summary | string | 该平台版本的摘要 |
示例
curl -H "Authorization: Bearer svt_你的Key" \
https://sarasvati.cn/api/v1/manuscripts/57GET/api/v1/effects
效果回采数据:已发布作品的查看、点赞、回复、分享。同一作品会被定期多次回采,每次回采一条记录——按时间排起来就是增长曲线。
请求参数
| 参数 | 位置/类型 | 必填 | 说明 |
|---|---|---|---|
days | query · number | 否 | 回采时间范围(最近 N 天),默认 7,最大 90 |
brandId | query · number | 否 | 按品牌筛选 |
page | query · number | 否 | 页码,默认 1 |
limit | query · number | 否 | 每页条数,默认 20,最大 100 |
响应字段(data 数组项)
| 字段 | 类型 | 说明 |
|---|---|---|
manuscriptId / manuscriptTitle | number / string | 对应稿件的 ID 与标题 |
brand | object | null | 所属品牌:{ id, name } |
platform | string | 平台标识 |
publishedUrl | string | null | 作品链接 |
views / likes / comments / shares | number | 本次回采的查看 / 点赞 / 回复 / 分享数 |
fetchedAt | string | 本次回采时间(ISO 8601) |
error | string | null | 本次回采失败原因(成功为 null) |
示例
curl -H "Authorization: Bearer svt_你的Key" \
"https://sarasvati.cn/api/v1/effects?days=30&limit=50"{
"ok": true,
"data": [
{
"manuscriptId": 57,
"manuscriptTitle": "智慧公路的三个误区",
"brand": { "id": 3, "name": "路信通" },
"platform": "zhihu",
"publishedUrl": "https://zhuanlan.zhihu.com/p/…",
"views": 1286, "likes": 45, "comments": 7, "shares": 3,
"fetchedAt": "2026-09-26T02:00:00.000Z",
"error": null
}
],
"page": 1, "limit": 50, "total": 1, "hasNext": false, "days": 30
}POST/api/v1/directives
提交内容需求指令。指令创建为「待确认」状态——本接口不扣单元,你在控制台「指令」页确认后,才按与手动创建完全相同的流程解析、计费、执行。
请求体(JSON)
| 参数 | 位置/类型 | 必填 | 说明 |
|---|---|---|---|
rawText | body · string | 是 | 10–500 字的大白话需求,如「每天给路信通产出 1 篇智慧公路主题的图文,发知乎和头条」 |
brandId | body · number | 否 | 指定品牌;必须属于当前账号且未暂停 |
响应字段
| 字段 | 类型 | 说明 |
|---|---|---|
directiveId | number | 指令 ID |
status | string | 固定为 pending_confirm(待确认) |
confirmUrl | string | 控制台指令页地址,登录后确认即开始执行 |
示例
curl -X POST -H "Authorization: Bearer svt_你的Key" \
-H "Content-Type: application/json" \
-d '{"rawText":"本周给路信通出 3 篇行业热点图文,发知乎和公众号","brandId":3}' \
https://sarasvati.cn/api/v1/directives{
"ok": true,
"data": {
"directiveId": 42,
"status": "pending_confirm",
"confirmUrl": "https://sarasvati.cn/console/directives"
}
}rawText 需为 10-500 字的大白话需求、brandId 不属于当前账号、该品牌已暂停,请先在控制台恢复。典型场景
数据看板(BI 汇总)
定时任务每天拉 /effects?days=1,把各平台阅读、点赞、回复写进你自己的数据库或 BI,做多品牌横向对比。同一作品的多次回采记录可直接画增长曲线。
稿件归档(内容资产库)
稿件发布后,用 /manuscripts 筛 status=published 增量拉取,再按 ID 调详情接口取各平台完整正文,归档进你的 CMS 或知识库。
外部触发(事件驱动内容)
你的监控系统发现行业热点 → 自动 POST /directives 提交需求 → 运营在控制台一键确认 → Agent 开始生产 → 审批短信直达手机。机器发现机会,人只做决策。
安全与配额
- Key 只存哈希:服务端只保存 Key 的 SHA-256,完整 Key 无法被找回——生成时务必立即保存,丢失请重置。
- 数据隔离:每个 Key 只能访问所属账号的数据;跨账号资源一律返回 404,不暴露存在性。
- 停用即失效:账号停用(如到期未续费)后 Key 同步失效,恢复后无需重新生成。
- 吊销与重置:怀疑泄露时在「我的」页点「吊销」立即失效;「重置」生成新 Key 同时作废旧 Key。
- 写操作保护:目前唯一的写接口(提交指令)创建后仍为「待确认」,不会产生任何扣费,杜绝程序异常刷量。
- 频率建议:常规轮询建议不低于 1 分钟一次;列表接口单页最大 100 条,请用分页遍历。
常见问题
调接口返回 401「API Key 无效或账号已停用」怎么办?
按顺序排查:① 请求头格式是否为 Authorization: Bearer svt_xxx(注意 Bearer 后有空格);② Key 是否被重置或吊销过——「我的」页只能看到 Key 前缀,对不上就是旧 Key;③ 账号是否到期停用(先用同一账号登录控制台确认能正常使用)。都排除后仍 401,提工单我们查。
brandId 在哪里查?
控制台「品牌管理」里每个品牌的 ID;也可以调 /topics 或 /manuscripts,返回里的 brand.id 就是。注意 brandId 必须属于你自己的账号,且品牌处于启用状态。
为什么 /effects 里同一篇作品有很多条记录?
这是设计如此:作品发布后会被定期多次回采,每次回采生成一条记录(带 fetchedAt 时间戳)。要最新数据就按 fetchedAt 取每个作品的最后一条;要增长曲线就把同一作品(manuscriptId + platform)的记录按时间排列。
稿件显示「已发布」但没有 publishedUrl?
两类情况:① 作品进了平台草稿箱(publishStatus=drafted,如公众号、搜狐号),需要你或我们在平台后台点最终发布,作品链接产生后才会回采到;② 链接回采有延迟,一般发布后 24–48 小时内补齐。超过 48 小时仍没有,提工单。
POST /directives 提交后什么都没发生?
这是正常的保护设计:API 提交的指令是「待确认」状态,不扣单元、不执行。登录控制台「指令」页确认后才会解析、计费并进入生产流水线——防止程序异常把你的单元刷光。
有调用频率限制吗?
目前没有硬性限流,但请遵守常规节奏:轮询不低于 1 分钟一次,列表单页最大 100 条用分页遍历。后续会上线用量统计与配额,提前在公告里说明,不会突然限制。
开发者支持
接入中遇到任何问题,有三条通道——优先提工单,响应最快:
svt_ 后前 6 位)、返回的错误内容、发生时间。路线图
- 发布操作类接口:指定渠道直接发布 / 失败稿件重新发布
- Webhook 回调:稿件待审批、发布完成、效果更新时主动推送到你的服务
- 细粒度 Key 权限:只读 / 读写分离,多 Key 管理
- API 用量统计:控制台可视化的调用量与错误率
有接口需求?在控制台「工单」里提,被采纳有单元奖励。
现在就把 Agent 接进你的系统
生成 Key 只要 10 秒,第一条 curl 只要 1 分钟。