SHANHUI API
统一模型与视频 API
通过一个域名接入模型查询、OpenAI 兼容协议、Anthropic Messages 与 Seedance 异步视频任务。
https://ai.shanhui.tvHTTPS/v1/models 返回对应文本模型时才可调用。开始使用
快速开始
先验证密钥并读取模型,不要从文档示例猜测模型名称。
- 创建密钥登录闪绘控制台创建
sk-...API 密钥。 - 保存到服务端不要把密钥写入浏览器代码、公开仓库或 URL。
- 查询模型从响应
data[].id选择当前密钥有权访问的模型。
export SHANHUI_API_KEY="替换为你的闪绘 API 密钥"
curl --fail-with-body --show-error "https://ai.shanhui.tv/v1/models" \
-H "Authorization: Bearer $SHANHUI_API_KEY"base_url 使用 https://ai.shanhui.tv/v1;Seedance 原生接口使用完整前缀 https://ai.shanhui.tv/doubao/api/v3。开始使用
鉴权与 API 密钥
所有请求都必须携带当前闪绘密钥。
Authorization: Bearer YOUR_SHANHUI_API_KEY
Content-Type: application/jsonAnthropic Messages 同时接受 x-api-key。密钥权限还受账户状态、分组、模型白名单、额度和有效期限制。任务查询必须使用任务所属用户的密钥。
开始使用
模型目录
下面是 2026-10-13 在生产环境查询到的完整模型列表。
| 模型 ID | 主要用途 |
|---|---|
doubao-seedance-2-0-260128 | Seedance 视频任务 |
doubao-seedance-2-0-fast-260128 | Seedance 快速视频任务 |
doubao-seedance-2-0-mini-260615 | Seedance Mini 视频任务 |
doubao-seedance-2-5-260628 | Seedance 2.5 视频任务 |
模型会随生产渠道能力变化并自动同步。客户端仍应在运行时调用 GET /v1/models,因为令牌白名单可能让不同用户看到不同结果。
文本协议
Chat Completions
/v1/chat/completions请求与响应遵循 OpenAI Chat Completions 格式。将占位模型替换成当前密钥返回的对话模型;不要把 Seedance 模型发送到 Chat 端点。
curl --fail-with-body --show-error "https://ai.shanhui.tv/v1/chat/completions" \
-H "Authorization: Bearer $SHANHUI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "MODEL_ID_FROM_V1_MODELS",
"messages": [{"role": "user", "content": "你好"}],
"stream": false
}'流式输出将 stream 设为 true,响应使用 SSE;读取 choices[].delta 直到收到 [DONE]。
文本协议
Anthropic Messages
/v1/messages仅当模型列表返回可用于 Anthropic 协议的 Claude 模型时调用。响应的 content 是内容块数组,不要按 OpenAI 的 choices 解析。
curl --fail-with-body --show-error "https://ai.shanhui.tv/v1/messages" \
-H "x-api-key: $SHANHUI_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "CLAUDE_MODEL_ID_FROM_V1_MODELS",
"max_tokens": 256,
"messages": [{"role": "user", "content": "你好"}]
}'视频 API
视频任务流程
Seedance 是异步任务。创建成功只表示服务已受理,不能立即当作生成成功。保存顶层 id,再用同一用户的密钥查询。
视频 API
Seedance 原生接口
/doubao/api/v3/contents/generations/taskscurl --fail-with-body --show-error \
"https://ai.shanhui.tv/doubao/api/v3/contents/generations/tasks" \
-H "Authorization: Bearer $SHANHUI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "doubao-seedance-2-0-mini-260615",
"content": [{
"type": "text",
"text": "清晨的森林,阳光穿过树叶,镜头缓慢向前推进。"
}],
"duration": 4,
"resolution": "480p",
"ratio": "16:9",
"generate_audio": false,
"watermark": false,
"execution_expires_after": 3600
}'创建响应
响应直接返回任务对象,不会额外包裹一层 data。
{
"id": "task_YOUR_TASK_ID",
"model": "doubao-seedance-2-0-mini-260615",
"status": "queued",
"created_at": 1791734195
}常用字段
| 字段 | 类型 | 说明 |
|---|---|---|
model | string | 必填,使用模型列表中的准确 ID。 |
content | array | 必填,包含文本和可选参考素材。 |
duration | integer | 输出时长;支持范围由模型决定。 |
resolution | string | 480p、720p、1080p 或模型支持值。 |
ratio | string | 例如 16:9、9:16、1:1、adaptive。 |
generate_audio | boolean | 是否请求生成音频,受模型限制。 |
watermark | boolean | 是否请求水印。 |
execution_expires_after | integer | 任务有效时间,单位秒,不是 HTTP 超时。 |
视频 API
参考图片与视频
在原生接口的 content 中加入参考素材。URL 必须可由生成服务直接访问,不能使用本机路径、localhost 或需要登录的页面地址。
{
"model": "doubao-seedance-2-0-mini-260615",
"content": [
{"type": "text", "text": "参考角色外观与动作,生成自然挥手画面。"},
{
"type": "image_url",
"role": "reference_image",
"image_url": {"url": "https://example.com/character.jpg"}
},
{
"type": "video_url",
"role": "reference_video",
"video_url": {"url": "https://example.com/motion.mp4"}
}
],
"duration": 4,
"resolution": "480p",
"ratio": "16:9"
}图片也可使用与真实编码一致的 Base64 data URL。素材组合、大小、格式和审核规则由模型及生成服务决定;任务进入 queued 不表示素材准备一定成功。
视频 API
素材模式
需要按素材流程处理输入时,可添加 image_source_mode: "asset" 或 video_source_mode: "asset"。该模式仍使用公网可访问素材。
{
"image_source_mode": "asset",
"video_source_mode": "asset"
}视频 API
OpenAI 视频接口
/v1/videos使用 JSON 创建视频任务。Seedance 扩展参数放在 metadata 中。
curl --fail-with-body --show-error "https://ai.shanhui.tv/v1/videos" \
-H "Authorization: Bearer $SHANHUI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "doubao-seedance-2-0-mini-260615",
"prompt": "清晨的森林,镜头缓慢向前推进。",
"seconds": 4,
"metadata": {
"resolution": "480p",
"ratio": "16:9",
"generate_audio": false,
"watermark": false,
"execution_expires_after": 3600
}
}'/v1/videos/{task_id}OpenAI 视频状态使用 in_progress 和 completed。需要原生状态、实际用量或结构化失败详情时,使用同一个任务 ID 查询原生 v3 接口。
视频 API
查询任务与结果
/doubao/api/v3/contents/generations/tasks/{task_id}export SHANHUI_TASK_ID="task_替换为创建响应中的ID"
curl --fail-with-body --show-error \
"https://ai.shanhui.tv/doubao/api/v3/contents/generations/tasks/$SHANHUI_TASK_ID" \
-H "Authorization: Bearer $SHANHUI_API_KEY"建议每 5–10 秒查询一次。只有外层状态为 succeeded 才表示完整流程成功;不要因为内部生成步骤完成就提前结束轮询。
成功结果
{
"id": "task_YOUR_TASK_ID",
"status": "succeeded",
"model": "doubao-seedance-2-0-mini-260615",
"content": {
"video_url": "https://media.example/result.mp4?temporary-signature=..."
},
"duration": 4,
"resolution": "480p",
"ratio": "16:9",
"usage": {
"completion_tokens": 40594,
"total_tokens": 40594
}
}视频地址读取 content.video_url,实际计费用量读取 usage.completion_tokens。未知状态必须保留原始响应,不能按成功处理。
用量与排错
素材失败与错误详情
任务查询返回 HTTP 200,也可能在业务层显示 status: failed。
排错时优先使用原生 v3 查询,并同时检查 error 与 failure_detail。
{
"id": "task_YOUR_TASK_ID",
"status": "failed",
"error": {
"code": "task_failed",
"message": "第 1 张参考图片格式、内容或大小不符合要求。"
},
"failure_detail": {
"code": "material_invalid",
"stage": "material_validation",
"provider_code": null,
"materials": [{
"type": "image",
"index": 1,
"content_index": null,
"index_scope": "normalized_sources"
}],
"message": "请更换有效参考图片后重试。"
}
}| 字段 | 含义 |
|---|---|
stage: material_validation | 素材格式、内容或规则校验失败。 |
stage: material_preparation | 素材下载、解析或准备阶段失败。 |
index_scope | 说明 index 使用的序号范围,不能直接当作 content 数组下标。 |
provider_code | 服务方没有提供时可能为 null。 |
OpenAI 视频查询可能只返回简化后的错误;需要素材级详情时使用原生查询。
用量与排错
计费规则
提交时 100% 预扣,任务结束后按实际用量多退少补。
- 预估 Token:
(输入秒数 + 输出秒数) × 宽 × 高 × 24 / 1024。 - 提交任务时按完整预估费用预扣,不再使用 30% 比例。
- 成功后以
usage.completion_tokens和实际参数结算。 - 失败任务退回预扣;实际用量缺失时保留预估费用,避免错误按零结算。
- 参考视频单价由计费表达式选择一次,不会重复应用折扣。
| 模型 | 条件 | 人民币 / 百万 Token |
|---|---|---|
2.0 | 480p/720p,无参考视频 / 有参考视频 | ¥34.50 / ¥21.00 |
2.0 | 1080p,无参考视频 / 有参考视频 | ¥38.25 / ¥23.25 |
2.0 | 4K,无参考视频 / 有参考视频 | ¥19.50 / ¥12.00 |
2.0 Fast | 无参考视频 / 有参考视频 | ¥27.75 / ¥16.50 |
2.0 Mini | 无参考视频 / 有参考视频 | ¥17.25 / ¥10.50 |
2.5 | 480p/720p,无参考视频 / 有参考视频 | ¥56.00 / ¥33.60 |
2.5 | 1080p,无参考视频 / 有参考视频 | ¥61.60 / ¥36.80 |
最终扣费以控制台消费记录为准。创建请求超时不表示任务未创建;若已拿到任务 ID,应继续查询,不要直接重复提交。
用量与排错
错误处理
| 状态或现象 | 检查方向 |
|---|---|
| 400 | 检查 JSON 类型、必填字段、模型、时长、分辨率和素材格式。 |
| 401 | 确认密钥属于闪绘,Bearer 或 x-api-key 格式正确,密钥未过期。 |
| 403 | 检查余额、用户状态、令牌模型权限、分组和 IP 限制。 |
| 404 | 检查接口路径、任务 ID、模型名称和任务所属用户。 |
| 429 | 降低轮询频率并退避;创建请求不要未经核对就自动重试。 |
| 5xx | 保留请求时间、模型、任务 ID 和脱敏响应,避免无条件重复生成。 |
| failed / expired | 读取 error 和 failure_detail,停止轮询。 |
用量与排错
兼容范围
| 能力 | 状态 | 说明 |
|---|---|---|
| 模型查询 | 已验证 | 生产域名返回当前 Token 的 4 个完整模型 ID。 |
| Seedance 原生创建与查询 | 协议已验证 | 顶层响应、原生状态、结果与实际用量字段已适配。 |
| OpenAI 视频创建与查询 | 协议已验证 | 扩展参数放在 metadata。 |
| Chat / Anthropic | 等待模型 | 路径可用;当前生产环境没有文本或 Claude 模型。 |
| 付费成功任务 | 未实测 | 未主动发起付费生成,成功链路仍需首个真实任务确认。 |