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

# Meta Muse 视频生成 API：价格与接入

> 通过老张API调用 Meta 的 Muse 视频模型：用 OpenAI 格式的 /v1/videos 提交文生视频、首帧、首尾帧、参考图和视频续写任务，查询并下载带音轨的 MP4，按次计费。

Muse 是 Meta 的视频生成模型，每条视频都带配乐和音效。老张API按次计费，5–10 秒的视频每个 \$0.30，用普通分组的令牌即可调用。

| 项目 | 内容 |
| - | - |
| 模型 ID | `muse-video`（5、8、10 秒）、`muse-video-20s`、`muse-video-30s` |
| 创建任务 | `POST /v1/videos`，JSON 或 multipart |
| 查询任务 | `GET /v1/videos/{id}`，完成后读取 `video_url` |
| 下载视频 | `video_url` 直接下载，或 `GET /v1/videos/{id}/content` |
| 令牌分组 | `default`、`vip`、`svip`，计费模式选按量优先 |
| 价格 | 每个视频 \$0.30、\$0.55 或 \$0.80，见[计费与价格](#计费与价格) |
| 规格 | 24fps，带音轨；16:9 输出 1280×720，各比例尺寸见[请求字段](#请求字段) |
| 结果保存 | 视频链接保留 7 天 |
| 线路 | Meta 官方 API 暂无视频生成模型，此线路独立接入，单独定价 |

![Muse 视频文生视频示例输出：清晨海边的灯塔，海浪拍打礁石](https://mintcdn.com/laozhangai-edd05f2c/HNpi8TQdPfniogkz/images/samples/muse-video-zh-t2v.jpg?fit=max\&auto=format\&n=HNpi8TQdPfniogkz\&q=85\&s=790687986a7ce8fc4c7a6094ddcb4ce1)

「文生视频」示例的输出截图：muse-video，10 秒，16:9

## 创建令牌

在[令牌管理](https://api2.laozhang.ai/token)新增令牌，按下面配置：

| 配置项 | 选择 |
| - | - |
| 分组 | `default`、`vip` 或 `svip`，三个分组价格相同 |
| 计费模式 | 按量优先（推荐）或按次计费；只选按量计费的令牌无法调用 |
| 建议 | 视频单独建一个令牌，便于在调用日志里按任务核对消费 |

不需要 Meta 账号，也不用单独开通视频分组。

## 计费与价格

Muse 视频按次计费，与时长档位、画面比例和是否带图片无关：

| 模型 | 成片时长 | 每个视频 |
| - | - | -: |
| `muse-video` | 5、8 或 10 秒 | \$0.30 |
| `muse-video-20s` | 20 秒；续写时在原视频后接 10 秒 | \$0.55 |
| `muse-video-30s` | 30 秒；续写时在原视频后接 20 秒 | \$0.80 |

扣费规则：

* 创建任务时扣费，失败的任务全额退回。
* 参数不合法、在提交阶段直接返回错误的请求不扣费。
* 重复提交会创建新任务并再次计费，业务层请保存业务 ID 与任务 `id` 的对应关系。

每个任务的实际扣费以[调用日志](https://api2.laozhang.ai/log)为准。

## 和其他视频模型怎么选

截至 2026 年 10 月 30 日，720p 及以上清晰度的 10 秒视频里，Muse 的单价在老张API最低，各模型价格见[模型与价格总表](https://docs.laozhang.ai/models.md)。按任务选择：

* **Muse**：要按次固定价、一条 20 或 30 秒的连续视频，或在已有视频后面续写。
* **[MiniMax H3](https://docs.laozhang.ai/api-capabilities/minimax-h3-video-generation.md)**：要 2K 输出、参考视频或参考音频。5 秒左右的 768P 短视频，H3 按秒计费更便宜。
* **[Seedance 2.0](https://docs.laozhang.ai/api-capabilities/seedance2-video-generation.md)**：要 1080p，或使用真人、虚拟人素材。
* **[Wan](https://docs.laozhang.ai/api-capabilities/wan-video-generation.md)**：要 1080P 输出，或编辑已有视频。

## 调用流程

**1. 创建任务**

调用 `POST /v1/videos`，请求体至少包含 `model` 和 `prompt`。接口是异步的，几秒内就返回任务 `id`，不用等视频生成完，请保存好它。

**2. 轮询状态**

每 15 秒调用一次 `GET /v1/videos/{id}`，读取 `status`，每次查询都会立即返回。10 秒以内的视频通常 2–3 分钟完成，高峰时可能超过 5 分钟，20 秒和 30 秒的视频更久。

**3. 下载结果**

`status` 为 `completed` 时，从 `video_url` 下载 MP4，下载不需要 `Authorization` 请求头。链接保留 7 天。

> [!WARNING]
>
> **轮询最多等 30 分钟，没完成前不要重新提交。**
>
> * 提交和查询请求本身都会立即返回，不需要加长 HTTP 请求的超时时间。
> * 30 分钟是轮询的上限：期间状态一直是 `queued` 或 `in_progress` 就继续查。
> * 放弃轮询后，用同一个 `id` 稍后再查；重新提交会创建新任务并再次扣费。
> * 超过 40 分钟仍未完成的任务会自动判为失败并全额退款。

## 准备环境

下面的 cURL 示例用 `jq` 提取字段（macOS 可用 `brew install jq` 安装）。先设置密钥和 Base URL：

```bash theme={null}
export LAOZHANG_API_KEY="替换为你的老张API密钥"
export BASE_URL="https://api.laozhang.ai"
```

## 文生视频

```bash theme={null}
curl -s -X POST "$BASE_URL/v1/videos" \
  -H "Authorization: Bearer $LAOZHANG_API_KEY" \
  -H "Content-Type: application/json" \
  --data-raw '{
    "model": "muse-video",
    "prompt": "清晨的海边灯塔，海浪拍打礁石，几只海鸥从镜头前飞过，镜头缓慢推进，电影感光影",
    "seconds": "10",
    "aspect_ratio": "16:9"
  }' | tee muse-create.json

export VIDEO_ID=$(jq -r '.id' muse-create.json)
```

创建成功时返回排队中的任务：

```json theme={null}
{
  "id": "task_1OuWjS9JUWpjiin8zr3S3vzhQNjTILIF",
  "object": "video",
  "model": "muse-video",
  "status": "queued",
  "progress": 0,
  "seconds": "10",
  "created_at": 1793328220
}
```

两个常用的可选字段：

* `seconds`：不传时 `muse-video` 生成 10 秒视频。
* `aspect_ratio`：画面比例，也可以改用 `size` 写像素尺寸，例如 `720x1280`。

## 首帧和首尾帧生视频

用 `image` 指定开场画面，加上 `last_frame` 可以同时指定结束画面。图片可以是公网链接或 `data:image/...;base64,` 格式的 data URL：

```bash theme={null}
curl -s -X POST "$BASE_URL/v1/videos" \
  -H "Authorization: Bearer $LAOZHANG_API_KEY" \
  -H "Content-Type: application/json" \
  --data-raw '{
    "model": "muse-video",
    "prompt": "雪慢慢融化，树叶变成金黄色，季节从冬天过渡到秋天",
    "seconds": "8",
    "image": "https://example.com/winter.jpg",
    "last_frame": "https://example.com/autumn.jpg"
  }'
```

首尾帧会作为画面参考，成片的开头和结尾与图片构图一致，细节不保证逐像素相同。

本地图片可以用 multipart 直接上传，首帧字段是 `input_reference`，尾帧字段是 `last_frame`：

```bash theme={null}
curl -s -X POST "$BASE_URL/v1/videos" \
  -H "Authorization: Bearer $LAOZHANG_API_KEY" \
  -F model=muse-video \
  -F prompt="小猫眨眨眼，打了个哈欠" \
  -F seconds=5 \
  -F aspect_ratio=9:16 \
  -F input_reference=@./cat.jpg
```

使用 `-F` 上传时不要设置 `Content-Type: application/json`。每张图片不超过 10 MB。

## 参考图生视频

`reference_images` 传 1–4 张图片，模型会把图里的主体、风格放进视频，不要求作为首帧：

```bash theme={null}
curl -s -X POST "$BASE_URL/v1/videos" \
  -H "Authorization: Bearer $LAOZHANG_API_KEY" \
  -H "Content-Type: application/json" \
  --data-raw '{
    "model": "muse-video",
    "prompt": "这只狐狸穿过一片从冬天变成秋天的森林",
    "seconds": "10",
    "aspect_ratio": "16:9",
    "reference_images": [
      "https://example.com/fox-winter.jpg",
      "https://example.com/fox-autumn.jpg"
    ]
  }'
```

## 20 秒、30 秒长视频与视频续写

`muse-video-20s` 和 `muse-video-30s` 直接生成 20 秒或 30 秒的连续视频，请求方式和 `muse-video` 相同，`seconds` 可以不传。

在已有视频后面接着生成时，传 `video_url`：

```bash theme={null}
curl -s -X POST "$BASE_URL/v1/videos" \
  -H "Authorization: Bearer $LAOZHANG_API_KEY" \
  -H "Content-Type: application/json" \
  --data-raw '{
    "model": "muse-video-20s",
    "prompt": "小船慢慢漂进晨雾，太阳从海平面升起",
    "video_url": "https://example.com/boat-5s.mp4"
  }'
```

续写的规则：

* 只有 `muse-video-20s` 和 `muse-video-30s` 支持 `video_url`，分别在原视频后接 10 秒和 20 秒。
* 原视频必须是可公开下载的 https MP4 链接，最长 10 秒。
* 成片包含原视频，例如 5 秒的原视频用 `muse-video-20s` 续写后是 15 秒。
* 老张API返回的 `video_url` 可以直接拿来续写。

## 查询和下载

### 查询任务

```bash theme={null}
curl -s "$BASE_URL/v1/videos/$VIDEO_ID" \
  -H "Authorization: Bearer $LAOZHANG_API_KEY"
```

生成中时 `status` 为 `in_progress`，`progress` 为大致进度：

```json theme={null}
{
  "id": "task_1OuWjS9JUWpjiin8zr3S3vzhQNjTILIF",
  "object": "video",
  "model": "muse-video",
  "status": "in_progress",
  "progress": 30,
  "seconds": "10",
  "size": "1280x720",
  "created_at": 1793328220
}
```

完成后返回 `video_url`：

```json theme={null}
{
  "id": "task_Qb8zDoLJMSDsOKdRWLMCwzRgkg2EanF0",
  "object": "video",
  "model": "muse-video",
  "status": "completed",
  "progress": 100,
  "seconds": "5",
  "size": "1280x720",
  "created_at": 1793325393,
  "completed_at": 1793325521,
  "video_url": "https://media.laozhang.ai/videos/video_6efb7e6d2b37665752192eb1-a95d03b30c0f.mp4"
}
```

失败时 `status` 为 `failed`，原因在 `error.message`，费用已经退回：

```json theme={null}
{
  "id": "task_GcyZA3g7We2nQOl3QaSQX1nroSKli3O7",
  "object": "video",
  "model": "muse-video",
  "status": "failed",
  "progress": 100,
  "seconds": "8",
  "size": "1280x720",
  "created_at": 1793326360,
  "error": {
    "code": "video_generation_failed",
    "message": "Could not download last_frame (HTTP 429). Use a public image link or a data URL."
  }
}
```

### 下载视频

```bash theme={null}
curl -L -o muse-video.mp4 "$(curl -s "$BASE_URL/v1/videos/$VIDEO_ID" \
  -H "Authorization: Bearer $LAOZHANG_API_KEY" | jq -r '.video_url')"
```

也可以用 `GET /v1/videos/{id}/content` 带上 `Authorization` 下载，返回的就是 MP4 文件。

## Python 最小客户端

需要 `requests`（`pip install requests`）：

```python theme={null}
import os
import time

import requests

BASE_URL = "https://api.laozhang.ai"
HEADERS = {"Authorization": f"Bearer {os.environ['LAOZHANG_API_KEY']}"}

task = requests.post(
    f"{BASE_URL}/v1/videos",
    headers=HEADERS,
    json={
        "model": "muse-video",
        "prompt": "清晨的海边灯塔，海浪拍打礁石，几只海鸥从镜头前飞过，镜头缓慢推进，电影感光影",
        "seconds": "10",
        "aspect_ratio": "16:9",
    },
    timeout=120,
)
task.raise_for_status()
video_id = task.json()["id"]

deadline = time.time() + 30 * 60
while True:
    video = requests.get(f"{BASE_URL}/v1/videos/{video_id}", headers=HEADERS, timeout=60).json()
    if video["status"] == "completed":
        break
    if video["status"] == "failed":
        raise RuntimeError(video["error"]["message"])
    if time.time() > deadline:
        raise TimeoutError(f"{video_id} 还未完成，稍后用同一个 id 继续查询")
    time.sleep(15)

with open("muse-video.mp4", "wb") as f:
    f.write(requests.get(video["video_url"], timeout=300).content)
print("已保存 muse-video.mp4，时长", video["seconds"], "秒")
```

## API 参考

### 请求字段

| 字段 | 必填 | 说明 |
| - | - | - |
| `model` | 是 | `muse-video`、`muse-video-20s` 或 `muse-video-30s` |
| `prompt` | 是 | 画面、动作和声音描述 |
| `seconds` | 否 | `muse-video` 为 `5`、`8` 或 `10`（默认 10）；20s、30s 模型只能是 20、30 或不传 |
| `aspect_ratio` | 否 | `16:9`、`9:16`、`1:1`、`4:3`、`3:4` |
| `size` | 否 | 用像素写比例，例如 `1280x720`，下方表格里的输出尺寸也可以；与 `aspect_ratio` 二选一 |
| `image` | 否 | 首帧图片；multipart 上传时字段名为 `input_reference` |
| `last_frame` | 否 | 尾帧图片 |
| `reference_images` | 否 | 参考图数组，最多 4 张 |
| `video_url` | 否 | 要续写的原视频，仅 20s、30s 模型 |
| `negative_prompt` | 否 | 不希望出现的内容 |
| `style`、`camera_motion` | 否 | 风格和运镜提示，例如 `cinematic`、`zoom_in`，作为生成参考 |

各画面比例的输出尺寸：

| `aspect_ratio` | 输出尺寸 |
| - | - |
| `16:9` | 1280×720 |
| `9:16` | 720×1280 |
| `1:1` | 960×960 |
| `4:3` | 1088×816 |
| `3:4` | 816×1088 |

帧率固定为 24fps，传 `resolution` 或 `fps` 不会改变输出。

### 任务状态

| `status` | 含义 | 下一步 |
| - | - | - |
| `queued` | 已创建，等待生成 | 继续轮询 |
| `in_progress` | 生成中 | 继续轮询 |
| `completed` | 已完成 | 从 `video_url` 下载 |
| `failed` | 失败，费用已退回 | 按 `error.message` 修改请求后重新创建 |

## 常见错误

| 报错 | 原因 | 处理 |
| - | - | - |
| `seconds must be 5, 8, 10 for muse-video.` | 时长不在该模型的档位内 | 改成 5、8、10，或换 20s、30s 模型 |
| `video_url (continue a video) needs muse-video-20s or muse-video-30s.` | 用 `muse-video` 续写 | 换 `muse-video-20s` 或 `muse-video-30s` |
| `Send at most 4 reference_images.` | 参考图超过 4 张 | 减到 4 张以内 |
| `Could not download image (HTTP 403)…` | 图片链接需要登录、拒绝下载或限流 | 换成公网可直接下载的链接，或改传 data URL |
| `image must be a public internet link.` | 图片链接指向内网、本机或无法解析的地址 | 换成公网可直接下载的链接，或改传 data URL |
| `video_url can be at most 10 seconds long…` | 续写的原视频超过 10 秒 | 先截取到 10 秒以内 |
| `The model returned no video for this input…` | 模型没有为这组输入生成视频 | 调整提示词或换一张图片后重新创建 |

前三种在提交阶段返回 HTTP 400，不创建任务、不扣费。其余的以失败任务的形式返回，费用已经退回。

## 常见问题

### 5 秒和 10 秒的价格一样吗？

一样，`muse-video` 的 5、8、10 秒都是 \$0.30。需要更长的连续镜头时，用 `muse-video-20s`（\$0.55）或 `muse-video-30s`（\$0.80）。

### 能生成 1080p 视频吗？

不能。Muse 横屏输出 1280×720、竖屏 720×1280，其他比例见[请求字段](#请求字段)。传 `resolution: "1080p"` 不会报错，但成片尺寸不变。

### 视频有声音吗？能关掉吗？

每条视频都带音轨，配乐和音效由提示词决定，目前没有关闭参数。不需要声音时，下载后自行去掉音轨即可。

### 超时或失败后可以直接重新提交吗？

先查任务状态。客户端等待超时不代表任务失败，继续用同一个 `id` 查询即可；重新提交会创建新任务并再次计费。只有 `status` 为 `failed` 时才需要修正请求后重新创建，失败任务的费用已经退回。超过 40 分钟仍未完成的任务会自动判为失败并退款，不会一直扣着费用。

### 视频链接能保存多久？

7 天。过期后链接失效，同一个任务也无法重新下载，请在任务完成后及时转存。

## 相关文档

* [MiniMax H3 视频生成 API](https://docs.laozhang.ai/api-capabilities/minimax-h3-video-generation.md)
* [Seedance 2.0 视频生成 API](https://docs.laozhang.ai/api-capabilities/seedance2-video-generation.md)
* [Wan 2.7 与 Wan 3.0 视频生成 API](https://docs.laozhang.ai/api-capabilities/wan-video-generation.md)
* [模型与价格总表](https://docs.laozhang.ai/models.md)
* [调用日志](https://docs.laozhang.ai/faq/call-logs.md)
* [Meta Model API 模型列表](https://dev.meta.ai/resources/blog/build-with-muse-spark)：Muse Spark、Muse Image 等，暂无视频生成模型（2026 年 10 月 30 日核对）


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