リファレンス
POST /v1/videos
テキストのプロンプトから、音声付きの動画を1本作ります。OpenAI形式なので、SDKの videos メソッドはベース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の1秒あたり | 768pの1秒あたり | 1080pの1秒あたり |
|---|---|---|---|---|
| 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は解像度と形から計算されるため、ファイルは数ピクセル違うことがあります。
支払い
- 動画の全額料金は、キューに入った時点で、購入済みのクレジットとキーの1日の上限に対して確保されます。
- 完成した時点で課金されます。ダウンロードするかどうかは関係ありません。
- 失敗した動画は無料で、その状態にもそう示されます。
動画の保管場所
完成した動画は、モデルのホストの非公開層に最長23時間残ります。一度だけダウンロードするか削除すると、そこから消えます。当社はファイルを保持せず、その時間を過ぎると 410 video_gone を返します。動画に関する当社の行には、ID、キー、モデル、長さ、解像度、形、クレジット、時刻が入り、プロンプトは入りません。その行は48時間後に削除されます。
コンテンツ、上限、エラー
4つのハード制限は残ります。未成年者の性的なコンテンツ、実在の人物の性的なコンテンツ、大量殺傷につながる危害、実在の人物への攻撃です。これに当たるプロンプトは 422 hard_limit になり、料金はかかりません。モデルのホストがリクエストを拒否することもあり、それは 422 content_refused で、これも無料です。詳しくはハード制限を参照してください。
1つのキーで毎分20本の動画をキューに入れられ、全体では120リクエストの上限内に収まり、同時に10本までレンダリングできます。超えると 429 rate_limited になります。すべてのコードはエラーページにあります。
料金をかけずにコードを確認するには、キーとして sk-nokeep-test を送ってください。すべてのチェックを通り、動画は即座に完成したと video_test として報告されます。そのファイルは空です。