跳到正文
全部文档

参考

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 字符要拍摄的内容,按原样发送给模型。超出上限会被拒绝,绝不截断。
seconds5 至 15视频长度,可以是数字或字符串。默认为 5。OpenAI 的 4 会被拒绝;8 和 12 可以使用。
sizeWIDTHxHEIGHT选取最接近的分辨率和比例。1280x720 会变为 16:9 的 768p,并按此计费。
resolution480p、768p 或 1080p决定价格,并优先于 size。默认为 768p。
aspect_ratio16: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}/contentmp4 文件。只能下载一次,之后视频会从模型的主办方处删除。如果下载中断,请重新请求。
DELETE /v1/videos/{id}删除已完成的视频,且不下载。仍在渲染的视频会返回 409 video_not_ready。
GET /v1/videos账户最近的视频。

视频对象

JSON
{
  "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 报告为已完成,且其文件为空。