参考
POST /v1/videos
用文本提示词生成带声音的视频,格式与 OpenAI 相同:SDK 的 videos 方法只需替换 base URL 即可使用。排队、查询、下载一次,之后视频即被删除。
核对于 2026年11月6日
生成一段视频
import os
import time
from openai import OpenAI
client = OpenAI(
base_url="https://nokeep.ai/v1",
api_key=os.environ["NOKEEP_API_KEY"],
)
clip = client.videos.create(
model="minimax-h3-max-turbo",
prompt="Waves breaking on a rocky coast at dusk",
seconds="5",
size="1280x720",
)
while clip.status in ("queued", "in_progress"):
time.sleep(5)
clip = client.videos.retrieve(clip.id)
if clip.status == "completed":
client.videos.download_content(clip.id).write_to_file("clip.mp4")模型
| 模型 | 适合 | 每秒 480p | 每秒 768p | 每秒 1080p |
|---|---|---|---|---|
| minimax-h3-max-turbo | 速度快,带声音。推荐从它开始。 | $0.045 | $0.07 | $0.14 |
| minimax-h3-max | 比 Turbo 步数更多,细节更精细,带声音。 | $0.09 | $0.14 | $0.28 |
按你请求的秒数付费。两个模型都能生成 5 到 15 秒、带声音的视频。
请求
| 字段 | 取值 | 作用 |
|---|---|---|
model | 必填 | 上表中的一个模型 id。 |
prompt | 必填,最多 10,000 字符 | 要拍摄的内容,按原样发送给模型。超出上限会被拒绝,绝不截断。 |
seconds | 5 至 15 | 视频长度,可以是数字或字符串。默认为 5。OpenAI 的 4 会被拒绝;8 和 12 可以使用。 |
size | WIDTHxHEIGHT | 选取最接近的分辨率和比例。1280x720 会变为 16:9 的 768p,并按此计费。 |
resolution | 480p、768p 或 1080p | 决定价格,并优先于 size。默认为 768p。 |
aspect_ratio | 16:9、21:9、4:3、1:1、3:4、9:16 | 优先于 size。默认为 16:9。 |
发送 JSON,或 OpenAI 的 SDK 所用的 multipart 表单均可。其他字段(如 seed)会被丢弃,并在 x-nokeep-ignored 中列出。携带图片或视频的字段(如 input_reference)会以 400 unsupported_input 被拒绝:这些模型只支持文本输入。 OpenAI 的 Python SDK 会在 videos 方法上显示弃用警告,指的是 OpenAI 自己的视频服务。这不影响对我们的调用,类型检查器也可能标记模型 id。
视频的接口
| 接口 | 作用 |
|---|---|
POST /v1/videos | 将视频排入队列,并锁定其价格。 |
GET /v1/videos/{id} | 返回视频所处的状态。每隔几秒查询一次。 |
GET /v1/videos/{id}/content | mp4 文件。只能下载一次,之后视频会从模型的主办方处删除。如果下载中断,请重新请求。 |
DELETE /v1/videos/{id} | 删除已完成的视频,且不下载。仍在渲染的视频会返回 409 video_not_ready。 |
GET /v1/videos | 账户最近的视频。 |
视频对象
{
"id": "video_8f3a…",
"object": "video",
"model": "minimax-h3-max-turbo",
"status": "completed",
"progress": 100,
"created_at": 1793960000,
"completed_at": 1793960030,
"expires_at": 1794042800,
"seconds": "5",
"size": "1366x768",
"resolution": "768p",
"aspect_ratio": "16:9",
"error": null,
"downloaded": false,
"expired": false,
"usage": {
"nokeep_credits": 350
}
}status为queued、in_progress、completed或failed之一。progress在视频完成前为 0,完成后为 100。模型在中间不报告任何进度。size由分辨率和比例算出,因此文件尺寸可能相差几个像素。
费用
- 视频排队时即锁定其全额价格,从你购买的积分和该密钥的每日上限中扣除。
- 视频完成时正式扣费,无论你是否下载。
- 失败的视频不收费,其状态会注明这一点。
视频保存在哪里
完成的视频会在模型主办方的私有层中等待,最长 23 小时。它在被下载一次后,或你删除它时,会从那里删除。我们从不保存文件;超过该时间后,接口返回 410 video_gone。我们自己关于视频的记录保存其 id、密钥、模型、时长、分辨率、比例、积分和时间,从不保存提示词。该记录在 48 小时后删除。
内容、限制与错误
四项硬性限制保持不变:涉及未成年人的性内容、涉及真实人物的性内容、大规模伤害,以及针对真实人物的内容。触犯其中任何一项的提示词会收到 422 hard_limit,且不收费。模型的主办方也可能拒绝请求,那会返回 422 content_refused,同样免费。见硬性限制。
每个密钥每分钟可排队 20 个视频,并计入其 120 次总请求数,同时最多可有 10 个视频在渲染。超出则返回 429 rate_limited。错误页面列出了所有错误码。
要在不花钱的情况下检查代码,请使用 sk-nokeep-test 作为密钥。它会运行所有检查,立即将视频作为 video_test 报告为已完成,且其文件为空。