漫小白API 文档
下载完整 .md ↓

视频任务、轮询与下载

视频任务有三个不同阶段:提交被受理、生成达到终态、结果成功下载。你的应用应分别记录它们。用户关闭页面、客户端超时或下载失败,都不能直接当作“没有生成”或“任务已取消”。

1. 创建与保存任务

POST /v1/videos 创建一个任务。请求头、model 和请求体见对应型号章节。正常受理返回 JSON 任务对象,主要字段如下。

字段 类型 含义 / 建议
id string 本站任务 ID;一收到就持久化保存
task_id string,可选 旧客户端兼容字段;新接入优先 id
object string 通常为 video
model string 公开模型名
status string 任务状态,不能只看 HTTP 200
progress integer 通常 0–100;是进度提示,不是剩余时间
created_at integer Unix 秒时间戳,不是毫秒
completed_at integer,可选 完成时间;未完成可能省略
expires_at integer,可选 若提供则表示相应过期提示,不能据此承诺永久可查
seconds string,可选 时长回显;不能据此认定实际容器时长
size / resolution string,可选 规格回显;以实际媒体为准
usage object,可选 型号相关的公开用量,可能只在完成后出现
error object,可选 失败说明;读取 message 与存在时的 code/type

不要要求所有可选字段同时存在。兼容旧查询结果时可读取 data.id、data.task_id 等历史封装,但统一新接入应优先顶层 id。示例客户端会检查 ID 格式和查询响应身份。

建议自己的数据库记录:业务唯一 ID、本站入口、model、Key 的内部引用、分组、参数摘要、提交时间、task_id、最近状态、最后查询时间、下载路径和账单核对状态。不要把完整 Key 存进任务日志或分享给前端。

2. 查询状态

GET /v1/videos/{task_id},携带原 API Key。

bash
curl --fail-with-body --max-time 30 \
  "https://openpix.cc/v1/videos/$MXB_VIDEO_TASK_ID" \
  -H "Authorization: Bearer $MXB_API_KEY"
统一状态 含义 应做什么
queued 已受理、等待执行 保留 ID,间隔查询
in_progress 处理中 继续查询,不再创建相同任务
completed 任务报告成功 开始下载、校验视频文件
failed 任务报告失败 停止正常轮询,读错误并核对账单
unknown 或未识别值 暂无法按已有状态处理 保存原响应摘要,有界续查或人工核对,不能当成功

兼容旧任务时,可能遇到 pending、submitted、processing、running、success、succeeded、done、failure、error、cancelled、canceled、expired 等值。客户端可以将已知成功/失败别名归一,但不要对任意未知字符串做成功判断。

普通成功结果结构示意:

json
{
  "id": "task_example_video_001",
  "object": "video",
  "model": "dreamina-seedance-2-0-mini-260615",
  "status": "completed",
  "progress": 100,
  "seconds": "5",
  "usage": {"completion_tokens": 40594, "total_tokens": 40594}
}

数值与 ID 为示意;不是任意 5 秒视频的固定用量。按秒/按次视频可能没有这一套 usage。

3. 轮询频率与截止时间

建议初始每 5 秒查询一次,多个任务加入随机抖动。将三种超时分别配置:

超时 示例设置 到期后含义
单次创建连接 120 秒 提交结果可能未知,不能自动重发
单次 GET 查询 30 秒 仅这一次查询失败,继续使用原 ID
总等待时间 30 分钟 客户端暂停等待,可稍后继续查询

这些是示例配置,不是生成时延保证或服务 SLA。任务可能较慢,不能因 progress 停在某个数字或多次不变就重发 POST。

429 或临时 5xx 可对 GET 做有界退避。服务器提供 Retry-After 时尊重其值;未提供时逐步增加间隔并设置上限。401/403 应先修复凭据或权限,400 参数错误不能原样重试。

4. 下载主视频

GET /v1/videos/{task_id}/content 返回视频二进制。此入口需要本站 API Key;不要直接把它当作浏览器 video 标签的免鉴权 URL。

bash
curl --fail --max-time 180 \
  "https://openpix.cc/v1/videos/$MXB_VIDEO_TASK_ID/content" \
  -H "Authorization: Bearer $MXB_API_KEY" \
  --output result.mp4

下载到临时文件(如 .part),校验成功后再替换正式文件。至少检查:

  1. HTTP 为预期的 200,或断点请求的 206。
  2. 响应确为视频,而不是被保存成 .mp4 的 JSON/HTML 错误页。
  3. 文件非空,大小合理,能被实际播放器或媒体工具解码。
  4. 业务要求精确尺寸、时长、帧率时,读取真实媒体信息,而不是只看请求参数。

结果链接可能临时有效。完成后及时保存到自己的存储,不要承诺本站永久托管。

5. HEAD 与 Range

完成后可读取响应头:

bash
curl --head --fail --max-time 30 \
  "https://openpix.cc/v1/videos/$MXB_VIDEO_TASK_ID/content" \
  -H "Authorization: Bearer $MXB_API_KEY"

读取开头一段数据:

bash
curl --fail --max-time 60 \
  "https://openpix.cc/v1/videos/$MXB_VIDEO_TASK_ID/content" \
  -H "Authorization: Bearer $MXB_API_KEY" \
  -H 'Range: bytes=0-1048575' \
  --output first-part.bin

支持部分内容时返回 206 与 Content-Range。若返回 200,应按完整文件处理,不能直接追加到已有断点文件后面。416 表示范围不适用,重新检查当前资源长度。一次只发送一个连续字节范围;本手册不承诺多段 Range。

HEAD 不能代替任务状态查询。结果尚未准备好时下载接口可能返回 400;不存在或不可访问任务可能 404,资源失效可能 410,临时下载问题可能 5xx。都先查询原任务,不应立即创建新视频。

6. 可用制品与末帧

某些型号可附带末帧。完成后查询:

bash
curl --fail-with-body --max-time 30 \
  "https://openpix.cc/v1/tasks/$MXB_VIDEO_TASK_ID/artifacts" \
  -H "Authorization: Bearer $MXB_API_KEY"

只使用实际返回列表中的制品。Mini/Fast 请求 return_last_frame=true 且任务实际返回末帧时,才会存在 last_frame。其他型号不应假设有封面、字幕或缩略图。

制品内容通用入口为 GET /v1/tasks/{task_id}/artifacts/{artifact_key}/content。artifact_key 使用实际列表值,不自行猜测。带本站访问签名的返回链接应作为有访问能力的临时链接保护,不公开日志或长期缓存。

对于任何响应里的 URL:先校验 HTTPS 与预期来源,再决定访问方式。本站 Key 只发送到固定本站 API origin;访问外部媒体 URL 不携带本站 Key。示例客户端直接使用本站内容入口,并拒绝自动跨地址重定向。

7. 结果未知、失败与重新提交

情况 如何恢复
POST 成功,已有 ID 始终查询原 ID
POST 断线/超时,没拿到 ID 标记“提交结果未知”;查看控制台任务与调用记录,避免自动重提
GET 查询临时失败 保存 ID,稍后重试同一次查询
客户端总等待到期 停止本次等待,保留 ID,之后续查
status=failed 读错误、核对账单;修正原因后再决定创建新任务
completed,但下载失败 重试原 content 入口;不要重新生成
已下载但文件损坏 校验下载响应和文件完整性,重新下载原任务

目前没有跨所有视频型号统一可依赖的客户端 Idempotency-Key 去重承诺;同样的提示词也不构成自动去重。示例程序在发送 POST 前先记录“提交结果未知”,避免进程中断后无意重复收费。

没有公开统一的 DELETE 取消任务能力。停止轮询、关闭页面、撤销请求或删除自己保存的状态文件,不等于服务端停止生成。

8. 错误与排查顺序

情况 检查重点
401 Bearer 格式、Key 是否有效/过期/撤销
403 或权限提示 Key 分组、模型限制、账户权限
model_not_found / 无可用模型 完整型号、当前模型目录、型号参数、实时可用性
参数错误 所选型号的时长、分辨率、参考素材字段及互斥规则
素材失败 URL 是否真正返回媒体、是否需要 Cookie、是否过期、格式是否兼容
额度不足 账户余额、Key 额度及提交时所需的预留额度
404 查询任务 ID、入口、账户/原 Key、任务是否仍在可访问范围
200 且 failed 任务层失败,不能当 HTTP 调用成功就忽略
429 / 临时 5xx GET 退避;POST 先确定是否已经受理

定位时提供:公开 model、分组名称、本站任务 ID、请求时间与时区、HTTP 状态、本站 request_id(如有)、错误摘要与已脱敏参数。不要提供完整 Key、Cookie、私有素材签名或整段 Authorization。

9. 账单核对

按次、按秒、视频 Token 是三种独立计费方式。提交预留、完成补扣或退款可能分成多条记录,应关联同一个任务合计核对。任务进度字段、HTTP 状态、客户端的超时异常,都不是独立的收退款凭证。

更换 Key 分组会影响新提交任务的权限与报价,不能靠在查询 JSON 中加 group 改变已受理任务费用。具体规则见分组与计费。

漫小白 API 接入文档 · 2026-11-02 更新 · 当前目录与接口契约核对
模型权限与费用以当前模型广场及账单为准。

复制 Markdown

浏览器未允许自动复制,内容已选中,可按 Ctrl+C / ⌘C 复制。