跳转到主要内容

发布流程

发布不是一个单独接口能完成的动作。你需要先确认平台能力、授权账号、准备平台额外参数、上传素材,最后创建发布流程。 最简单的理解方式是:
  1. 选择要发到哪个平台。
  2. 授权这个平台的账号。
  3. 准备要发布的视频、图片、标题和正文。
  4. 补齐平台要求的额外参数。
  5. 创建发布流程。
  6. 查询发布结果。
如果你还没有 API KEY,请先阅读 获取API KEY

先下载 Demo

建议先下载并运行最小 Demo,边看页面边对照下面的接口流程。 下载最小发布 Demo Demo 运行方式:
npm install
npm run dev
默认访问:
http://localhost:5173/
Demo 顶部可以切换国内站和国际站。你可以分别填入对应站点的 API Key。

第一步:读取平台能力

先调用 平台列表,确认当前站点支持哪些平台,以及每个平台的发布能力。 你需要重点看这些字段:
  • data[n].platform:平台标识,后续发布时会用到。
  • data[n].contentLimits:标题、正文、媒体数量等限制。
  • data[n].mediaRules:图片、视频格式、大小、时长等限制。
  • data[n].optionSchema.properties:平台发布时可填写的额外参数。
举例:B 站发布视频通常需要分区;Pinterest 需要 Board;不同平台的参数不会完全一样,所以不要硬编码一套通用参数。

第二步:授权账号并获取 accountId

发布前,你需要先让用户授权目标平台账号。
  1. 调用 发起平台授权,获取授权入口。
  2. 引导用户打开授权页面并完成授权。
  3. 调用 获取授权状态,轮询授权是否完成。
  4. 授权成功后,调用 账号列表,获取可发布账号的 accountId
后续创建发布流程时,items[n].accountId 就填这里拿到的账号 ID。

第三步:处理平台额外参数

平台专属参数分两类处理。 第一类是固定参数,来自 平台列表data[n].optionSchema。例如固定枚举、开关、默认值、必填项,都可以直接按 schema 渲染表单,并写入创建发布流程时的 items[n].option。如果 schema 使用 anyOf / oneOf,按对应分支读取 propertiesrequired 第二类是动态选项,适用于需要实时拉取列表、搜索,或先创建再选择的字段,例如 B 站分区、Threads 地点、Pinterest Board。这类字段先调用 平台发布选项。接口返回的 field 就是后续账号维度接口里的 {field} 查询动态选项:
GET /api/v2/channels/accounts/{accountId}/publish-options/{field}/values
创建动态选项:
POST /api/v2/channels/accounts/{accountId}/publish-options/{field}/values
只有 平台发布选项 返回 createSchema 的字段才支持创建;请求体按 createSchema 填。接口返回空数组时,说明当前平台没有需要动态查询或创建的选项,按 optionSchemaitems[n].option 即可。

第四步:上传素材并确认资源

发布接口只接受 AiToEarn 资源域名下的素材 URL。不要直接传本地文件路径,也不要直接传任意第三方临时链接。 标准流程是:
  1. 调用 生成上传签名,获取直传地址。
  2. 使用返回的上传地址把视频、图片或封面上传到对象存储。
  3. 调用 确认资源上传,拿到后续可写入 content.mediacontent.cover 的资源 URL。
中国站接口应使用 assets.aitoearn.cn 资源;国际站接口应使用 assets.aitoearn.ai 资源。站点和资源域名要对应。

第五步:组织发布内容

创建发布流程时,核心是 contentitems
  • content:跨平台共享内容,例如标题、正文、媒体、封面。
  • items:要发布到哪些账号。每个账号一项。
  • items[n].overrides:某个平台需要不同标题、正文或素材时使用。
  • items[n].option:平台专属参数,例如 B 站 tid、Pinterest boardId
示例结构:
{
  "content": {
    "title": "我的第一条开放平台发布",
    "body": "这是一条通过 AiToEarn API 创建的发布内容。",
    "media": [
      {
        "url": "https://assets.aitoearn.cn/example/video.mp4"
      }
    ],
    "cover": {
      "url": "https://assets.aitoearn.cn/example/cover.jpg"
    }
  },
  "items": [
    {
      "platform": "bilibili",
      "accountId": "account_xxx",
      "option": {
        "tid": 171
      }
    },
    {
      "platform": "pinterest",
      "accountId": "account_yyy",
      "option": {
        "boardId": "board_zzz"
      },
      "overrides": {
        "title": "Pinterest 专用标题"
      }
    }
  ]
}
实际请求体请以 创建发布流程 的参数说明为准。每个平台 option 的具体结构,可以查看 平台列表 返回的 data[n].optionSchema.properties

第六步:创建发布流程

参数准备好后,调用 创建发布流程 创建成功后,你可以用返回的 flowId 调用 发布流程详情,查看这个 Flow 下有哪些平台任务。 如果你已经拿到具体发布记录 ID,可以调用 发布记录详情 查询单个平台账号的发布状态、错误原因和作品链接。

第七步:处理抖音短链发布

抖音发布可能需要用户在手机端完成最后一步确认。 推荐处理方式:
  1. 创建 Flow 后,轮询 发布记录详情
  2. 如果记录状态进入等待用户操作状态,调用 App 拉起链接
  3. 将返回的 shortLink 展示给用户,用户在手机端打开短链并唤起抖音。
  4. 用户完成抖音内发布后,继续轮询发布记录详情。
  5. 记录成功后,接口会返回作品链接;你的系统可以停止轮询并刷新发布历史。
轮询建议:
  • 026:继续等待,可以每 5 秒查询一次。
  • 8:等待用户操作,需要获取 App 拉起链接。
  • -159:按失败或取消处理。

接入顺序总结

  1. 获取 API KEY。
  2. 调用平台列表,选择站点和平台。
  3. 授权平台账号,拿到 accountId
  4. 根据 optionSchema 填写平台额外参数;需要动态列表时再查询或创建选项值。
  5. 上传素材并确认资源。
  6. 创建发布流程。
  7. 查询发布记录,必要时处理 App 拉起链接。