云梭发布 API 文档

云梭发布以开放 API 为核心,提供完整的内容分发能力,让开发者将一键发布、账号托管与自定义平台反向推送直接集成进自己的业务系统。

API介绍

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

基础URL
https://www.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 必填,长度21-40字符 请填写文章标题/标题过长/标题过短
short_title string 必填,长度8-20字符 短标题,用于适配某些标题最大长度不足20字平台
long_title string 必填,长度41-60字符 长标题,用于适配某些标题最大长度60字以上平台
account_ids array 必填,数组格式,元素为36位字符串 请选择要发布的平台/账号池参数有误
keywords string 必填(多个英文半角逗号分隔),最大255字符 请填写关键词/关键词过长
description string 可选,最大255字符 描述过长
categories string 必填,逗号分隔的分类名称,至少5个且去重 分类选项有误/最少选择五个类别
cover string 必填,有效的完整URL格式 封面图URL格式错误
html string 仅图文类型(type=0)必填,HTML标签剥离后内容不为空 注意需要完整的URL,不能是相对或绝对路径 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项 注意需要完整的URL,不能是相对或绝对路径/最少4张图片 type=2时必填
images.*.url string 仅图集类型必填,有效的URL格式 注意需要完整的URL,不能是相对或绝对路径 type=2时必填
images.*.text string 仅图集类型必填,最大255字符 请填写图片描述/图片描述文本过长 type=2时必填
更多逻辑说明
  • 分类验证categories参数需提供至少5个不重复的分类名称,系统会自动去重并校验有效性。分类名称建议通过/distribution/categories接口获取,也可以自行传入,但是否跟第三方平台名称匹配由您自行判断
  • 图文内容验证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
    "html": "<p>这是图文内容HTML</p><img src='https://example.com/img1.jpg'>"  // 剥离标签后不为空
}
正常响应

{
    "code": 1,
    "msg": "success",
    "time": 1620000000,
    "data": {
        "content_pk": "d9153270-94a0-abcd-b645-00163e4c8b3c" //用于查询发布结果
    }
}
常见错误响应示例
// 标题过短
{
    "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": [
                    "文化",
                    "文学",
                    "网络小说",
                    "宗教",
                    "农人",
                    "收藏鉴宝"
                ]
            },
        ]
    }
}

获取支持平台

获取当前系统支持分发到的所有平台列表,新增账号池时 platform_key 必须取自本接口返回的值。

POST获取支持平台列表
POST /platforms
请求头

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

请求参数

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

响应示例
{
    "code": 1,
    "msg": "ok",
    "time": 1620000000,
    "data": {
        "platforms": [
            {
                "platform_key": "baijiahao",
                "platform_name": "百家号",
                "refresh_intervals": 3600,
                "is_custom": false
            },
            {
                "platform_key": "toutiao",
                "platform_name": "今日头条",
                "refresh_intervals": 3600,
                "is_custom": false
            },
            {
                "platform_key": "custom",
                "platform_name": "自定义平台",
                "refresh_intervals": 0,
                "is_custom": true,
                "extra_rule": {
                    "notice_url": "回调通知地址,由调用方提供",
                    "signature_key": "用于校验回调签名的密钥,由调用方提供"
                }
            }
        ]
    }
}
字段说明
字段 说明
platform_key 平台唯一标识,新增账号池时作为 platform_key 参数传入,例如 baijiahao 对应百家号
platform_name 平台展示名称
refresh_intervals 平台账号刷新间隔(秒)
is_custom 是否为自定义平台:false 为系统内置平台,true 为自定义平台
extra_rule is_custom=true 时返回,说明自定义平台需要的 notice_urlsignature_key,详见新增账号池

账号池列表

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

POST获取账号池列表
POST /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 最后使用时间

新增账号池

新增一个账号到当前用户的账号池,保存登录状态数据(cookies / localStorage / sessionStorage)。

POST新增账号池
POST /pools/create
请求头

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

请求参数
参数 类型 说明 必填
name string 账号池名称(展示用)
platform_key string 所属平台标识,须取自获取支持平台返回的 platform_key
data_json object/string 登录状态数据(cookies / localStorage / sessionStorage),自定义平台(custom)无需此参数。结构见下方说明 非自定义平台必填
extra_json object/string 仅自定义平台(custom)必填,结构:{"notice_url":"合法URL","signature_key":"字符串"} 自定义平台必填
data_json 结构说明
{
    "cookies": [
        {
            "name": "t",
            "value": "1777300063984",
            "domain": ".sohu.com",
            "path": "/",
            "expires": 1779892096,
            "httpOnly": false,
            "secure": false,
            "session": false
        }
    ],
    "local_storage": "base64编码字符串",
    "session_storage": "base64编码字符串"
}
  • cookies:可选,数组,每个元素须包含 name/value/domain/path 字段;
  • local_storage / session_storage:可选,为浏览器 localStorage / sessionStorage 的 JSON 经过 base64 编码后的字符串;
  • data_json 支持直接传 JSON 字符串或对象,系统会做结构合法性校验。
请求示例(非自定义平台)
{
    "name": "搜狐号-测试",
    "platform_key": "sohu",
    "data_json": {
        "cookies": [{"name":"t","value":"1777300063984","domain":".sohu.com","path":"/"}],
        "local_storage": "eyJrZXkiOiJ2YWx1ZSJ9",
        "session_storage": "eyJrZXkiOiJ2YWx1ZSJ9"
    }
}
请求示例(自定义平台)
{
    "name": "我的自定义站点",
    "platform_key": "custom",
    "extra_json": {
        "notice_url": "https://www.example.com/api/notice/",
        "signature_key": "YunSuoFaBu@2025"
    }
}
正常响应
{
    "code": 1,
    "msg": "ok",
    "time": 1620000000,
    "data": {
        "pk": "ap123456"  // 新账号池唯一标识
    }
}
常见错误响应示例
// 必填参数缺失
{
    "code": -1,
    "msg": "name不能为空",
    "time": 1620000000,
    "data": {}
}

// platform_key 无效或平台已禁用
{
    "code": -1,
    "msg": "platform_key无效或平台已禁用",
    "time": 1620000000,
    "data": {}
}

// data_json 结构不合法
{
    "code": -1,
    "msg": "data_json.cookies[0] 缺少必要字段 name/value/domain/path",
    "time": 1620000000,
    "data": {}
}

// 自定义平台缺少 extra_json
{
    "code": -1,
    "msg": "自定义平台必须提供 extra_json",
    "time": 1620000000,
    "data": {}
}

更新账号池

根据 pk 更新当前用户名下账号池的名称、登录状态数据或自定义平台配置。

POST更新账号池
POST /pools/update
请求头

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

请求参数
参数 类型 说明 必填
pk string 账号池唯一标识,由账号池列表或新增接口返回
name string 新的账号池名称(展示用)
data_json object/string 新的登录状态数据,结构同新增账号池仅非自定义平台可更新;更新后 login_status 重置为 0(视为可再次尝试登录)
extra_json object/string 新的自定义平台配置,结构同新增。仅自定义平台可更新
更多逻辑说明
  • 权限校验:仅可更新当前用户本人名下的账号池,传入不存在的 pk 返回「账号不存在」。
  • login_status 重置:只要传入了 data_json,系统即认为登录态已刷新,login_status 重置为 0。
  • publish_status 不变:本接口不会修改 publish_status(每日由系统重置)。
请求示例
{
    "pk": "ap123456",
    "name": "搜狐号-已更新",
    "data_json": {
        "cookies": [{"name":"t","value":"1777300063984","domain":".sohu.com","path":"/"}]
    }
}
正常响应
{
    "code": 1,
    "msg": "ok",
    "time": 1620000000,
    "data": {
        "pk": "ap123456"
    }
}
常见错误响应示例
// pk 为空
{
    "code": -1,
    "msg": "pk不能为空",
    "time": 1620000000,
    "data": {}
}

// 账号不存在或不属于当前用户
{
    "code": -1,
    "msg": "账号不存在",
    "time": 1620000000,
    "data": {}
}

// 自定义平台尝试更新 data_json
{
    "code": -1,
    "msg": "自定义平台不可更新 data_json",
    "time": 1620000000,
    "data": {}
}

删除账号池

根据 pk 删除(软删除)当前用户名下指定的账号池。

POST删除账号池
POST /pools/delete
请求头

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

请求参数
参数 类型 说明 必填
pk string 账号池唯一标识
请求示例
{
    "pk": "ap123456"
}
正常响应
{
    "code": 1,
    "msg": "ok",
    "time": 1620000000,
    "data": {
        "pk": "ap123456"
    }
}
常见错误响应示例
// pk 为空
{
    "code": -1,
    "msg": "pk不能为空",
    "time": 1620000000,
    "data": {}
}

// 账号不存在或不属于当前用户
{
    "code": -1,
    "msg": "账号不存在",
    "time": 1620000000,
    "data": {}
}

发布状态查询

根据内容唯一标识 content_pk 查询该内容在各账号上的发布结果明细。

POST查询发布状态
POST /distribution/status
请求头

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

请求参数
参数 类型 说明 必填
content_pk string 内容唯一标识,由/distribution/push接口返回的 content_pk 字段提供
更多逻辑说明
  • 权限校验:接口仅返回当前登录用户本人名下的内容,传入不存在的 content_pk 将返回「内容不存在」。
  • 返回结构data 为发布记录数组,每条记录关联一个账号池(accountPool)。
请求示例
{
    "content_pk": "d9153270-94a0-abcd-b645-00163e123456"
}
正常响应
{
    "code": 1,
    "msg": "success",
    "time": 1620000000,
    "data": [
        {
            "pk": "cp123456-xxxxxx-xxxxxxx",
            "status": 1,
            "platform_name": "微信公众号",
            "publish_time": "2025-09-16 04:20:11",
            "remark": "OK",
            "accountPool": {
                "pk": "ap123456",
                "name": "我的微信公众号",
                "platform_name": "微信公众号",
                "login_status": "正常",
                "publish_status": "正常"
            }
        },
        {
            "pk": "cp789012-xxxxxx-xxxxxxx",
            "status": 0,
            "platform_name": "今日头条",
            "publish_time": "",
            "remark": "发布失败,请稍后重试",
            "accountPool": {
                "pk": "ap789012",
                "name": "头条号",
                "platform_name": "今日头条",
                "login_status": "正常",
                "publish_status": "无法发布"
            }
        }
    ]
}
响应字段说明
字段 说明
pk 发布记录唯一标识
status 发布状态:0(待发布),1(成功),2(失败),3(平台不支持) 具体以实际枚举为准
platform_name 目标发布平台名称
publish_time 发布完成时间,未发布成功时为空
failed_count 重试次数
remark 成功/失败详细描述信息
accountPool 关联账号池信息,字段说明见账号池列表
常见错误响应示例
// content_pk 为空
{
    "code": -1,
    "msg": "content_pk不能为空",
    "time": 1620000000,
    "data": {}
}

// 内容不存在或不属于当前用户
{
    "code": -1,
    "msg": "内容不存在",
    "time": 1620000000,
    "data": {}
}

自定义平台(反向推送)

使网站,小程序,自研系统等自定义平台接收云梭发布推送的内容。

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群: