曜智枢

曜智枢 中转服务使用指南#

本文面向使用曜智枢 API 中转服务的用户:把曜智枢当作一个兼容 OpenAI / Claude / Gemini 协议的模型接口地址,接入自己的客户端、插件或代码。

阅读顺序建议:只想尽快跑通,看第一章;要接入工具,看第六章;要接 Agent,看第七章;要生成 Wan 视频,看第八章;要生成 Seedance 视频,看第九章;报错不清楚原因,直接查第十一章和第十二章。

站点地址:https://www.yotopivot.top 本文只写接口怎么调。模型名称、可用范围与账号额度请在站内的「模型广场」和「控制台」查看。


一、五分钟快速开始#

第 1 步:注册并登录#

  1. 打开 https://www.yotopivot.top。
  2. 注册账号:填写用户名、密码、邮箱,并在邮箱验证码一栏点击发送验证码,填入收到的验证码完成注册。
  3. 注册后登录,进入控制台。

第 2 步:创建 API 密钥#

  1. 在控制台左侧进入「API 密钥」(地址 https://www.yotopivot.top/keys)。
  2. 点击新建密钥,填写名称,按需设置分组、模型限制、IP 白名单、过期时间与额度,保存。
  3. 在列表里点该条目的「复制密钥」,得到形如 sk-xxxxxxxx... 的密钥;点「复制连接信息」可以一次拿到接口地址与密钥。

密钥只在创建时方便复制,请立即保存。一个应用配一枚密钥,出问题可以单独禁用,不必影响其他工具。

第 3 步:接进你用的工具#

先分清你是哪一类,两条路的做法不一样:

图形客户端只需要填两样东西:

要填的项 值
接口地址 / API 地址 / Base URL https://www.yotopivot.top/v1
API 密钥 / API Key 你在控制台创建的密钥,形如 sk-xxxxxxxx...

不管走哪条路,都建议先用命令行确认密钥可用(把 sk-xxxxxxxx 换成你的密钥):

curl https://www.yotopivot.top/v1/models \
  -H "Authorization: Bearer sk-xxxxxxxx"

返回里 data 数组就是这枚密钥当前可以调用的模型名。接着发一条最小的对话请求(把 模型名 换成返回列表里的任意一个):

curl https://www.yotopivot.top/v1/chat/completions \
  -H "Authorization: Bearer sk-xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "模型名",
    "messages": [{"role": "user", "content": "你好"}]
  }'

能拿到正常回答,说明这一章已经完成,后面按需选读。


二、API 基本信息#

服务地址#

用途 地址
OpenAI 兼容接口(绝大多数客户端填这个) https://www.yotopivot.top/v1
Claude 兼容接口 https://www.yotopivot.top/v1(对话端点为 /v1/messages)
Gemini 原生接口 https://www.yotopivot.top/v1beta
绘画任务(Midjourney 类) https://www.yotopivot.top/mj
音乐任务(Suno 类) https://www.yotopivot.top/suno

客户端里通常要求填「Base URL / 接口地址」,填到 /v1 为止;少数插件要求填完整的请求地址,这时要带上具体端点,例如 https://www.yotopivot.top/v1/chat/completions。

鉴权方式#

所有中转接口都需要 API 密钥,支持以下几种写法:

场景 写法
通用(推荐) 请求头 Authorization: Bearer sk-xxxxxxxx
Claude 协议 /v1/messages 请求头 x-api-key: sk-xxxxxxxx(也可用 Authorization)
Gemini 协议 /v1beta/... 请求头 x-goog-api-key: sk-xxxxxxxx,或查询参数 ?key=sk-xxxxxxxx
Realtime(WebSocket) 连接协议头 Sec-WebSocket-Protocol 中带 openai-insecure-api-key.sk-xxxxxxxx
Midjourney Proxy 类客户端 请求头 mj-api-secret: sk-xxxxxxxx

密钥被当作敏感信息处理:不要写进会公开的代码仓库、前端页面或截图里。

响应头与请求追踪#

每个响应都会带一个请求编号:

X-Oneapi-Request-Id: 202609200202124569850508268d9d6Ub6AWfdu

报错时,响应体里的 message 也会带上同一个编号,例如 ... (request id: 2026092...Ub6AWfdu)。反馈问题时把这个编号一起贴上,能最快定位到具体那一次请求。

关于报错语言#

同一类错误,服务端会按客户端声明的语言返回中文或英文文案,例如密钥无效在中文环境下是「无效的令牌」,在英文环境(或未声明语言,如大多数 curl 默认请求)下是 Invalid token。判断错误请以 HTTP 状态码 + 错误码 为主,文案仅作参考。


三、支持的接口#

OpenAI 兼容#

接口 说明
POST /v1/chat/completions 对话补全,最常用;支持 stream: true 流式返回
POST /v1/completions 旧版文本补全
POST /v1/responses Responses 协议
POST /v1/responses/compact Responses 上下文压缩
POST /v1/embeddings 文本向量
POST /v1/images/generations 图片生成
POST /v1/images/edits 图片编辑(图生图 / 局部重绘)
POST /v1/edits 旧版图片编辑端点
POST /v1/audio/transcriptions 语音转文字
POST /v1/audio/translations 语音翻译
POST /v1/audio/speech 文字转语音
POST /v1/videos 创建异步视频生成任务
GET /v1/videos/{id} 查询视频生成状态
GET /v1/videos/{id}/content 下载已完成的视频
POST /v1/rerank 重排序
POST /v1/moderations 内容审核
GET /v1/models 查询当前密钥可用的模型列表
GET /v1/models/{模型名} 查询单个模型
GET /v1/realtime Realtime 语音对话(WebSocket)

Claude 兼容#

接口 说明
POST /v1/messages Claude Messages 协议,可用 x-api-key 头鉴权

Gemini 兼容#

接口 说明
POST /v1beta/models/{模型}:{动作} Gemini 原生格式,例如 :generateContent
GET /v1beta/models Gemini 原生模型列表
GET /v1beta/openai/models 以 OpenAI 格式列出 Gemini 可用模型

任务类#

视频、绘画与音乐属于异步任务型接口,提交后需要再查询结果:

接口 说明
POST /v1/videos 提交视频生成任务;Wan 3.0 见第八章,Seedance 见第九章
GET /v1/videos/{id} 查询视频任务状态
GET /v1/videos/{id}/content 下载状态为 completed 的视频
POST /v1/video/generations 旧视频创建兼容入口;新接入使用 /v1/videos
POST /mj/submit/* 提交 Midjourney 类绘画任务
GET /mj/task/{id}/fetch 查询绘画任务结果
POST /suno/submit/{动作} 提交音乐任务
POST /suno/fetch、GET /suno/fetch/{id} 查询音乐任务结果

暂不支持#

以下端点会返回「接口未实现」,请不要在客户端里配置:


四、查询可用模型#

不要凭记忆猜模型名,直接问接口:

curl https://www.yotopivot.top/v1/models \
  -H "Authorization: Bearer sk-xxxxxxxx"

返回结构:

{
  "success": true,
  "object": "list",
  "data": [
    {
      "id": "模型名",
      "object": "model",
      "created": 1700000000,
      "owned_by": "...",
      "supported_endpoint_types": ["openai", "openai-response"]
    }
  ]
}

有两点值得注意:

  1. 这个列表是「按密钥」算出来的,不是全站模型清单。密钥所属分组、以及密钥自身的模型限制,都会收窄这里的结果。
  2. supported_endpoint_types 表示该模型支持哪些调用形式,客户端里选错端点类型会报模型不可用;以它为准,不要硬套。

站内的「模型广场」(https://www.yotopivot.top/pricing)可以按模型查看说明与调用示例,点进任意模型详情即可看到可直接复制的 cURL、Python、TypeScript、JavaScript 片段。

模型规格以 Codex 客户端为准#

本站的 ChatGPT / Codex 系列模型是把 Codex 客户端的链路反代出来的,不是官方 API 直连。所以涉及模型规格时,请对照 Codex 客户端,而不是 OpenAI 官方 API 文档——尤其是上下文长度:

模型 上下文长度
5.6 系列 400K
6astra 800K

在客户端或代码里照抄官方 API 的数字来配上下文预算,很容易和实际可用长度对不上;拿不准时以上表为准,表里没列出的模型可在「模型广场」看该模型的说明,或直接咨询站点管理员。


五、API 密钥与分组#

API 密钥上可以设置什么#

创建密钥时可配置的字段,对应到实际行为:

字段 作用
名称 仅用于你自己区分用途
分组 决定这枚密钥走哪一档模型集合。不填则跟随账号默认分组
模型限制 打开后只能调用你勾选的模型,其余模型一律拒绝
IP 白名单 限制只有指定 IP / 网段可以调用,适合部署在固定服务器上的应用
额度 / 无限额度 限制这枚密钥总共能用多少;设为无限额度则不受密钥额度约束
过期时间 到期自动失效,可设为永不过期
跨分组重试 仅当分组是 auto 时生效,允许在分组间自动重试

API 密钥页的常用操作#

在「API 密钥」页每一行的操作菜单里可以:

推荐做法#


六、客户端配置教程#

以下每个客户端的通用逻辑都一样:接口地址填 https://www.yotopivot.top/v1,API 密钥填你在控制台创建的那串 sk- 密钥,模型名从 /v1/models 的返回里挑。不同版本界面用词略有差异,以你当前版本为准。

0. 先试站内一键导入#

在控制台「API 密钥」页对应密钥的操作菜单里选择「Chat」,如果本机装了受支持的客户端,会直接拉起并写入地址与密钥,省去手填。一键导入失败时,按下面的手动方式配置。

同一个操作菜单里还有另一个入口「CC Switch」,服务的是 Claude Code / Codex / Gemini 这类命令行工具——两条路径分工不同:图形客户端走「Chat」,命令行工具走「CC Switch」。

「Chat」子菜单当前支持的客户端,以及自动导入失败时手动该怎么填:

客户端(点名字进下载页) 在令牌页菜单里选 手动配置时填什么
Cherry Studio Cherry Studio API 地址 https://www.yotopivot.top/v1,再手动添加模型名
AionUI AionUI OpenAI 兼容,API 地址 https://www.yotopivot.top/v1
DeepChat DeepChat OpenAI 兼容,API 地址 https://www.yotopivot.top/v1
Lobe Chat Lobe Chat 官方示例 Base URL https://www.yotopivot.top/v1
AI as Workspace AI as Workspace Base URL https://www.yotopivot.top/v1
AMA 问天 AMA 问天 服务器地址填站点域名,密钥填 sk- 密钥
OpenCat OpenCat 域名填站点域名,Token 填 sk- 密钥
流畅阅读 流畅阅读 由站内直接把密钥发送到浏览器扩展,无需手填
CC Switch 操作菜单里的独立入口 见第 1 节的地址对照表

表里带链接的都是各客户端的官方站点或发布页;AMA 问天目前没有稳定的公开下载页,用站内一键导入即可。

下面详细写的 Cherry Studio、Chatbox、NextChat、沉浸式翻译、Cursor / Cline、Claude Code,是使用量最大、也最容易填错地址的几款;其余客户端按上表填写即可,界面用词以你当前版本为准。

1. CC Switch(Claude Code / Codex / Gemini 一键写入)#

如果你用 Claude Code、Codex 或 Gemini 这类命令行工具,这是最省事的一条路:站内直接生成配置并拉起 CC Switch 导入,不用手抄地址和密钥。

2. Cherry Studio#

3. Chatbox#

4. NextChat#

5. 沉浸式翻译#

6. 编码类工具(Agent)#

Cursor、Cline 这类能读写代码、自己跑命令的工具单独成章,见第七章;Claude Code、Codex CLI、Gemini CLI 等命令行工具也在那一章。


七、主流 Agent 接入#

这一章讲的是能自己读写代码、执行任务的工具(Agent):既有带界面的桌面应用与编辑器插件,也有跑在终端里的命令行工具。每个工具的写法定死为「安装 → 配置 → 验证 → 易错点」,配置字段都对照各自的官方文档核对过(来源列在本章末尾)。

先按协议对号入座,再跳到对应小节:

工具 界面 协议 接口地址怎么填
DeepSeek Harness(dsh) 本地 Web 控制台 OpenAI 兼容 https://www.yotopivot.top/v1
ZCode 桌面应用 OpenAI 或 Anthropic 见 7.1.2
Trae IDE OpenAI 兼容 见 7.1.3(要求完整接口地址)
Cursor IDE OpenAI 兼容 https://www.yotopivot.top/v1
Cline / Roo Code 编辑器插件 OpenAI 兼容 https://www.yotopivot.top/v1
Continue 编辑器插件 OpenAI 兼容 https://www.yotopivot.top/v1
Codex CLI 命令行 Responses https://www.yotopivot.top/v1
Claude Code 命令行 Claude https://www.yotopivot.top(不带 /v1)
Gemini CLI 命令行 Gemini https://www.yotopivot.top
Qwen Code 命令行 OpenAI 兼容 https://www.yotopivot.top/v1
iFlow CLI 命令行 OpenAI 兼容 https://www.yotopivot.top/v1
Kimi Code CLI 命令行 OpenAI 或 Anthropic https://www.yotopivot.top/v1

先提醒一句:Agent 会自己发起多轮请求、带上长上下文,额度与限流消耗远高于聊天。建议一个 Agent 配一枚密钥(见第五章),并在密钥上打开模型限制,避免它误用高价模型。

7.1 带界面的 Agent#

7.1.1 DeepSeek Harness(dsh,DeepSeek 官方开源)#

dsh 是 DeepSeek 官方开源的 Agent 执行框架,跑在你自己机器上,通过浏览器里的控制台操作。

npx @deepseek-ai/dsh web

7.1.2 ZCode(智谱,桌面应用)#

7.1.3 Trae#

7.1.4 Cursor#

7.1.5 Cline / Roo Code#

7.1.6 Continue#

7.2 命令行 Agent#

7.2.1 Codex CLI(Responses 协议)#

本站的 ChatGPT / Codex 系列本身就是 Codex 链路,所以 Codex CLI 属于「原生对口」的用法。

model_provider = "yotopivot"
model = "模型名"
disable_response_storage = true

[model_providers.yotopivot]
name = "YOTOPIVOT"
base_url = "https://www.yotopivot.top/v1"
wire_api = "responses"
requires_openai_auth = false
env_key = "YOTOPIVOT_API_KEY"

7.2.2 Claude Code(Claude 协议)#

export ANTHROPIC_BASE_URL="https://www.yotopivot.top"
export ANTHROPIC_AUTH_TOKEN="sk-xxxxxxxx"
export ANTHROPIC_MODEL="模型名"

Windows PowerShell:

$env:ANTHROPIC_BASE_URL = "https://www.yotopivot.top"
$env:ANTHROPIC_AUTH_TOKEN = "sk-xxxxxxxx"
$env:ANTHROPIC_MODEL = "模型名"

7.2.3 Gemini CLI(Gemini 协议)#

{
  "baseUrl": "https://www.yotopivot.top",
  "apiKey": "sk-xxxxxxxx"
}

也可以改用环境变量提供密钥:GEMINI_API_KEY=sk-xxxxxxxx。

7.2.4 Qwen Code#

export OPENAI_BASE_URL="https://www.yotopivot.top/v1"
export OPENAI_API_KEY="sk-xxxxxxxx"
export OPENAI_MODEL="模型名"

也可以写进 ~/.qwen/settings.json 的 provider 条目(baseUrl + envKey),效果一致。

7.2.5 iFlow CLI#

7.2.6 Kimi Code CLI#

[providers.yotopivot]
type = "openai"
base_url = "https://www.yotopivot.top/v1"
api_key = "sk-xxxxxxxx"

[models."模型名"]
provider = "yotopivot"
model = "模型名"
max_context_size = 400000

7.3 暂未确认支持自定义端点的工具#

下面这些工具在官方文档里没有找到自定义 Base URL / 第三方端点的配置项(核对日期见文末),目前建议直接使用它们的官方账号。如果你在官方文档里找到了接入方式,欢迎反馈给我们补充:

工具 核对结果
通义灵码(阿里) 未找到自定义端点配置项
CodeGeeX(智谱) 未找到自定义端点配置项
文心快码 Comate(百度) 未找到自定义端点配置项
CodeBuddy(腾讯) 未找到自定义端点配置项

7.4 Agent 场景的常见问题#

本章配置字段的官方依据#


八、Wan 3.0 视频生成#

接口与模型#

项目 值
Base URL https://www.yotopivot.top
鉴权 Authorization: Bearer sk-xxxxxxxx
推荐创建接口 POST /v1/videos
查询接口 GET /v1/videos/{id}
下载接口 GET /v1/videos/{id}/content
兼容创建接口 POST /v1/video/generations

新接入请使用 /v1/videos。旧的 /v1/video/generations 只作为已有客户端的创建兼容入口;查询统一使用 /v1/videos/{id}。

支持的模型:

先用 /v1/models 确认当前密钥能看到目标模型。模型不可见时,检查密钥的分组和模型限制;当前生产环境通常通过「生视频」分组提供这两款模型。

创建任务#

curl -sS https://www.yotopivot.top/v1/videos \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-xxxxxxxx" \
  -d '{
    "model": "wan3.0-video",
    "prompt": "a red paper lantern rising in snowy night",
    "size": "16:9",
    "seconds": "5"
  }'

需要保留创建请求编号时,给 curl 增加 -D response-headers.txt,并在成功或失败时从该文件提取 X-Oneapi-Request-Id。创建 POST 不要配置自动重试。

成功时返回 HTTP 200。关键字段示例:

{
  "id": "task_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "task_id": "task_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "object": "video",
  "model": "wan3.0-video",
  "status": "queued",
  "progress": 0,
  "created_at": 1791590000
}

保存并使用 id。task_id 是旧客户端兼容字段,当前与 id 相同;创建响应目前不保证回填 seconds 和 size。

请求参数#

字段 类型 必填 说明
model string 是 wan3.0-video 或 wan3.0-video-prime
prompt string 是 视频内容描述,不能为空
size string 否 分辨率或画幅,规则见下表
seconds string 否 整数秒,范围 2 至 30;省略时为 5 秒

size 支持两类取值:

取值 含义 未显式指定的另一项
480P、720P、1080P 指定分辨率 画幅使用 adaptive
16:9、4:3、1:1、3:4、9:16 指定画幅 分辨率使用 480P
adaptive 自适应画幅 分辨率使用 480P
省略 使用兼容默认值 480P + adaptive

当前公开兼容参数中,size 一次只表达分辨率或画幅之一。不要依赖未在本文列出的 metadata 或供应商原生字段来同时强制指定两者。

时长请按示例使用字符串整数,例如 "seconds":"5"。自动时长 -1 不受支持。

查询状态#

curl -sS https://www.yotopivot.top/v1/videos/<TASK_ID> \
  -H "Authorization: Bearer sk-xxxxxxxx"
状态 含义 客户端处理
queued 已接收,等待处理 继续轮询
in_progress 正在生成 继续轮询
completed 已完成 调用下载接口
failed 任务失败 停止轮询并记录 error、请求编号和任务 ID
unknown 未识别到上游状态 暂停高频轮询,记录请求编号并稍后重查

建议每 10 至 15 秒查询一次,并在连续网络错误或 429/5xx 时采用指数退避。任务创建成功后只轮询原 id,不要重复提交同一个生成请求。

完成响应的关键字段示例:

{
  "id": "task_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "object": "video",
  "model": "wan3.0-video",
  "status": "completed",
  "progress": 100,
  "created_at": 1791590000,
  "completed_at": 1791590120
}

是否完成只看 status,不要用 completed_at 推断任务终态。响应还可能包含 metadata;下载时使用本站 /content 接口,不要依赖其中的临时结果地址。

下载视频#

仅在状态为 completed 后下载:

curl -sS https://www.yotopivot.top/v1/videos/<TASK_ID>/content \
  -H "Authorization: Bearer sk-xxxxxxxx" \
  -o output.mp4

成功时当前接口返回 HTTP 200 和完整视频内容。任务尚未完成时返回 400;任务不存在或不属于当前用户时返回 404。

当前公开契约不保证 HTTP Range 请求或 206 Partial Content。需要断点续传的客户端应先按普通完整下载处理。

价格#

以下为基础价格,按生成秒数计费:

模型 480P 720P 1080P
wan3.0-video ¥0.30/秒 ¥0.60/秒 ¥1.20/秒
wan3.0-video-prime ¥0.45/秒 ¥0.90/秒 ¥1.80/秒

分辨率倍率分别为 1、2、4。上面的 16:9 示例使用默认 480P,所以 5 秒 wan3.0-video 的基础费用是 ¥1.50,5 秒 wan3.0-video-prime 是 ¥2.25。

账号或分组折扣可能影响实际结算金额。最终费用以模型广场、任务记录和使用日志显示为准。

错误与重试#

任务处理错误通常使用顶层字段:

{
  "code": "invalid_request",
  "message": "wan3.0 video duration must be between 2 and 30 seconds; automatic duration is not supported",
  "data": null
}

鉴权、路由和下载阶段的错误通常使用 OpenAI 风格的包裹结构:

{
  "error": {
    "code": "model_not_found",
    "message": "No available channel for model wan3.0-video under the current group",
    "type": "new_api_error"
  }
}

错误外形取决于失败发生的层级,创建或查询请求也可能返回第二种结构。客户端应先判断 HTTP 状态码;业务错误码读取 code 或 error.code,错误消息读取 message 或 error.message。

HTTP 常见情况 建议
400 缺少模型或提示词;时长、分辨率、画幅不合法 修正请求参数,不要原样重试
401 密钥缺失、错误或已失效 重新检查 Authorization 请求头
403 密钥无权访问模型或分组 检查密钥的分组和模型限制
429 当前分组或上游负载饱和 延迟后指数退避,降低并发
503 当前分组没有可用模型渠道 保留请求编号,稍后重试或联系管理员

创建请求没有在本文中承诺幂等键。收到任务 ID 后再次发送 POST 可能产生第二个任务和第二笔费用。如果创建响应在网络中丢失,请先用已保存响应头中的 X-Oneapi-Request-Id 查询使用日志,确认是否已经创建任务;如果连响应头都没有收到,请按调用时间、模型名和当前密钥对应的使用日志核对。

当前只承诺已经验证的文生视频流程。不要依赖真实图生视频、多参考图、自动时长 -1、完整原生参数透传、同时强制指定分辨率和画幅,或 Range / 206 分段下载;这些能力完成单独适配和验收后会再更新文档。


九、Seedance 2.x 视频生成#

本章包含 Seedance 2.0 和 2.5 的完整调用说明、请求参数、参考素材、查询下载、价格与错误处理,也可阅读独立文档页。

本文说明如何在曜智枢调用 Seedance 2.0 和 2.5,完成文生视频、参考素材生成、查询及下载。请使用有「生视频」分组权限的站内 API 密钥;模型权限以当前密钥的 /v1/models 返回结果为准。

Seedance 基本信息#

项目 值
Base URL https://www.yotopivot.top
鉴权 Authorization: Bearer <YOTOPIVOT_API_KEY>
请求格式 application/json
推荐创建接口 POST /v1/videos
查询接口 GET /v1/videos/{id}
下载接口 GET /v1/videos/{id}/content
兼容创建接口 POST /v1/video/generations

使用本站控制台创建的站内 API 密钥。视频任务为异步处理:创建得到任务 ID,再查询状态,完成后下载。

模型 模型名 API 支持的分辨率
Seedance 2.0 doubao-seedance-2-0-260128 480p、720p、1080p、4k
Seedance 2.5 doubao-seedance-2-5-260628 480p、720p、1080p

调用前可用 GET /v1/models 核对当前密钥是否有权访问模型。工作流页面的时长、分辨率及参考附件选项可能少于 API 支持范围;以下以直接调用 API 为准。

Seedance 创建文生视频任务#

先使用 5 秒、720p 开始测试。以下为 Bash / curl 示例:

curl -sS https://www.yotopivot.top/v1/videos \
  -H "Authorization: Bearer <YOTOPIVOT_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao-seedance-2-0-260128",
    "prompt": "海边悬崖,夕阳落入海平面,镜头缓慢向前推进,电影感",
    "duration": 5,
    "size": "720p",
    "metadata": {
      "ratio": "16:9",
      "generate_audio": false
    }
  }'

成功响应的关键字段示例:

{
  "id": "task_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "object": "video",
  "model": "doubao-seedance-2-0-260128",
  "status": "queued",
  "progress": 0
}

保存响应中的公开 id,后续查询和下载均使用它。不要根据 ID 的外形拼接其他接口地址。

Seedance 请求参数#

Seedance 统一格式#

字段 类型 必填 说明
model string 是 上表中的完整模型名
prompt string 是 非空视频描述
duration integer 否 生成秒数,默认 5;也可使用字符串 seconds,例如 "5"
size string 否 分辨率,默认 720p
metadata.ratio string 否 默认 adaptive;还支持 16:9、9:16、1:1、4:3、3:4、21:9
metadata.generate_audio boolean 否 是否生成音频;显式 false 会保留
metadata.content array 否 参考图片、视频或音频,见下节
metadata.seed integer 否 随机种子;显式 0 会保留
metadata.watermark boolean 否 是否添加水印

建议时长为 4–15 秒,这不是保证所有模型均接受的硬性范围。本站接口接受 1–3600 秒的正整数,具体模型仍可能拒绝不支持的时长;首次测试推荐 5 秒。-1 等自动时长写法不受支持。

Seedance 的 size 表示分辨率,画幅单独放在 metadata.ratio。不要把 Wan 的 "size":"16:9" 写法直接用于这两款模型。768P 会兼容转换为 720p;Seedance 2.5 的 4k 请求会在提交前被拒绝。

Seedance 内容数组格式#

也可把 content、resolution、ratio、generate_audio 等参数直接放在顶层。下面的纯文本请求与前面的统一格式等价:

{
  "model": "doubao-seedance-2-0-260128",
  "content": [
    {"type": "text", "text": "海边悬崖,夕阳落入海平面,镜头缓慢向前推进,电影感"}
  ],
  "duration": 5,
  "resolution": "720p",
  "ratio": "16:9",
  "generate_audio": false
}

每个请求选用一种格式更容易排查。混用时,prompt 优先于 content 内的文本;size 优先于 resolution;duration 优先于 seconds。顶层内容参数优先于 metadata 内同名字段。省略 prompt 时,content 至少要含一项非空文本。

Seedance 使用参考图片、视频和音频#

参考素材必须是可公开读取的 HTTP(S) 地址,或由管理员提供且适用于当前服务的 asset://asset-... 素材 ID。URL 在任务处理期间应持续有效。当前不接受本地文件上传、文件路径或 data: / Base64 URI。

{
  "model": "doubao-seedance-2-5-260628",
  "prompt": "参考图片中的场景与视频中的镜头运动,生成一段自然连贯的短片",
  "duration": 5,
  "size": "720p",
  "metadata": {
    "ratio": "16:9",
    "generate_audio": true,
    "content": [
      {
        "type": "image_url",
        "image_url": {"url": "https://your-public-cdn.example/scene.png"},
        "role": "reference_image"
      },
      {
        "type": "video_url",
        "video_url": {"url": "https://your-public-cdn.example/motion.mp4"},
        "role": "reference_video"
      }
    ]
  }
}

示例素材域名为占位地址,调用时请换成实际可读取的素材 URL。

素材 type URL 字段 role
图片 image_url image_url.url reference_image、first_frame 或 last_frame
视频 video_url video_url.url reference_video
音频 audio_url audio_url.url reference_audio

每项只能包含一个与 type 对应的媒体字段。省略 role 时自动使用该素材类型的 reference_* 角色。使用 asset:// 时仅将相应 URL 值替换为管理员提供的素材 ID;本站尚未开放素材库创建或管理接口。

Seedance 查询状态#

curl -sS "https://www.yotopivot.top/v1/videos/<TASK_ID>" \
  -H "Authorization: Bearer <YOTOPIVOT_API_KEY>"
status 含义 下一步
queued 排队中 继续轮询
in_progress 生成中 继续轮询
completed 已完成 下载视频
failed 已失败 停止轮询并记录错误

建议每 5–10 秒查询一次。遇到 429、网络错误或 5xx 时增加间隔并采用指数退避。查询使用创建任务的同一用户身份;收到任务 ID 后,只查询原任务,不要反复发送创建请求。

完成响应的关键字段示例:

{
  "id": "task_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "object": "video",
  "model": "doubao-seedance-2-0-260128",
  "status": "completed",
  "progress": 100
}

以 status 判断是否完成,其他时间或进度字段不能替代终态。任务响应可能包含临时结果地址;请使用下面的本站下载接口。

Seedance 下载视频#

仅在任务状态为 completed 后调用:

curl -sS "https://www.yotopivot.top/v1/videos/<TASK_ID>/content" \
  -H "Authorization: Bearer <YOTOPIVOT_API_KEY>" \
  -o output.mp4

视频结果地址有有效期,生成后请及时下载并自行保存。本站下载接口不表示永久保存视频。当前不保证 HTTP Range 或 206 Partial Content,客户端应按完整下载处理。

Seedance 价格#

标准价格如下表,单位均为人民币 / 百万 token。表中「有视频输入」指请求包含参考视频;参考图片、参考音频或开启音频生成不会单独改变这个价阶。

模型 输出分辨率 无视频输入 有视频输入
Seedance 2.0 480p / 720p ¥46 / M token ¥28 / M token
Seedance 2.0 1080p ¥51 / M token ¥31 / M token
Seedance 2.0 4k ¥26 / M token ¥16 / M token
Seedance 2.5 480p / 720p ¥70 / M token ¥42 / M token
Seedance 2.5 1080p ¥77 / M token ¥46 / M token

Seedance 2.5 不支持 4k。表中为分组倍率 1 的基础价;账号或分组折扣以模型广场和实际结算记录为准。

任务创建时会按模型、分辨率、时长及是否含参考视频估算并预扣额度。完成后使用实际 usage.total_tokens 多退少补;失败任务按任务退款流程退回预扣额度。

token 数大致随画面像素数、24 fps 和计费时长增加。有视频输入时计费时长包含输入与输出视频;预扣无法得知实际输入时长时,先按与输出相同时长估算。画幅、实际素材时长及额外帧会影响最终用量,所以「每秒价格」不是固定值。

例如无视频输入的 720p、16:9、5 秒视频,基础估算约为 108,000 token:2.0 约 ¥4.968,2.5 约 ¥7.56。以上仅用于理解价格,不是固定任务报价,最终请以本站任务记录和使用日志为准;账号或分组折扣也可能影响实际金额。

Seedance 错误与重试#

情况 处理
模型未出现在 /v1/models 检查密钥分组及模型限制
分辨率、画幅、时长或素材角色不合法 修正参数后重新提交
Seedance 2.5 请求 4k 改用 480p、720p 或 1080p
本地文件或 data: URI 被拒绝 改用任务期间可读取的 HTTP(S) 素材 URL
素材无法读取或素材 ID 无效 检查 URL 有效期、公开可达性或向管理员核对素材 ID
429、网络中断或 5xx 查询请求退避重试;创建请求先核对是否已生成任务
任务状态为 failed 保存任务 ID、错误内容和请求编号,核对使用日志中的退款记录

客户端应同时处理顶层 code / message 与 error.code / error.message 两类错误结构,并首先判断 HTTP 状态码。

创建接口未承诺幂等键。若创建响应丢失,盲目重发可能产生额外任务及费用。先用响应头中的 X-Oneapi-Request-Id 核对使用日志;未收到响应头时,按调用时间、模型名和当前密钥的记录核对。

需要反馈时提供公开任务 ID、请求编号、调用时间和脱敏请求参数,请勿发送完整 API 密钥。


十、SDK 与 curl 示例#

curl(非流式)#

curl https://www.yotopivot.top/v1/chat/completions \
  -H "Authorization: Bearer sk-xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "模型名",
    "messages": [
      {"role": "system", "content": "你是一个简洁的助手"},
      {"role": "user", "content": "用三句话解释什么是 API 中转"}
    ],
    "temperature": 0.7
  }'

curl(流式)#

在请求体里加 "stream": true:

curl -N https://www.yotopivot.top/v1/chat/completions \
  -H "Authorization: Bearer sk-xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "模型名",
    "messages": [{"role": "user", "content": "数到十"}],
    "stream": true
  }'

返回是 SSE 流,每行以 data: 开头,最后以 data: [DONE] 结束。

Python(OpenAI 官方 SDK)#

from openai import OpenAI

client = OpenAI(
    base_url="https://www.yotopivot.top/v1",
    api_key="sk-xxxxxxxx",
)

resp = client.chat.completions.create(
    model="模型名",
    messages=[{"role": "user", "content": "你好"}],
)
print(resp.choices[0].message.content)

流式读取:

stream = client.chat.completions.create(
    model="模型名",
    messages=[{"role": "user", "content": "数到十"}],
    stream=True,
)
for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end="", flush=True)

Node / TypeScript(OpenAI 官方 SDK)#

import OpenAI from 'openai'

const client = new OpenAI({
  baseURL: 'https://www.yotopivot.top/v1',
  apiKey: 'sk-xxxxxxxx',
})

const resp = await client.chat.completions.create({
  model: '模型名',
  messages: [{ role: 'user', content: '你好' }],
})
console.log(resp.choices[0].message.content)

只要兼容 OpenAI,就在这两处填对#

绝大多数第三方库 / 框架只需两个设置:

base_url = https://www.yotopivot.top/v1     # 注意结尾的 /v1
api_key  = sk-xxxxxxxx                      # 你的密钥

模型名不要用示例里的占位符,先从 /v1/models 里选。


十一、错误响应与错误码#

响应结构#

曜智枢自身拦截产生的错误是 OpenAI 风格的结构:

{
  "error": {
    "message": "无效的令牌 (request id: 202609200202124569850508268d9d6Ub6AWfdu)",
    "type": "new_api_error",
    "code": "insufficient_user_quota"
  }
}

常见错误码速查#

HTTP code 典型提示 原因与处理
401 空 无效的令牌 / Invalid token 密钥抄错、被禁用或已删除。回「API 密钥」页核对并重新复制
401 空 未提供令牌 / 未提供令牌 请求没带鉴权信息。检查 Authorization、x-api-key 或 ?key=
403 空 用户已被封禁 账号被停用,请联系站点管理员
403 access_denied 您的 IP 不在令牌允许访问的列表中 密钥设置了 IP 白名单,当前出口 IP 不在范围。改用正确网络或在密钥里补上 IP
403 空 无权访问 x 分组 / 分组 x 已被弃用 密钥的分组当前不可用,换个分组或留空跟随账号默认分组
403 空 该令牌无权访问模型 x 密钥开了模型限制且不含该模型。改模型名或调整密钥的允许列表
403 insufficient_user_quota 用户额度不足, 剩余额度: … 账号额度不足。到控制台「钱包」查看并补充
400 空 未指定模型名称,模型名称不能为空 请求体里缺 model 字段
503 model_not_found 分组 x 下模型 y 无可用渠道 该模型在当前分组暂时没有可用来源。换模型或稍后重试
400 model_not_found 当前模型或当前分组中的渠道未授权图片生成能力 选用的模型不支持生图。换支持生图的模型,并确认端点用的是图片接口
429 空 您已达到请求数限制:n 分钟内最多请求 m 次 触发限流。降低频率,或改为串行发送、加退避重试
429 空 您已达到总请求数限制:n 分钟内最多请求 m 次,包括失败次数 同上,且失败请求也计入。先修掉报错请求再重试
501 api_not_implemented API not implemented 调用了暂不支持的端点。改用受支持端点
404 空 Invalid URL (GET /v1/xxx) 请求路径写错(多为重复或漏写 /v1)。核对端点拼写

其他状态码#

500 / 502 / 503 还有一类是上游模型服务的临时故障,表现为调用一个本来正常的模型突然失败。这类错误通常重试即可恢复;如果连续多次失败,按第十一章的模板反馈。


十二、常见问题排查#

按状态码定位

流式输出中断

先确认客户端支持 SSE,并且没有代理或网关缓冲响应。若用的是自建反向代理,需要关闭对 text/event-stream 的缓冲。

图片生成失败

  1. 确认模型本身支持生图(在模型广场看该模型的说明与端点类型);
  2. 确认调的是 /v1/images/generations 或 /v1/images/edits,不是对话端点;
  3. 若提示渠道未授权图片生成能力,说明当前分组没有生图渠道,换分组或换模型。

提示内容被拦截

提示词或生成结果触发上游安全策略时会被拦截,对应错误码可能为 prompt_blocked 或 sensitive_words_detected。调整措辞后重试,不要靠改参数绕过。

想知道自己用了多少


十三、获取帮助#

遇到问题请带上以下信息,可以少走几个来回:

  1. X-Oneapi-Request-Id(响应头,或错误信息里 request id: 后面那串);
  2. 出现时间(精确到分钟);
  3. 调用的接口路径与模型名;
  4. HTTP 状态码与完整错误信息;
  5. 使用的客户端或 SDK 名称与版本。

不要在反馈里贴完整密钥;需要核对时说明「密钥前 8 位」即可。