動画を作成
動画生成タスクを送信します。リクエストはタスク id とポーリング URL を含む 202 Accepted をすぐに返し、生成は非同期で実行されます。タスクをポーリングするか、webhook を受け取り、その後 動画ステータスの取得 で結果を読み取ります。
POST https://api.ofox.ai/v1/videosリクエストパラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
model | string | ✅ | Model slug。例:google/veo-3.1 または bytedance/seedance-2.0 |
prompt | string | ✅ | 動画のテキスト説明 |
duration | integer | — | 動画の長さ(秒) |
resolution | string | — | 480p / 720p / 1080p / 1K / 2K / 4K |
aspect_ratio | string | — | 16:9 / 9:16 / 1:1 / 4:3 / 3:4 / 3:2 / 2:3 / 21:9 / 9:21 |
size | string | — | 正確なピクセル数 WIDTHxHEIGHT(例:1280x720)。resolution + aspect_ratio の代替 |
frame_images | array | — | フレーム制御(画像から動画 / 最初と最後のフレーム)。存在する場合 ⇒ 画像から動画として扱われます。以下を参照 |
input_references | array | — | 被写体 / スタイルのガイド(参照から動画)。正確なフレームアンカーではありません。以下を参照 |
generate_audio | boolean | — | 音声出力に対応するモデルではデフォルトで true |
seed | integer | — | 決定的生成の seed(すべてのプロバイダーで保証されるわけではありません) |
callback_url | string | — | 終端状態の webhook URL。HTTPS 必須(Webhooks を参照) |
provider | object | — | プロバイダー固有の passthrough。Provider passthrough を参照 |
frame_images[] 要素
各要素は出力の1フレームを固定します。frame_type は first_frame または last_frame です。
{
"type": "image_url",
"image_url": { "url": "https://example.com/first.jpg" },
"frame_type": "first_frame"
}input_references[] 要素
画像 / 音声 / 動画参照を type で渡します。これらは被写体、スタイル、一貫性のガイドであり、正確なフレームアンカーではありません:
{ "type": "image_url", "image_url": { "url": "https://example.com/subject.jpg" } }
{ "type": "audio_url", "audio_url": { "url": "https://example.com/voice.mp3" } }
{ "type": "video_url", "video_url": { "url": "https://example.com/ref.mp4" } }| メディア | type | 最大数 | その他の制約 |
|---|---|---|---|
| 画像 | image_url | ≤ 9 | — |
| 音声 | audio_url | ≤ 3 | 1クリップあたり ≤ 15s |
| 動画 | video_url | ≤ 1 | — |
いずれかの上限を超えると 400 too_many_references が返ります(Errors を参照)。
frame_images と input_references は同時に使用できません。1つのリクエストではどちらか一方のみを使用し、両方は使用しません。両方を送信すると 400 references_conflict が返ります。
生成モード(暗黙)
gen_mode フィールドはありません。モードは送信した入力から推定されます:
| モード | 検出条件 |
|---|---|
text2video | frame_images も input_references もない |
img2video | frame_images に1つの first_frame がある |
img2video_end | frame_images に first_frame + last_frame がある |
imgref2video | input_references が画像のみ |
mixref2video | input_references が画像 / 音声 / 動画の混在 |
レスポンス
202 Accepted — タスクは status: "pending" と polling_url 付きで受理されます:
{
"id": "9bcf3c60-7db2-4e1a-a1b2-c3d4e5f60718",
"status": "pending",
"polling_url": "https://api.ofox.ai/v1/videos/9bcf3c60-7db2-4e1a-a1b2-c3d4e5f60718"
}タスクが終端状態になるまで polling_url をポーリングします(または webhook を待ちます)。動画ステータスの取得 をご覧ください。
リクエスト例
1つの /v1/videos スキーマですべての生成モードに対応します。モードは入力から暗黙的に選択されます。以下の各例はそのまま実行できます。
テキストから動画
frame_images / input_references なし → テキストから動画。
curl -X POST https://api.ofox.ai/v1/videos \
-H "Authorization: Bearer $OFOX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "google/veo-3.1",
"prompt": "A golden retriever running on the beach at sunset",
"duration": 5,
"resolution": "1080p",
"aspect_ratio": "16:9",
"generate_audio": true
}'組み合わせ可能なオプション
以下のフィールドは生成モードとは独立しています。上記の任意のリクエスト body に追加できます。
Webhook (callback_url)
ポーリングの代わりに、タスクが終端状態に達したときにあなたのエンドポイントで POST を受け取ります。
{
"model": "google/veo-3.1",
"prompt": "...",
"callback_url": "https://your-app.example/webhooks/ofox-video"
}callback_url は HTTPS である必要があります。payload と署名については Webhooks をご覧ください。
Provider passthrough
プロバイダー固有のパラメータは provider.options.<slug> 経由で渡され、一致したプロバイダーだけが受け取ります。watermark のようなパラメータはすべてのモデルで対応しているわけではないため、top-level field ではなく provider passthrough に置かれます(これは OpenRouter の provider-passthrough 慣例に従います)。モデルが受け付ける passthrough option は、そのモデルの capabilities に依存します。
{
"model": "alibaba/wan-2.7",
"prompt": "...",
"provider": {
"options": {
"dashscope": { "watermark": false, "audio_setting": "..." }
}
}
}