开发者

文生视频 API

一次 POST,把一句话变成一条带原生声音的短片。跑在我们自己的显卡上,不是转手别人的账号:MiniMax H3、20 步、不挂蒸馏加速。按成片秒数计费 —— 每秒 $0.08,再无别的费用。

三步开始

1

领一把 key

登录后到账户页新建 API 密钥,只显示一次,记得当场存好。这把 key 同时能调导演 API。

2

充值

同一个页面预付积分。1 积分 = $0.01,不过期。

3

开始调用

POST 一句提示词,立刻拿到 job_id,轮询到出片。出片以分钟计 —— 请按「任务」来写,别按「请求」来写。

去我的账户 先在网页上试一条

怎么收费

成片每秒 8 积分。没有单次调用费,没有分辨率档位,失败不收费。

时长积分约合出片耗时
4 秒32$0.32约 3 分钟
8 秒64$0.64约 8 分钟
10 秒80$0.80约 10 分钟
15 秒120$1.20约 17 分钟

三种模式同价。参考模式多出来的是约 25 秒的固定开销,不是倍数 —— 它占 4 秒片的 10%、15 秒片的 2%,为它加价等于自己编一个数。提交时预扣,成功时预扣即为实扣;失败或取消当分钟全额退回。出片耗时是这张卡上的实测值,是估计不是承诺 —— 真正作数的是返回里的 deliver_by。

三种出片方式

同一个模型、同一个价、同一个端点,靠 mode 选。

mode做什么要给什么
text一句话出片。默认值,不传 mode 就是它。prompt
animate让一张照片动起来。给第一帧;再给一张最后一帧,它就在两张之间运动。first_frame,可选 last_frame
cast让指定的人 / 物 / 画风出现在片子里。提示词里用 <Picture 1>、<Picture 2> 指代。ref_images:1~4 张图

当前开放哪些模式,以 GET /v1/models 的返回为准。我们是一个一个放开的;没开的模式会明确返回 mode_unavailable,不会假装能用。

要等多久,说实话

提交一个任务

curl -X POST https://spaceskills.shop/v1/videos \
  -H "Authorization: Bearer $SPACESKILLS_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: my-clip-0001" \
  -d '{
    "prompt": "A red paper boat drifting on a calm pond at sunrise, soft golden light, gentle ripples on the water, slow push-in, cinematic",
    "duration_sec": 5
  }'
HTTP/1.1 202 Accepted
{
  "job_id": "vid_8Qk2ZrX1c0Nn",
  "status": "queued",
  "model": "h3/768p",
  "duration_sec": 5,
  "credits_held": 40,
  "balance": 460,
  "queue_position": 2,
  "est_render_sec": 168,
  "deliver_by": "2026-09-09T14:31:07.000Z",
  "poll": "/v1/videos/vid_8Qk2ZrX1c0Nn"
}

返回 202,带 job_id 和预扣的积分。带上 Idempotency-Key,重试的 POST 会返回同一个任务,不会扣第二次钱。

curl https://spaceskills.shop/v1/videos/vid_8Qk2ZrX1c0Nn \
  -H "Authorization: Bearer $SPACESKILLS_API_KEY"
{
  "job_id": "vid_8Qk2ZrX1c0Nn",
  "status": "succeeded",
  "duration_sec": 5,
  "seed": 774512900183,
  "credits_held": 0,
  "credits_charged": 40,
  "output": {
    "url": "https://media.spaceskills.shop/relay/vid_8Qk2ZrX1c0Nn.mp4",
    "stored": true
  },
  "error": null,
  "created_at": "2026-09-09T14:21:44.910Z",
  "updated_at": "2026-09-09T14:25:12.338Z"
}

status 有五种:queued、running、succeeded、failed、cancelled。succeeded 时 output.url 就是已经混好音的成品 MP4。

图怎么传

和导演 API 同一套写法:每张图要么内联 base64,要么给一个我们去拉的 https 地址。

# cast: put a specific face, object or look in the shot
curl -X POST https://spaceskills.shop/v1/videos \
  -H "Authorization: Bearer $SPACESKILLS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "mode": "cast",
    "prompt": "The woman from <Picture 1> walks slowly through a rainy neon street at night, reflections on wet asphalt, rain and distant traffic, slow tracking shot",
    "duration_sec": 6,
    "ref_images": [
      { "name": "her.jpg", "url": "https://example.com/her.jpg" }
    ]
  }'

# animate: start from a photo
curl -X POST https://spaceskills.shop/v1/videos \
  -H "Authorization: Bearer $SPACESKILLS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "mode": "animate",
    "prompt": "The lake ripples as the sun sinks lower, drifting clouds, distant birdsong, slow push-in",
    "duration_sec": 5,
    "first_frame": { "name": "lake.jpg", "url": "https://example.com/lake.jpg" }
  }'

端点

端点做什么
GET /v1/models目录:时长区间、每秒单价、当前队列深度。免费,不需要 key。
POST /v1/videos提交提示词,预扣积分,返回 job_id。
GET /v1/videos/{id}查状态,出好了就一并给文件。
GET /v1/videos你最近 30 个任务和当前余额,用来对账。
POST /v1/videos/{id}/cancel还在排队时可取消,全额退回。已经开跑的显卡时间已经花掉了,不能取消。

请求字段

字段类型说明
prompt字符串这条片子要拍什么。8 到 20000 字。主体、动作、环境、光线、镜头 —— 按这个顺序写效果好。
duration_sec整数4 到 15。它是计价基准。不传默认 5。
mode字符串text、animate 或 cast。不传默认 text。
first_frame文件仅 animate,必填。片子从这一帧开始。
last_frame文件仅 animate,可选。片子在这一帧结束。
ref_images文件数组仅 cast,1~4 张。在提示词里按你给的顺序用 <Picture 1> 起往后指代。
model字符串默认 h3/768p,目前唯一在售的模型。
seed整数可选。种子、提示词、图都一样就能复现同一条片。不传就随机取一个,并在任务里回给你。

请求头:Authorization: Bearer sk_live_…,以及建议带上的 Idempotency-Key: <你自己生成的任意字符串>。同一账号下这个键会被记住,所以网络重试永远不会把同一条片买两次。

返回什么

提交、轮询、列表拿到的是同一个任务对象,只是当时已知的字段才有值。

怎么写提示词才出得好

模型读的是大白话,中英文都行。写得具体它就给你,堆形容词它就还你一堆平均值。

去看提示词库

出错的时候

错误码意思
unauthorizedkey 没带或不对。用 Authorization: Bearer sk_live_…
insufficient_credits余额不够。返回里会同时给出所需与现有两个数。
bad_params没给提示词、提示词过长,或者 duration_sec 不在 4~15 之间。
unknown_model没有这个在售模型。查 GET /v1/models。
mode_unavailable这个模式还没开放。返回里会列出当前开着的。
bad_material有图太大、不是真的 JPEG/PNG/WebP、拉不到,或者不是 https。消息里会说是哪一张。
payload_too_large请求体超过 24 MB。把图改成 https 链接,别内联 base64。
model_unavailable当前没有可用的渲染后端,通常是在换机。过几分钟再试,这次没有扣费。
capacity_deadline_infeasible队列已排到六小时以后。稍后再来,这次没有扣费。
idempotency_conflict这个 Idempotency-Key 已经被另一个请求占用了。
not_cancellable任务已经在跑或已经结束了。
rate_limited请求太密。Retry-After 会告诉你该等多久。

限额

在找导演 API —— 给说明和素材,出逐场逐镜的方案? 文档在这里

有问题,或者哪里不对劲? 告诉我们