视频生成
使用 Sora 兼容视频接口,通过 h3 示例完成素材上传、创建任务、查询状态和下载视频。
AsterMesh 提供 Sora 兼容的视频任务接口。视频生成采用异步流程:提交请求后先取得任务编号,等待任务完成,再下载视频。
本页以 h3 为例,使用一张参考图片和提示词,请求生成 4 秒、480p 的视频。
接口地址
视频 API 的 Base URL:
https://console.astermesh.cn/v1| 方法 | 路径 | 用途 |
|---|---|---|
POST | /v1/files | 上传参考素材,获取文件 URL |
POST | /v1/videos | 创建视频生成任务 |
GET | /v1/videos/{task_id} | 查询已有任务的状态 |
GET | /v1/videos/{task_id}/content | 下载已完成的视频 |
下方 curl 示例已包含完整地址,无需再次拼接 /v1。素材 URL 使用上传接口实际返回的地址,例如 https://s3.anystarx.com/h3/file_xxx;保留这个地址的域名和路径。
开始前
- 在 AsterMesh 控制台准备具有视频模型访问权限的 API Key,参见 账号与 API Key。
- 准备一张参考图片,例如
cat.png,并在图片所在目录打开终端。 - 将下方的
YOUR_API_KEY换成自己的密钥,设置后在同一个终端依次执行四步操作。
export ASTERMESH_API_KEY="YOUR_API_KEY"示例中的 file_xxx 和 task_xxx 都是占位符。需要分别替换为上传后得到的真实文件 URL、创建任务后得到的真实任务编号。
1. 上传参考图片
curl https://console.astermesh.cn/v1/files \
-H "Authorization: Bearer $ASTERMESH_API_KEY" \
-F "file=@cat.png"@cat.png 表示读取本地图片文件。如果图片在其他目录,改成实际路径,例如 file=@/path/to/cat.png。
上传使用表单格式;-F 会让 curl 设置相应的请求头,此处无需添加 Content-Type: application/json。
上传成功后,从返回结果中复制完整的文件 URL。例如:
https://s3.anystarx.com/h3/file_xxx把这个真实 URL 填入下一步的 conditions[0].url。示例地址不能直接当作已经上传的素材使用。
2. 创建视频任务
将 conditions 中的图片 URL 替换为第一步返回的真实地址,再发送请求:
curl https://console.astermesh.cn/v1/videos \
-H "Authorization: Bearer $ASTERMESH_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "h3",
"task": "ref2va",
"prompt": "一只猫在草地上跑",
"seconds": "4",
"resolution": "480p",
"conditions": [
{
"type": "image",
"url": "https://s3.anystarx.com/h3/file_xxx"
}
]
}'请求被接受后,从返回结果中复制任务编号,供后续查询和下载使用。下面用 task_xxx 代表这个编号。
取得任务编号表示已提交任务,是否生成成功还需要查看任务状态。保存这个编号,后续查询始终使用同一个编号。
示例参数
| 字段 | 示例值 | 说明 |
|---|---|---|
model | "h3" | 本例使用的视频模型 ID |
task | "ref2va" | 本例参考图片任务使用的类型代码,按示例保留 |
prompt | "一只猫在草地上跑" | 希望生成的视频内容 |
seconds | "4" | 请求的视频时长;本例按字符串传递 |
resolution | "480p" | 请求的视频清晰度 |
conditions | 图片条件数组 | 本例提供一张参考图片 |
conditions[].type | "image" | 条件素材类型 |
conditions[].url | 上传返回的文件 URL | 第一阶段取得的真实图片地址 |
这是一组完整的 h3 请求示例。其他模型、任务类型、时长、清晰度及素材限制,以对应模型的接口说明和实际返回为准。
Sora 兼容范围
视频任务采用 Sora 风格的创建、查询和下载路径。本例的 task、resolution、conditions 是模型接入使用的扩展字段;接入时按本页请求格式传递。
model: "h3" 指定的是本例的模型。接入官方 SDK 或其他客户端前,需要确认它能传递这些扩展字段和本例的 JSON 请求体。
3. 查询任务状态
把地址中的 task_xxx 替换为第二步返回的真实任务编号:
curl https://console.astermesh.cn/v1/videos/task_xxx \
-H "Authorization: Bearer $ASTERMESH_API_KEY"查看返回结果中的 status:
status为completed:生成已完成,可以继续下载。- 返回结果表示仍在等待或处理中:间隔一段时间后,再查询同一个任务。
- 返回结果表示任务失败:停止等待,查看失败原因并排查参数或素材。
- 查询请求本身返回 HTTP 错误:先根据错误信息处理;一次查询失败不等于生成任务已经失败。
“轮询”就是定期重复这个查询请求。简单脚本可先采用每 5~10 秒查询一次的间隔,并设置等待上限;这是客户端的起始配置建议,具体频率以服务端限流提示为准。达到等待上限后保留任务编号,稍后仍可查询已有任务。
查询已有任务
等待期间使用 GET 查询任务进度。重复发送 POST /v1/videos 会再次提交生成请求,不能用来查询原任务的状态。
4. 下载视频
确认 status 为 completed 后,使用同一个任务编号下载:
curl --fail --show-error -L https://console.astermesh.cn/v1/videos/task_xxx/content \
-H "Authorization: Bearer $ASTERMESH_API_KEY" \
-o out.mp4-L 让 curl 跟随下载地址的跳转,-o out.mp4 将视频保存到当前目录。--fail 让 HTTP 错误导致命令失败,避免把错误响应当作视频保存。
常见问题
| 现象 | 排查方向 |
|---|---|
找不到 cat.png,上传命令失败 | 检查当前目录、文件名和路径;有空格的路径应放在引号内 |
| 返回 401 或 403 | 检查 API Key 是否正确、是否有视频模型访问权限 |
| 生成请求被拒绝或素材读取失败 | 核对 JSON 格式、h3 示例参数,以及 conditions[].url 是否为真实上传结果 |
| 创建或查询请求超时 | 如果已有任务编号,先查询该任务;没有取得编号时先核查任务是否已创建,再决定是否重试 |
| 任务长时间未完成 | 保留任务编号,间隔查询;达到客户端等待上限后停止本轮等待,稍后再查 |
| 查询结果表示任务失败 | 阅读错误信息,修正参数或素材后再决定是否重新创建 |
| 下载失败 | 确认任务已完成、编号与查询时一致,并保留 -L;记录 HTTP 状态码进一步排查 |
其他状态码的处理方式见 故障排查。