> ## 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、自带音轨的视频
- 提示词里写时间点即可在场景间切换镜头


> [!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]
>
> 提示词里出现真实品牌、球队或 logo 名称，可能无法通过内容审核，任务会以失败结束。请改用不带名称的描述后重试。

**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/zh/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 秒以内。
* 商品上的文字、印花和 logo 在各镜头间保持一致。
* 人物在切镜后可能与参考图有差异。需要同一个人保持可辨认时，建议最多 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": "电影感宽银幕画面：金色夕阳下，一只雪豹沿雪山山脊走向镜头，细雪随风飘动，毛发逆光，低机位缓慢推近。声音是风声和雪地上的脚步声。无字幕、无 logo。",
      "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无字幕、无 logo。",
      "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": "电影感宽银幕画面：金色夕阳下，一只雪豹沿雪山山脊走向镜头，细雪随风飘动，毛发逆光，低机位缓慢推近。声音是风声和雪地上的脚步声。无字幕、无 logo。",
        "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: "电影感宽银幕画面：金色夕阳下，一只雪豹沿雪山山脊走向镜头，细雪随风飘动，毛发逆光，低机位缓慢推近。声音是风声和雪地上的脚步声。无字幕、无 logo。",
    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":       "电影感宽银幕画面：金色夕阳下，一只雪豹沿雪山山脊走向镜头，细雪随风飘动，毛发逆光，低机位缓慢推近。声音是风声和雪地上的脚步声。无字幕、无 logo。",
            "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": "电影感宽银幕画面：金色夕阳下，一只雪豹沿雪山山脊走向镜头，细雪随风飘动，毛发逆光，低机位缓慢推近。声音是风声和雪地上的脚步声。无字幕、无 logo。",
                "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" => "电影感宽银幕画面：金色夕阳下，一只雪豹沿雪山山脊走向镜头，细雪随风飘动，毛发逆光，低机位缓慢推近。声音是风声和雪地上的脚步声。无字幕、无 logo。",
        "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.