HAiNA CLI docs

认证与约定

Bearer Token、envelope、错误码、订阅守卫

认证与约定

Base URL

  • 生产环境:https://cli.haina.io/v1

认证

所有 /v1/* 请求需要 Bearer Token(管理后台「API Keys」页创建,明文只在创建时显示一次,请妥善保存):

curl -H "Authorization: Bearer vg_live_xxx" https://cli.haina.io/v1/seats

Playground 提示:/docs/api 的认证框(Bearer Token)里只粘裸 Token(vg_live_xxx),不要自己加 Bearer ——Scalar 会自动补前缀,重复添加会变成 Bearer Bearer vg_live_xxx 而被判无效(1001)。若改在 Headers 标签页手写 Authorization,则必须写全 Authorization: Bearer vg_live_xxx。

Token 与账号绑定:套餐到期后写操作(上传/发布)会被拒(1003),只读接口不受影响。Token 可随时在后台撤销(吊销即生效)。

统一响应信封

所有端点返回统一结构:

{ "code": 0, "message": "ok", "data": { } }
  • code = 0:成功,data 为业务数据
  • code ≠ 0:失败,message 为原因;HTTP 状态码与 code 对应(见错误码表)

即使官方 TikTok 侧失败,HTTP 也可能是 200/4xx——永远以 code 为准。

错误码

codeHTTP含义处置建议
0200成功—
1001401Token 缺失/无效/已撤销核对 Token(拼写/Bearer 前缀/是否已撤销);失效或丢失则到控制台重新创建
1002403用户被禁用联系管理员
1003403套餐过期(写操作被拒)续费后重试
1004403坐席额度不足联系管理员加坐席
1005404资源不存在或不属于你核对 id/账号归属(ID 口径见下)
1006409该账号已绑定在其他坐席追加到原坐席即可(1 账号 = 1 坐席)
1007409坐席未绑定先完成绑定
1008409同一坐席只能绑同一个 TikTok 账号换坐席或换账号
2001422参数/文件校验失败按 message 修正
2002429限流(60 次/分/token)或 TikTok Shop 预审配额耗尽按 Retry-After 等待;配额次日恢复
2005422视频已过期(TikTok 视频 URL 7 天有效)重新上传
2006422(保留码,不再返回)原 TikTok Shop 预审未通过2026-09-13 起发布不强制预审,该码已下线
2007422(保留码,不再返回)原缺少有效预审同上
3001502TikTok 官方接口返回的错误读 message 官方原因;内容类违规改素材后重试,瞬时错误可重试
3002504官方接口超时稍后重试
5000500内部错误联系管理员

1005 排查序(归属类错误的最常见码)

  1. 先核对 ID 口径:TikTok 能力的账号 ID 是 businessId,TikTok Shop 能力是 creatorUserOpenId(两个 ID 都在坐席列表);发布/状态查询还要分清「平台记录 id」「官方 shareId/publish_id」「TikTok item_id」。
  2. 核对无误仍 1005 → 停止重试(归属判定不会因重试改变),携带坐席列表输出与完整请求参数联系平台排查。
  3. 注意校验顺序:发布链路账号绑定校验先于视频/fileId 归属校验——先报账号错(1007)说明账号引用有问题,先报资源 1005 才轮到资源侧排查。

限流

  • 限制:60 次/分钟/token(令牌桶)
  • 超限返回:HTTP 429 + code 2002 + Retry-After 响应头
  • 处置:按 Retry-After 等待后重试,退避至多 3 次

重试建议

  • 3002(官方超时)与 3001 中的瞬时错误:可安全重试(指数退避,最多 3 次);3001 若 message 指明内容类违规,需改素材后再试(盲重试只会再次失败)
  • 发布类接口重试前注意:TikTok Shop 发布的 fileId 是一次性消耗品——若发布请求已到达官方,重发同一 fileId 会被拒;先查 /v1/publish/records 确认上次的发布状态
  • 4xx 类错误码(1001-2007):不要盲重试,先修参数

On this page