> ## Documentation Index
> Fetch the complete documentation index at: https://docs.aireiter.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Muse Video Ext 動画生成

> - 非同期処理モード、タスクIDを返却し後続の照会に使用
- テキストからの動画生成、または最大9枚の参照画像による動画生成に対応
- 1回につき10秒、720p、音声トラック付きの動画を1本生成
- プロンプトに時間を記述するだけでシーン間のカメラ切り替えが可能


> [!NOTE]
>
> 長さは10秒固定、解像度は720p固定で、完成した動画には生成されたオーディオトラックが付属します。`video_length` と `resolution` は省略可能です。
>
> 参照動画、参照音声、開始・終了フレーム、`seed`、`negative_prompt` には対応しておらず、オーディオトラックを無効にすることもできません。

## Authorizations

**Authorization** `string` *required*

すべてのインターフェースで Bearer Token による認証が必要です。

API Key の取得：

[API Key 管理ページ](https://aireiter.com/keys)にアクセスして API Key を取得します。

使用時はリクエストヘッダーに追加します：

```
Authorization: Bearer YOUR_API_KEY
```

## Body

**model** `string` *required*

モデル名。`muse_video_ext` に固定。

**params** `object` *required*

モデルパラメータオブジェクト。

**params オブジェクトのプロパティ**

**prompt** `string` *required*

動画生成のテキスト説明。中国語と英語に対応。必須であり、先頭と末尾の空白文字を除去した後に空にすることはできません。

参照画像がある場合、プロンプト内で `Picture 1`、`Picture 2` を使用して1枚目、2枚目の画像を指定できます。

複数のカットがある場合、カットごとに段落を分け、タイムスタンプで切り替え位置を示します。例：

```
[Shot 1] リビングの全景、女性がハンガーにかかったTシャツを掲げている……
[Shot 2] At 00:04.000、カメラが白い壁の前に切り替わり、男性がこのTシャツを着る……
```

> [!WARNING]
>
> プロンプトに実在するブランド、スポーツチーム、またはロゴ名が含まれている場合、コンテンツ審査を通過できず、タスクが失敗で終了する可能性があります。名称を含まない説明に変更して再試行してください。

**image\_url** `string | string[]`

参照画像の URL。パブリックネットワークから直接アクセスできる必要があります。単一の文字列として渡すことも可能です。指定しない場合はテキストからの動画生成になります。

* 最大 9 枚
* すべての画像の元のサイズの合計が 11 MiB を超えないこと
* PNG、JPEG、WebP を推奨

ローカルパスおよび `blob:` アドレスには対応していません。

**aspect\_ratio** `string` (default: auto)

動画のアスペクト比：

* `auto` - デフォルト値。参照画像がある場合は参照画像の構図に従い、テキストのみの場合は `16:9`
* `1:1`
* `16:9`
* `9:16`
* `4:3`
* `3:4`
* `3:2`
* `2:3`

**video\_length** `string` (default: 10)

動画の長さ。`"10"` に固定。省略可能。

**resolution** `string` (default: 720p)

出力解像度。`720p` に固定。省略可能。

**out\_task\_id** `string` *required*

リクエスト元のタスク ID。

ユーザー定義のタスク識別子。必須。英数字、アンダースコア、ハイフンのみ対応し、長さは 1-64 文字です。後からこの ID を使用してタスクのステータスと結果を照会できます。

## Response

**out\_task\_id** `string`

リクエスト元タスクID。結果の照会に使用できます。

**status** `string`

初期ステータス。通常は `"pending"` です。

**created\_at** `string`

作成日時、ISO形式。

## Query Task

本モデルは非同期動画生成です。タスク送信後、`out_task_id` を使用してタスクステータスをクエリしてください。[タスクステータスの取得](https://docs.aireiter.com/ja/api-reference/tasks/status.md)もご参照ください。

**out\_task\_id** `string` *required*

タスク送信時に渡されたリクエスト元のタスクID。

```bash theme={null}
curl --request POST \
  --url https://aireiter.com/api/openapi/query \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "out_task_id": "muse_ext_t2v_123456"
  }'
```

クエリが成功して完了すると、レスポンス内の `output` 配列に生成された動画が含まれ、要素には `video` フィールドが含まれます。

生成にかかる時間は入力によって異なります：テキストのみの場合は通常約1〜2分、参照画像が多い場合は数分かかることがあります。重複して送信せず、継続してポーリングを行ってください。

## 使用说明

| 入力 | `image_url` | `aspect_ratio` |
| - | - | - |
| テキストから動画生成 | 送信しない、または空配列 | 未指定の場合はデフォルトで `16:9`、指定も可能 |
| 参照画像から動画生成 | 1〜9枚、合計で11 MiB以下 | 参照画像に追従する `auto` を推奨、または指定も可能 |

マルチショットプロンプトの効果：

* カット切り替えタイミングが正確：プロンプトに記載した時間に対し、実際の切り替え誤差は1秒以内です。
* 商品上のテキスト、プリント、ロゴは各ショット間で一貫性を維持します。
* 人物はカット切り替え後に参照画像と差異が生じる場合があります。同一人物の識別性を維持する必要がある場合は、切り替えポイントを最大2箇所までに抑え、各ショットでその外見の描写を繰り返し記述することをお勧めします。

## Request Examples

```bash cURL（テキスト生成） theme={null}
curl --request POST \
  --url https://aireiter.com/api/openapi/submit \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "muse_video_ext",
    "params": {
      "prompt": "映画のようなシネマスコープ画面：黄金色の夕日の中、雪山のリッジに沿ってユキヒョウがカメラに向かって歩いてくる。風に舞う粉雪、逆光に照らされる体毛、ローアングルからの緩やかなズームイン。環境音は風の音と雪を踏む足音。字幕なし、ロゴなし。",
      "aspect_ratio": "16:9"
    },
    "out_task_id": "muse_ext_t2v_123456"
  }'
```

```bash cURL（参照画像3枚） theme={null}
curl --request POST \
  --url https://aireiter.com/api/openapi/submit \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "muse_video_ext",
    "params": {
      "prompt": "Picture 1の男性が寝室のアーチミラーの前に立ち、Picture 2のプリントTシャツのシワを伸ばす。カメラは胸元のプリントにズームインし、次にPicture 3の袖のパッチへとスライドし、最後にミディアムショットへと引く。スマートフォンの手持ち撮影の質感、柔らかい自然光。",
      "image_url": [
        "https://example.com/person.jpg",
        "https://example.com/print.jpg",
        "https://example.com/sleeve.jpg"
      ],
      "aspect_ratio": "9:16"
    },
    "out_task_id": "muse_ext_ref_123456"
  }'
```

```bash cURL（マルチショット） theme={null}
curl --request POST \
  --url https://aireiter.com/api/openapi/submit \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "muse_video_ext",
    "params": {
      "prompt": "[Shot 1] 日の出時の山あいの湖の全景、水面から立ち上る薄い霧、静かに浮かぶ一艘の木造船、微かに聞こえる鳥のさえずり。\n[Shot 2] At 00:04.000、オール周辺に広がる波紋のクローズアップに切り替わり、水面に暖かい光が揺らめく。\n[Shot 3] At 00:07.000、ドローンが高空から後方へ引くカメラワークに切り替わり、松林と山々に囲まれた湖全体が現れる。\n字幕なし、ロゴなし。",
      "aspect_ratio": "16:9"
    },
    "out_task_id": "muse_ext_shots_123456"
  }'
```

```python Python theme={null}
import requests

url = "https://aireiter.com/api/openapi/submit"

payload = {
    "model": "muse_video_ext",
    "params": {
        "prompt": "映画のようなシネマスコープ画面：黄金色の夕日の中、雪山のリッジに沿ってユキヒョウがカメラに向かって歩いてくる。風に舞う粉雪、逆光に照らされる体毛、ローアングルからの緩やかなズームイン。環境音は風の音と雪を踏む足音。字幕なし、ロゴなし。",
        "aspect_ratio": "16:9"
    },
    "out_task_id": "muse_ext_t2v_123456"
}

headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript JavaScript theme={null}
const url = "https://aireiter.com/api/openapi/submit";

const payload = {
  model: "muse_video_ext",
  params: {
    prompt: "映画のようなシネマスコープ画面：黄金色の夕日の中、雪山のリッジに沿ってユキヒョウがカメラに向かって歩いてくる。風に舞う粉雪、逆光に照らされる体毛、ローアングルからの緩やかなズームイン。環境音は風の音と雪を踏む足音。字幕なし、ロゴなし。",
    aspect_ratio: "16:9"
  },
  out_task_id: "muse_ext_t2v_123456"
};

const headers = {
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
};

fetch(url, {
  method: "POST",
  headers: headers,
  body: JSON.stringify(payload)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Error:', error));
```

```go Go theme={null}
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "io/ioutil"
    "net/http"
)

func main() {
    url := "https://aireiter.com/api/openapi/submit"

    payload := map[string]interface{}{
        "model": "muse_video_ext",
        "params": map[string]interface{}{
            "prompt":       "映画のようなシネマスコープ画面：黄金色の夕日の中、雪山のリッジに沿ってユキヒョウがカメラに向かって歩いてくる。風に舞う粉雪、逆光に照らされる体毛、ローアングルからの緩やかなズームイン。環境音は風の音と雪を踏む足音。字幕なし、ロゴなし。",
            "aspect_ratio": "16:9",
        },
        "out_task_id": "muse_ext_t2v_123456",
    }

    jsonData, _ := json.Marshal(payload)

    req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
    req.Header.Set("Authorization", "Bearer <token>")
    req.Header.Set("Content-Type", "application/json")

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    body, _ := ioutil.ReadAll(resp.Body)
    fmt.Println(string(body))
}
```

```java Java theme={null}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

public class Main {
    public static void main(String[] args) throws Exception {
        String url = "https://aireiter.com/api/openapi/submit";

        String payload = """
            {
              "model": "muse_video_ext",
              "params": {
                "prompt": "映画のようなシネマスコープ画面：黄金色の夕日の中、雪山のリッジに沿ってユキヒョウがカメラに向かって歩いてくる。風に舞う粉雪、逆光に照らされる体毛、ローアングルからの緩やかなズームイン。環境音は風の音と雪を踏む足音。字幕なし、ロゴなし。",
                "aspect_ratio": "16:9"
              },
              "out_task_id": "muse_ext_t2v_123456"
            }
        """;

        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create(url))
            .header("Authorization", "Bearer <token>")
            .header("Content-Type", "application/json")
            .POST(HttpRequest.BodyPublishers.ofString(payload))
            .build();

        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
```

```php PHP theme={null}
<?php

$url = "https://aireiter.com/api/openapi/submit";

$payload = [
    "model" => "muse_video_ext",
    "params" => [
        "prompt" => "映画のようなシネマスコープ画面：黄金色の夕日の中、雪山のリッジに沿ってユキヒョウがカメラに向かって歩いてくる。風に舞う粉雪、逆光に照らされる体毛、ローアングルからの緩やかなズームイン。環境音は風の音と雪を踏む足音。字幕なし、ロゴなし。",
        "aspect_ratio" => "16:9"
    ],
    "out_task_id" => "muse_ext_t2v_123456"
];

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "Authorization: Bearer <token>",
    "Content-Type: application/json"
]);

$response = curl_exec($ch);
curl_close($ch);

echo $response;
?>
```

```json 200 theme={null}
{
  "statusCode": 200,
  "message": "",
  "data": {
      "out_task_id": "muse_ext_t2v_123456",
      "status": "pending",
      "created_at": "2026-11-04T06:03:28.242Z"
  }
}
```

```json 400 theme={null}
{
  "statusCode": 400,
  "message": "リクエストパラメータが無効です",
  "ok": false
}
```

```json 401 theme={null}
{
  "error": {
    "code": 401,
    "message": "認証に失敗しました。APIキーを確認してください"
  }
}
```

```json 500 theme={null}
{
  "error": {
    "code": 500,
    "message": "サーバー内部エラーが発生しました。後でもう一度お試しください"
  }
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.