云梭发布提供完整的API,让开发者可以集成内容发布功能到自己的应用中。
云梭发布API基于REST架构设计,使用JSON作为数据交换格式。
https://api.yunsuofabu.com/v1
所有API响应都遵循统一的JSON格式:
{
"code": 状态,
"msg": 消息,
"time": 时间戳,
"data": 数据详情
}
访问云梭发布API需要在请求中包含有效签名。
登录云梭发布控制台,在「个人信息-开发配置」中生成API_KEY。
根据规则hex(sha512(API_KEY + 随机字符串 + USER_CODE))
生成签名,将以下签名包含在http请求得header中:
Signature: 你的签名(sha512的十六进制字符串)
Nonce: 生成的随机字符串
User-Code: 在开发配置页面中获取
API使用标准HTTP状态码表示请求结果:
状态码 | 含义 | 说明 |
---|---|---|
1 或其他大于0状态码 | 成功 | 请求成功完成 |
-1 或其他小于0状态码 | 错误请求 | 请求错误或服务错误 |
主动发布内容到自己已配置账号池中的自媒体账号。
POST /distribution/push
参数 | 类型 | 验证规则 | 错误提示 | 必填 |
---|---|---|---|---|
type | int | 必填,只能为0(图文)、1(视频)、2(图集)、3(音频) | 类型参数有误 | 是 |
title | string | 必填,长度6-60字符 | 请填写文章标题/标题过长/标题过短 | 是 |
account_ids | array | 必填,数组格式,元素为36位字符串 | 请选择要发布的平台/账号池参数有误 | 是 |
keywords | string | 必填(多个英文半角逗号分隔),最大255字符 | 请填写关键词/关键词过长 | 是 |
description | string | 可选,最大255字符 | 描述过长 | 否 |
categories | string | 必填,逗号分隔的分类名称,至少5个且去重 | 分类选项有误/最少选择五个类别 | 是 |
cover | string | 必填,有效的URL格式 | 封面图URL格式错误 | 是 |
content_html | string | 仅图文类型(type=0)必填,HTML标签剥离后内容不为空 | 图文内容不能为空 | type=0时必填 |
video_url | string | 仅视频类型(type=1)必填,有效的URL格式 | 请上传视频文件/视频URL格式错误 | type=1时必填 |
audio_url | string | 仅音频类型(type=3)必填,有效的URL格式 | 请上传音频文件/音频URL格式错误 | type=3时必填 |
images | array | 仅图集类型(type=2)必填,数组格式,至少4项 | 请上传相册图集/最少上传4张图片 | type=2时必填 |
images.*.url | string | 仅图集类型必填,有效的URL格式 | 相册图片URL格式错误 | type=2时必填 |
images.*.text | string | 仅图集类型必填,最大255字符 | 请填写图片描述/图片描述文本过长 | type=2时必填 |
categories
参数需提供至少5个不重复的分类名称,系统会自动去重并校验有效性。分类名称建议通过/distribution/categories
接口获取,也可以自行传入,但是否跟第三方平台名称匹配由您自行判断
content_html
仅在type=0
时生效,会剥离HTML标签后检查纯文本内容是否为空(防止仅提交空白或标签的情况)。
{
"type": 0,
"title": "测试文章标题(6-60字符)",
"keywords": "测试,API,内容发布",
"description": "这是一篇测试文章的描述(可选,最多255字符)",
"categories": "科技,互联网,教育,科普,工具", // 至少5个分类ID,逗号分隔
"account_ids": ["d9153270-94a0-abcd-b645-00163e4c8b3c", "d9153270-94a1-abcd-b645-00163e4c8b3c"], // 账号uuid
"cover": "https://example.com/cover.jpg", // 封面图URL
"content_html": "<p>这是图文内容HTML</p><img src='https://example.com/img1.jpg'>" // 剥离标签后不为空
}
// 标题过短
{
"code": -1,
"msg": "标题过短,请增加标题长度",
"time": 1620000000,
"data": {}
}
// 分类数量不足
{
"code": -1,
"msg": "最少选择五个类别,更好的匹配更多平台",
"time": 1620000000,
"data": {}
}
// 图文内容为空
{
"code": -1,
"msg": "图文内容不能为空",
"time": 1620000000,
"data": {}
}
获取内容分类列表,用于发布内容时选择分类。
POST /distribution/categories
需要包含身份签名相关头信息,详见身份签名部分。
此接口无需额外请求参数。
{
"code": 1,
"msg": "ok",
"time": 1620000000,
"data": {
"categories": [
{
"top": "体育",
"sub": [
"体育",
"体育趣闻",
"体育教学",
"网球",
"羽毛球",
"跑步",
]
},
{
"top": "文化",
"sub": [
"文化",
"文学",
"网络小说",
"宗教",
"农人",
"收藏鉴宝"
]
},
]
}
}
获取当前用户的账号池列表,包含账号的基本信息和状态。
POST /distribution/account_pools
需要包含身份签名相关头信息,详见身份签名部分。
此接口无需额外请求参数。
{
"code": 1,
"msg": "ok",
"time": 1620000000,
"data": {
"pools": [
{
"pk": "ap123456",
"name": "我的微信公众号",
"platform_name": "微信公众号",
"login_status": "正常/登录失败/已失效,请更新",
"publish_status": "正常",
"last_used_time": "2025-09-16 04:16:48"
},
{
"pk": "ap789012",
"name": "头条号",
"platform_name": "今日头条",
"login_status": "正常",
"publish_status": "无法发布",
"last_used_time": "2025-09-16 04:16:48"
}
]
}
}
字段 | 说明 |
---|---|
pk | 账号池唯一标识 |
name | 账号的展示名称 |
login_status | 账号登录状态: 正常: 账号状态正常可以发布信息 登录失败: 账号出现登录失败,但稍后将重新尝试 已失效,请更新: 多次出现登录失败,需要访问控制台更新账号信息 |
publish_status | 发布状态: 正常: 账号正常发布信息 无法发布: 包括不限于账号状态异常,今日发布数到达平台限额等情况 |
last_used_time | 最后使用时间 |
使网站,小程序,自研系统等自定义平台接收云梭发布推送的内容。
POST /开发者配置的API
{
"type": "article",
"signature": "签名",
"nonce": "随机字符串",
"data": "结构化数据,详情见下文"
}
参数 | 类型 | 说明 |
---|---|---|
Content-Type | string | application/json; encoding=utf-8 |
参数 | 类型 | 说明 | 必填 |
---|---|---|---|
type | string | 内容类型: 0(图文), 1(视频), 2(图集), 3(音频) | 是 |
signature | string | SHA512签名,用于验证请求合法性 | 是 |
nonce | string | 随机数,参与签名计算 | 是 |
data | object | 具体内容数据,结构因类型而异 | 是 |
signature = sha512(POOL_KEY + "&data_type=" + type + "&nonce=" + nonce)
其中POOL_KEY为账号池自定义平台下配置的签名密钥
{
"title": "文章标题",
"keywords": "关键词",
"description": "描述",
"html": "HTML内容",
"cover": "封面图URL",
"categories": ["分类1", "分类2"]
}
{
"title": "视频标题",
"keywords": "关键词",
"description": "描述",
"video_url": "视频文件URL",
"cover": "封面图URL",
"categories": ["分类1", "分类2"]
}
{
"title": "图集标题",
"keywords": "关键词",
"description": "描述",
"images": [
{"url": "图片1URL", "text": "图片描述"},
{"url": "图片2URL", "text": "图片描述"}
],
"cover": "封面图URL",
"categories": ["分类1", "分类2"]
}
{
"title": "音频标题",
"keywords": "关键词",
"description": "描述",
"audio_url": "音频文件URL",
"cover": "封面图URL",
"categories": ["分类1", "分类2"]
}
接收方需要返回HTTP 200状态码表示成功接收,非200状态码将被视为推送失败。
HTTP/1.1 200 OK
Content-Type: application/json
{
"code": 0,
"message": "接收成功"
}
如果推送失败,系统会自动重试,最多重试3次。