Source: https://ailoot.ai/docs/ja/api/video-music/
Canonical: https://ailoot.ai/docs/ja/api/video-music/
Language: ja

[API](https://ailoot.ai/docs/ja/) 

# 動画と音楽

[Markdown](https://ailoot.ai/docs/ja/api/video-music/index.md)

動画と音楽の生成。リクエストでジョブを作成し、その識別子で結果を取得します。

POST`https://api.ailoot.ai/v1/videos`

動画と音楽

```bash
# Request IDを保存してください。サポートはこのIDでリクエストを特定します。
# ジョブは一度だけ作成してください。以下のループはステータスの読み取りのみを行います。
curl --fail-with-body --max-time 120 -D video-create-headers-v1.txt \
  https://api.ailoot.ai/v1/videos \
  -H "Authorization: Bearer $AILOOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"grok-imagine-video-1.5","prompt":"穏やかな湖","seconds":"8","size":"1280x720"}' \
  -o video-create-v1.json || exit 1
VIDEO_ID=$(jq -er '.id // .request_id' video-create-v1.json) || exit 1
VIDEO_STATUS=""
# このループが読み取るのは元のジョブだけです。作成リクエストは再送しません。
for ATTEMPT in $(seq 1 60); do
  curl --fail-with-body --max-time 30 \
    "https://api.ailoot.ai/v1/videos/$VIDEO_ID" \
    -H "Authorization: Bearer $AILOOT_API_KEY" \
    -o video-status-v1.json || exit 1
  VIDEO_STATUS=$(jq -r '.status // empty' video-status-v1.json)
  # result_pending_check: true（statusはin_progressのまま）: 結果を確認中です。処理を停止し、ジョブを再作成しないでください。
  if jq -e '.result_pending_check == true' video-status-v1.json >/dev/null; then
    cat video-status-v1.json
    echo "The result is being checked. Do not create the job again: check GET /v1/videos/$VIDEO_ID later or contact support with the Request ID." >&2
    exit 1
  fi
  case "$VIDEO_STATUS" in
    done|completed) break ;;
    queued|in_progress|pending|processing) sleep 5 ;;
    # failedまたはその他のステータス: 表示して処理を停止してください。ジョブを再作成しないでください。
    *) cat video-status-v1.json; exit 1 ;;
  esac
done
case "$VIDEO_STATUS" in
  done|completed) ;;
  *) echo "The job is not finished yet (status: ${VIDEO_STATUS:-none}). Check it later: GET /v1/videos/$VIDEO_ID" >&2; exit 1 ;;
esac
curl --fail-with-body --max-time 120 -L --max-redirs 3 \
  "https://api.ailoot.ai/v1/videos/$VIDEO_ID/content" \
  -H "Authorization: Bearer $AILOOT_API_KEY" -o video-v1.mp4
# 作成処理がタイムアウトした場合は、このスクリプトを再実行する前に利用履歴でRequest IDを確認してください。
```

```bash
curl https://api.ailoot.ai/v1/music/generations \
  -H "Authorization: Bearer $AILOOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "google/lyria", "prompt": "穏やかなピアノとチェロ、ボーカルなし"}' 
```

レスポンス · 省略版

```json
// ジョブの識別子はidまたはrequest_idフィールドにある
{ "id": "…", … }

// 形式はモデルによって異なるため、識別子は
// 作成レスポンスに含まれる値をそのまま使用する。
```

## 認証

| パラメーター | 型 | 必須 | 説明 |
| --- | --- | --- | --- |
| `Authorization` | header | 必須 | キーの形式：`Bearer sk-…`。次のヘッダーも使用できます：`x-api-key` または `x-goog-api-key`。 |

## 動画：リクエストボディ

| パラメーター | 型 | 必須 | 説明 |
| --- | --- | --- | --- |
| `model` | string | 必須 | 動画モデル：`google/omni-1.1-flash`, `grok-imagine-video`, `happyhorse-1.1-t2v`, `MiniMax-Hailuo-2.3`, `grok-imagine-video-1.5`, `happyhorse-1.1-r2v`, `grok-imagine-video-1.5-preview`, `happyhorse-1.1-i2v`。 |
| `prompt` | string | 必須 | 動画の説明。 |
| `duration / seconds` | integer / string | 任意 | モデルファミリーによって異なります。Grokは1–15秒、MiniMaxは6/10秒（768P）、または6秒（1080P）、HappyHorseは3–15秒、Google Omniは4/6/8/10秒です。あるファミリーのフィールドを別のファミリーに流用しないでください。 |
| `resolution / size` | string | 任意 | Grok: 480p/720p/1080p（1080pはvideo-1.5）、またはsize 1280x720/720x1280/1920x1080/1080x1920。MiniMax: 768P/1080P。HappyHorse: 480P/720P/1080P。Google Omni: 360p/720p。 |
| `image / first_frame_image / image_urls` | string / array | 任意 | 元画像のフィールドは、モデルファミリーとモードによって異なります。MiniMax Fastではfirst\_frame\_imageが必須です。HappyHorseのt2vはimagesなし、i2vは画像一枚のみでratioなし、r2vは1–9枚の画像です。 |

レスポンスにはジョブの識別子が含まれます（フィールド `id` または `request_id`）。形式はモデルによって異なるため、解析せず、そのまま使用してください。ステータスと完成ファイル：

GET`https://api.ailoot.ai/v1/videos/{id}`

GET`https://api.ailoot.ai/v1/videos/{id}/content`

同じアドレスは、次のプレフィックスでも使えます：`/v1/videos/generations/{id}`。完成したジョブのステータスとレスポンスのフィールドはモデルによって異なります。ステータスのフィールドを確認し、ファイルは次のパスから取得してください：`/content`。

## 作成 → ステータス確認 → ダウンロード

作成時のレスポンスとRequest IDを保存してください。MiniMax/HappyHorseで完了を示すのは `status: completed`です。レスポンスには `content_url`, `data[]`とusageが含まれます。Grokで完了を示すのは `status: done` 、 `video.url`です。Google Omniは202 queuedを返し、その後in\_progressとRetry-After、completed、またはpartial/content\_revokedを返します。200であれば必ず動画が完成している、と判断しないでください。ステータスのレスポンスに `result_pending_check: true` (`status` があり、このとき `in_progress`）の場合は、結果の確認中です。ジョブを作り直さず、後でGET /v1/videos/{id}を確認するか、Request IDを添えてサポートにお問い合わせください。

`/content` からはMP4が直接返る場合と、署名付きファイルへリダイレクトされる場合があります。レスポンスの `data[]`に複数の結果がある場合は、すべて保存してください。提供された結果はすべて課金対象です。APIから動画ジョブを取り消したり削除したりすることはできません。完成ファイルを削除するとアクセスできなくなりますが、生成は取り消されません。

料金は、カタログの記載に従い、選択した解像度の完成動画の秒数、または動画一本ごとに計算されます。ジョブ作成時に全額が仮確保されます。

## 音楽

POST`https://api.ailoot.ai/v1/music/generations`

| パラメーター | 型 | 必須 | 説明 |
| --- | --- | --- | --- |
| `model` | string | 必須 | `google/lyria`, `google/lyria-3-clip-preview`。 |
| `prompt` | string | 必須 | 曲の説明：ジャンル、楽器、雰囲気。 |

レスポンスの `data[]` には、完成したクリップへのリンクが含まれます。一つのリクエストで複数のクリップが返る場合があり、提供されたクリップはそれぞれ課金対象です。

接続が切れても、動画や音楽のリクエストを再送しないでください。ジョブがすでに開始されている可能性があります。先に識別子でステータスを確認するか、Request IDを添えてサポートにお問い合わせください。

ご不明な点はありますか？Request IDと状況の説明をお送りください。調査をお手伝いします。[サポートに問い合わせる](mailto:support@ailoot.ai)

## Ailoot · 企業とそのプロジェクト群





Ailootは、蓄積した運営経験、幅広い顧客基盤、安定したサービス、継続的なKPI管理を基盤としています。





企業とそのプロジェクト群：数百万の顧客、毎月数十億規模の売上。





Ailootはこの運営経験を、お客様の製品、エージェント、アプリケーション、自動化でAI機能を利用するためのAPIアクセスに活かしています。
