云梭发布 API 文档

云梭发布提供完整的API,让开发者可以集成内容发布功能到自己的应用中。

API介绍

云梭发布API基于REST架构设计,使用JSON作为数据交换格式。

基础URL
https://api.yunsuofabu.com/v1
响应格式

所有API响应都遵循统一的JSON格式:

{
    "code": 状态,
    "msg": 消息,
    "time": 时间戳,
    "data": 数据详情
}

身份签名

访问云梭发布API需要在请求中包含有效签名。

配置API_KEY

登录云梭发布控制台,在「个人信息-开发配置」中生成API_KEY。

使用签名

根据规则hex(sha512(API_KEY + 随机字符串 + USER_CODE))生成签名,将以下签名包含在http请求得header中:


Signature: 你的签名(sha512的十六进制字符串)
Nonce: 生成的随机字符串
User-Code: 在开发配置页面中获取

重要提示:
请妥善保管您的API_KEY,不要在前端代码或公开存储库中暴露它。
自定义平台(反向推送)使用其他方式验证身份,请参考具体接口文档。

错误代码

API使用标准HTTP状态码表示请求结果:

状态码 含义 说明
1 或其他大于0状态码 成功 请求成功完成
-1 或其他小于0状态码 错误请求 请求错误或服务错误

内容发布

主动发布内容到自己已配置账号池中的自媒体账号。

POST发布内容
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标签后检查纯文本内容是否为空(防止仅提交空白或标签的情况)。
  • 图集验证:图集类型需提供至少4张图片,每张图片必须包含有效的URL和描述文本。
请求体示例(图文类型)
{
    "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获取分类列表
POST /distribution/categories
请求头

需要包含身份签名相关头信息,详见身份签名部分。

请求参数

此接口无需额外请求参数。

关于分类匹配规则:
我们对支持的平台分类进行了整理和归纳,每个平台分类各不相同,但是发布时又是必选项,针对这种情况做出以下规则:
1 由用户提供几个分类供我们优先顺序匹配选择
2 如果因平台无此分类无法匹配成功,则根据不同平台做出不同决策,包括不限于:使用第三方平台智能推荐分类、使用其他分类、使用互联网分类、使用任意分类等。
响应示例
{
    "code": 1,
    "msg": "ok",
    "time": 1620000000,
    "data": {
        "categories": [
            {
                "top": "体育",
                "sub": [
                    "体育",
                    "体育趣闻",
                    "体育教学",
                    "网球",
                    "羽毛球",
                    "跑步",
                ]
            },
            {
                "top": "文化",
                "sub": [
                    "文化",
                    "文学",
                    "网络小说",
                    "宗教",
                    "农人",
                    "收藏鉴宝"
                ]
            },
        ]
    }
}

账号池列表

获取当前用户的账号池列表,包含账号的基本信息和状态。

POST获取账号池列表
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 开发者在账号池中配置接收推送的HTTP地址
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为账号池自定义平台下配置的签名密钥

安全提示:
务必验证签名确保信息来自云梭发布官方,防止被他人仿冒推送垃圾信息!
data数据结构
图文类型 (article)
{
  "title": "文章标题",
  "keywords": "关键词",
  "description": "描述",
  "html": "HTML内容",
  "cover": "封面图URL",
  "categories": ["分类1", "分类2"]
}
视频类型 (video)
{
  "title": "视频标题",
  "keywords": "关键词",
  "description": "描述",
  "video_url": "视频文件URL",
  "cover": "封面图URL",
  "categories": ["分类1", "分类2"]
}
图集类型 (images)
{
  "title": "图集标题",
  "keywords": "关键词",
  "description": "描述",
  "images": [
    {"url": "图片1URL", "text": "图片描述"},
    {"url": "图片2URL", "text": "图片描述"}
  ],
  "cover": "封面图URL",
  "categories": ["分类1", "分类2"]
}
音频类型 (audio)
{
  "title": "音频标题",
  "keywords": "关键词",
  "description": "描述",
  "audio_url": "音频文件URL",
  "cover": "封面图URL",
  "categories": ["分类1", "分类2"]
}
响应要求

接收方需要返回HTTP 200状态码表示成功接收,非200状态码将被视为推送失败。

注意:请将视频、封面,文章插图保存至你的本地,不要直接引用云梭发布的URL,超过三天的资源会逐步清理。
响应示例
HTTP/1.1 200 OK
Content-Type: application/json

{
  "code": 0,
  "message": "接收成功"
}
错误处理

如果推送失败,系统会自动重试,最多重试3次。

技术支持

如果您在使用API过程中遇到问题,可以通过以下方式获取帮助:

  • 帮助:查看详细的控制台使用指南
  • 工单:通过控制台提交技术支持工单
  • 公众号:
  • QQ群:
0.046369s