# Gemini Omni Flash — /videos/generations

Gemini Omni Flash の動画生成（非同期）: Google の次世代動画モデルです。1 つのエンドポイントでパラメータが方式を決めます。画像なしならテキストから動画、image に 1 枚なら最初のフレーム、images に 2 枚なら最初と最後のフレーム、image_role=reference なら 1〜3 枚を被写体・スタイルの参照として使います。duration=6 / 8 / 10 秒、resolution=720P / 1080P、size=16:9 / 9:16 で、ネイティブ音声付き。プロンプトの絵コンテに沿って複数カットで物語を組み立てるのが得意です。ジョブ ID を返し（HTTP 202）、GET /v1/videos/jobs/{id} を status=succeeded になるまでポーリングすると、結果が data[0].url に入ります（再ホストした mp4、60 日間保存）。秒単位 $0.05 で課金し（$0.30 / $0.40 / $0.50）、2 つの解像度は同じ料金です。失敗時は全額返金します。

**エンドポイント:** `POST https://nezhagate.com/v1/videos/generations`

## 認証
```
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
```

## リクエストボディ
| パラメータ | 種別 | 必須 | 説明 |
| --- | --- | --- | --- |
| `model` | string | はい | モデル ID。ここでは gemini-omni-flash です。 |
| `prompt` | string | はい | 動画の内容、カメラ、動きを説明するテキストプロンプト。最大 20000 文字（中国語も英語も同じく文字数で数えます）。参照画像を渡した場合は、プロンプトの中で @Image1 / @Image2 のように何枚目かを指名できます。 |
| `duration` | integer | いいえ | 長さ: 6 / 8 / 10 秒のいずれか（既定は 6）。seconds とも書けます。秒単位 $0.05 で課金し、それぞれ $0.30 / $0.40 / $0.50 です。 |
| `resolution` | string | いいえ | 解像度: 720P / 1080P（既定は 720P）。どちらも同じ料金です。 |
| `size` | string | いいえ | 画面比率: 16:9（既定）/ 9:16。aspect_ratio とも書けます。それ以外の比率は拒否されます。 |
| `audio` | boolean | いいえ | このモデルは常にネイティブ音声を生成します。このパラメータは省略できます（false は拒否されます）。 |
| `image` | string | いいえ | 参照画像 1 枚（公開 URL、data: URI または base64）：最初のフレームとして使い、画像から動画を作ります。画像を送らなければテキストから動画になります。 |
| `images` | array | いいえ | 画像は最大 3 枚（1 枚あたり最大 16MB、jpg / png / webp / gif）。image_role=first_frame（1〜2 枚のときの既定）：1 枚目が最初のフレーム、2 枚目が最後のフレームです。image_role=reference：1〜3 枚を被写体・スタイルの参照として使い、フレームにはしません。3 枚なら既定で reference です。reference_images とも書けます（reference と同じ）。上限を超えた場合は切り詰めずに拒否します。 |
| `image_role` | string | いいえ | 画像の使い方: first_frame（最初のフレーム。2 枚なら 2 枚目が最後のフレーム）または reference（被写体・スタイルの参照）。省略時は 1〜2 枚なら first_frame、3 枚なら reference として扱います。 |

## リクエスト例
```bash
# 1) submit -> 202 {"id":"img_...","status":"queued"}
curl https://nezhagate.com/v1/videos/generations -H 'Authorization: Bearer YOUR_API_KEY' -H 'Content-Type: application/json' -d '{"model": "gemini-omni-flash", "prompt": "a paper crane unfolding over a misty lake", "duration": 8, "resolution": "720P", "size": "16:9"}'
# first frame: also pass  "image": "https://example.com/first-frame.png"
# first + last frame: "images": ["https://example.com/first.png", "https://example.com/last.png"]
# 1-3 references: "images": [...], "image_role": "reference"
# 2) poll every ~5s until status=succeeded, then read data[0].url
curl https://nezhagate.com/v1/videos/jobs/img_3f9a...c2 -H 'Authorization: Bearer YOUR_API_KEY'
```

## レスポンス
```json
{
  "id": "img_3f9a...c2",
  "object": "video.generation.job",
  "status": "queued",
  "model": "gemini-omni-flash"
}
```