KozeKoze
ブログに戻る
チュートリアル2026年6月28日·管理员

ビデオ生成API呼び出しドキュメント

Kozeaiは、非同期タスクモードを使用してOpenAI Soraと互換性のあるビデオ生成インターフェースを提供します。まずタスクを送信して`task_id`を取得し、次にタスクのステータスをポーリングし、完了時にビデオコンテンツをダウンロードします。

動画生成API呼び出しドキュメント

kozeaiは、OpenAI Soraと互換性のある動画生成インターフェースを提供します。**非同期タスク**モードを使用し、まずタスクを送信して`task_id`を取得し、次にタスクのステータスをポーリングし、完了後に動画コンテンツをダウンロードします。

認証

すべてのリクエストは`Authorization: Bearer `を使用して認証されます。

コンソールでAPIトークンを作成した後、これを使用してください。

export KOZEAI_API_KEY="sk-your-token"
export KOZEAI_BASE_URL="https://api.kozeai.com"

インターフェース概要

mp4
メソッド パス 目的
POST /v1/videos/generations 動画タスクの作成
GET /v1/videos/{task_id} タスクステータスの照会
GET /v1/videos/{task_id}/content オンライン再生またはダウンロード

提出インターフェースから返されるタスクID(task_12345の形式)は、現在のユーザーのみに属します。


1.動画タスクを作成します

curl "$KOZEAI_BASE_URL/v1/videos/generations" \

-H "Authorization: Bearer $KOZEAI_API_KEY" \

-H "Content-Type: application/json" \

-d '{
"model": "video-ds-2.0",

 プロンプト: 暖かい日差しの中を走る猫の9分16秒の映画のような動画: 15アスペクト比: 9分16秒

} 

リクエストパラメータ

です。
パラメータ タイプ 必須 説明
model string はい ビデオモデル名(例:video-ds-2.0
prompt string はい ビデオコンテンツの説明
整数 いいえ 動画の長さ(秒)。アップストリームモデルのサポート範囲に基づきます。
アスペクト比 文字列 いいえ アスペクト比。一般的に使用されるのは9:1616:91:1
画像 配列 いいえ 参照画像のURLまたはbase64
動画 配列 いいえ 参照動画URL
音声 配列 いいえ 参照音声URL

上流モデルによってサポートされるパラメータが異なる場合があります。

記載されていないパラメータは、アップストリームプロトコルに従って渡されます。

画像生成ビデオ(参照画像付き)

参照画像に基づいてビデオを生成するには、images配列を渡してください。

curl "$KOZEAI_BASE_URL/v1/videos/generations" \

-H "Authorization: Bearer $KOZEAI_API_KEY" \

-H "Content-Type: application/json" \

-d {

モデル: video-ds-2.0,

プロンプト: 参考画像スタイルを使用して、スムーズな製品ビデオを作成します,

: 15,

アスペクト比: 9:16,

画像: ["https://example.com/input.png"],

"videos": ["https://example.com/input.mp4"],

"audios": ["https://example.com/input.mp3"]

}'

  • imagesは画像URLまたはbase64をサポートしています。
  • videos / audiosはオプションの参考資料です。
  • チャットの自動補完インターフェース(記事末尾参照)からメッセージを送信する場合、画像をメッセージに添付するだけで、システムが自動的にimagesパラメータに変換します。

レスポンス(送信成功)

{

"id": "task_12345",

"task_id": "task_12345",

"object": "video",

"model": status 値: queued (キューに追加済み)、in_progress (処理中)、completed (完了)、failed (失敗)。 


2.タスクステータスのポーリング

送信によって返されるidを使用してポーリングします。推奨間隔は3~5秒です。

curl "$KOZEAI_BASE_URL/v1/videos/task_12345" \

-H "Authorization: Bearer $KOZEAI_API_KEY"

レスポンス(生成中)

{
 "id": "task_12345",

"object": "video",

"model": "video-ds-2.0",

"status": "in_progress",

"progress": "progress": "progress" 45,

"created_at": 1751000000
}

レスポンス(完了)

{

"id": "task_12345",

"object": "video",

"model": "model" "video-ds-2.0",

"status": "completed",

"progress": 100,

"created_at": 1751000000,

完了後、`metadata.content_url` には直接アクセスできる動画アドレスが表示されます。また、下記のコンテンツインターフェースを使用してダウンロードすることもできます。

レスポンス(失敗)

{

"id": "task_12345",

"object": "video",

"status": "failed",

"error": { "message": "失敗理由" }
}

3.動画コンテンツをダウンロード

curl -L "$KOZEAI_BASE_URL/v1/videos/task_12345/content" \

-H "Authorization: Bearer $KOZEAI_API_KEY" \

-o result.mp4

  • タスクが完了していない場合(キュー内/生成中)は409 Conflictを返します。
  • リクエストヘッダーを使用して、セグメントダウンロード/ドラッグアンドドロップ再生をサポートします。
  • video/mp4.

完全な例

JavaScript (fetch + ポーリング)

const BASE = process.env.KOZEAI_BASE_URL;

const KEY = process.env.KOZEAI_API_KEY;

const headers = { Authorization: `Bearer ${KEY}` };


// 1. タスクの送信
const submit = await fetch(`${BASE}/v1/videos/generations`, {
method: 'POST',

headers: { ...headers, 'Content-Type': 'application/json' },

body: JSON.stringify({
model: 'video-ds-2.0',

prompt: 'ガラスの上に置かれた香水瓶の滑らかなコマーシャルビデオ',

seconds: 15,

aspect_ratio: '9:16',

}),
});

const task = await submit.json();

const taskId = task.id;

// 2. 完了するまでポーリング
async function poll() {
while (true) {
const res = await fetch(`${BASE}/v1/videos/${taskId}`, { headers });

const data = await res.json();

if (data.status === 'completed') return data;

if (data.status === 'failed') throw new Error(data.error?.message || 'failed');

await new Promise((r) => setTimeout(r, 5000));

}
} const done = await poll();

// 3. 動画アドレスを取得
console.log('動画アドレス:', done.metadata?.content_url

|| `${BASE}/v1/videos/${taskId}/content`);

Python (requests + polling)

import os、time、requests

BASE = os.environ["KOZEAI_BASE_URL"]
KEY = os.environ["KOZEAI_API_KEY"]
headers = {"Authorization": f"Bearer {KEY}"}

# 1. タスクを送信
resp = requests.post(
f"{BASE}/v1/videos/generations",

headers=headers,

json={

"model": "video-ds-2.0",

"prompt": "暖かい中を走る猫の9分16秒の映画のようなビデオ日光""秒": 15"アスペクト比": "9:16"、
}、
)
task_id = resp.json()["id]
# 2. ポーリング
while True:
data = requests.get(f "{BASE}/v1/videos/{task_id}", headers=headers).json()

if data["status"] == "completed":

break

if data["status"] == "failed":

raise RuntimeError(data.get("error", {}).get("message", "failed"))

time.sleep(5)

# 3. ダウンロード
mp4 = requests.get(f"{BASE}/v1/videos/{task_id}/content", headers=headers)
with open("result.mp4", "wb") as f: f.write(mp4.content)


チャット補完インターフェースで呼び出されます(互換性のある使用方法)

ビデオモデルは、/v1/chat/completions からも呼び出すことができ、チャットクライアントの再利用が容易になります。

リクエストを行う際は、`model` にビデオモデル名を渡すだけで、システムが自動的にビデオタスクに変換します。
curl $KOZEAI_BASE_URL/v1/chat/completions

\ -H Authorization: Bearer $KOZEAI_API_KEY \ -H Content-Type: application/json \ -d { Model: } `

returns "video-ds-2.0

, "messages: [{"role: "user, "content: "日光の中を走る猫、シネマティック、9:16}] }

チャット完了を返します

フォーマットは`message.content`で、タスクのステータスとリンク`/v1/videos/{task_id}`が含まれます。このリンクをクリックすると、完了後に動画が再生されます。チャットロビーページではこのメソッドが使用されます。

両方のエントリポイント(/v1/videos/generations/v1/chat/completions)は同じタスクシステムを共有しており、互いに競合しません。直接統合するには、標準の `/v1/videos/*` インターフェースを使用することをお勧めします。


エラーコード

または、モデルが設定されていません。
ステータスコード 意味
401 トークンが不足しているか、期限切れ、または無効です
403 残高不足、または現在のグループにこのモデルへのアクセス権限がありません
404 タスクIDが存在しないか、現在のユーザーに属していません。
409 動画コンテンツが準備できていません(タスクがキューイング中/生成中です)
429 レート制限が発動しました
502 アップストリームサプライヤーが失敗したか、無効な結果を返しました

ビデオ生成API呼び出しドキュメント | Koze AI