正在加载…

创建视频

视频生成

POST /v1/videos

视频生成是异步任务。创建后立即返回 queued,轮询状态,完成后读取 URL 或下载内容。

参数类型必填说明
modelstring是视频模型 ID。
promptstring文生视频必填描述视频内容、动作、镜头和风格。
seconds / durationstring | number是生成时长;duration 是兼容别名,必须是模型支持的时长。
sizestring否WIDTHxHEIGHT;短边决定分辨率档位,同时决定比例。
aspect_ratiostring否也可直接传比例,例如 16:9、9:16;size 优先映射。
resolutionstring否也可直接传 720p、1080p 等模型支持的档位。
reference_modestring否asset=普通参考图;frame=首尾帧。字段本身也会触发自动识别。
reference_imagesstring[] | file[]否普通参考图;JSON 用 URL、Data URI 或原始 Base64,multipart 可重复字段。
start_frame / end_framestring | file否首尾帧;end_frame 必须搭配 start_frame,且不能与普通参考图混用。
reference_videosstring[] | file[]否传入参考视频:JSON 用 HTTP(S) 视频直链或 Data URI 数组;multipart 上传本地文件,多段视频重复同名字段。仅限支持参考视频的模型;完整传法、兼容字段 input_video 和限制见下方“上传视频与传入参考视频”。
audio_reference(s)string | string[] | file[]否参考音频;必须搭配模型支持的普通图像或视频参考。
audioboolean否控制输出音轨;仅对支持该能力的模型生效。
response_formatstring否仅支持 url;完成态返回公开临时 URL 和 expires_at。
视频生成POST /v1/videos · 创建 · 轮询 · 下载
curl https://image.apixhm.com/v1/videos \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2.5",
    "prompt": "a paper boat sailing down a rainy street, cinematic",
    "seconds": "4",
    "size": "1120x480",
    "response_format": "url"
  }'

# 轮询状态,完成后读取 url
curl https://image.apixhm.com/v1/videos/<VIDEO_ID> \
  -H "Authorization: Bearer YOUR_API_KEY"
curl '<RETURNED_URL>' -o output.mp4
import time
import requests

base = "https://image.apixhm.com/v1"
headers = {"Authorization": "Bearer YOUR_API_KEY"}
job = requests.post(f"{base}/videos", headers=headers, json={
    "model": "seedance-2.5",
    "prompt": "a paper boat sailing down a rainy street",
    "seconds": "4",
    "size": "1120x480",
    "response_format": "url",
}).json()

while True:
    status = requests.get(f"{base}/videos/{job['id']}", headers=headers).json()
    if status["status"] in ("completed", "failed"):
        break
    time.sleep(5)

if status["status"] == "completed":
    open("output.mp4", "wb").write(requests.get(status["url"]).content)

上传视频与传入参考视频

视频输入使用 reference_videos。传视频可用公网链接,也可直接上传本地文件;多段视频在同一个请求中提交。先确认所选模型支持参考视频,再按下面的 JSON 或 multipart 示例调用 POST /v1/videos。

input_reference、start_frame 和 end_frame 是图片首尾帧参数。参考视频使用素材模式 reference_mode="asset",不能与首尾帧混用;seconds 表示生成视频的时长。

支持参考视频的模型与限制

下表读取本站当前公开模型目录,只列出 capabilities.max_reference_videos > 0 的视频模型。未列出的模型请先核对其能力;当前 API Key 是否可调用,还需通过 GET /v1/models 确认。

模型 ID最多视频数生成时长分辨率参考素材限制
minimax-h3-768p34-15秒以模型目录为准目录未声明额外限制;仍须遵守素材格式及上传限制。
wan3.0-720p-mx10.5.0-gfapi54-30秒 · 8个档位720p目录未声明额外限制;仍须遵守素材格式及上传限制。
wan3.0-480p-mx10.5.0-gfapi54-30秒 · 8个档位480p目录未声明额外限制;仍须遵守素材格式及上传限制。
wan3.0-1080p-mx10.5.0-gfapi54-30秒 · 8个档位1080p目录未声明额外限制;仍须遵守素材格式及上传限制。
minimax-h3-optimized34-15秒以模型目录为准目录未声明额外限制;仍须遵守素材格式及上传限制。

数量、单文件大小、总大小、参考素材总时长和可混用的图片数量可能因模型不同。链接必须可直接读取视频内容,不能是网页、需要登录的地址或本机路径;本地文件示例使用 MP4 和 video/mp4。这些是输入素材限制,不是生成结果的下载大小限制。

JSON:传视频链接与多段视频

reference_videos 是字符串数组,只有一段视频也要使用数组。每项填写一个 HTTP(S) 直链;也支持带视频 MIME 的 Data URI,例如 data:video/mp4;base64,...。本地路径请使用下一节的文件上传方式。

curl 'https://image.apixhm.com/v1/videos' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
  "model": "minimax-h3-768p",
  "prompt": "参考视频中的主体动作和镜头运动,生成一段新的电影风格视频",
  "seconds": "4",
  "aspect_ratio": "1:1",
  "resolution": "720p",
  "reference_mode": "asset",
  "reference_videos": [
    "https://example.com/reference-1.mp4",
    "https://example.com/reference-2.mp4"
  ],
  "response_format": "url"
}'

multipart:上传本地视频文件

每个文件重复一次同名字段 reference_videos,不要拼成一个文件名,也不要把文件路径放进 JSON。示例按模型支持数量传入一至两段视频;传一段时仅保留一个文件字段。让 curl 或 requests 自动生成包含 boundary 的 Content-Type。

curl 'https://image.apixhm.com/v1/videos' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -F 'model=minimax-h3-768p' \
  -F 'prompt=参考视频中的主体动作和镜头运动,生成一段新的电影风格视频' \
  -F 'seconds=4' \
  -F 'aspect_ratio=1:1' \
  -F 'resolution=720p' \
  -F 'reference_mode=asset' \
  -F 'response_format=url' \
  -F 'reference_videos=@./reference-1.mp4;type=video/mp4' \
  -F 'reference_videos=@./reference-2.mp4;type=video/mp4'
from contextlib import ExitStack
import requests

url = "https://image.apixhm.com/v1/videos"
headers = {"Authorization": "Bearer YOUR_API_KEY"}
data = {
    "model": "minimax-h3-768p",
    "prompt": "参考视频中的主体动作和镜头运动,生成一段新的电影风格视频",
    "seconds": "4",
    "aspect_ratio": "1:1",
    "resolution": "720p",
    "reference_mode": "asset",
    "response_format": "url"
}
paths = ["reference-1.mp4","reference-2.mp4"]

with ExitStack() as stack:
    files = [
        ("reference_videos", (path, stack.enter_context(open(path, "rb")), "video/mp4"))
        for path in paths
    ]
    response = requests.post(url, headers=headers, data=data, files=files, timeout=120)
    response.raise_for_status()
    job = response.json()
    print(job)  # 保存 id,使用 GET /v1/videos/{id} 继续查询

请求成功后保存返回的 id,按本页前面的示例轮询 GET /v1/videos/{id};只有 status="completed" 才能下载结果,失败时读取返回的具体错误原因。

兼容字段与其他视频协议

POST /v1/videos 推荐统一使用 reference_videos。JSON 也兼容 input_video(字符串或字符串数组)和 video_references(字符串数组);multipart 也兼容 input_video、input_video[]、reference_video、video_references、video_references[]。同一批素材只选一种字段名,重复传入会合并计数。

使用 Seedance 任务接口或 MiniMax v2 视频接口时,视频放在 content 数组中,格式为 {"type":"video_url","video_url":{"url":"https://example.com/reference.mp4"},"role":"reference_video"};具体路径、模型范围和其他必填项见各自文档,不要混用不同协议的字段。