API 参考

视频生成

使用 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;保留这个地址的域名和路径。

开始前

  1. AsterMesh 控制台准备具有视频模型访问权限的 API Key,参见 账号与 API Key
  2. 准备一张参考图片,例如 cat.png,并在图片所在目录打开终端。
  3. 将下方的 YOUR_API_KEY 换成自己的密钥,设置后在同一个终端依次执行四步操作。
export ASTERMESH_API_KEY="YOUR_API_KEY"

示例中的 file_xxxtask_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 风格的创建、查询和下载路径。本例的 taskresolutionconditions 是模型接入使用的扩展字段;接入时按本页请求格式传递。

model: "h3" 指定的是本例的模型。接入官方 SDK 或其他客户端前,需要确认它能传递这些扩展字段和本例的 JSON 请求体。

3. 查询任务状态

把地址中的 task_xxx 替换为第二步返回的真实任务编号:

curl https://console.astermesh.cn/v1/videos/task_xxx \
  -H "Authorization: Bearer $ASTERMESH_API_KEY"

查看返回结果中的 status

  • statuscompleted:生成已完成,可以继续下载。
  • 返回结果表示仍在等待或处理中:间隔一段时间后,再查询同一个任务。
  • 返回结果表示任务失败:停止等待,查看失败原因并排查参数或素材。
  • 查询请求本身返回 HTTP 错误:先根据错误信息处理;一次查询失败不等于生成任务已经失败。

“轮询”就是定期重复这个查询请求。简单脚本可先采用每 5~10 秒查询一次的间隔,并设置等待上限;这是客户端的起始配置建议,具体频率以服务端限流提示为准。达到等待上限后保留任务编号,稍后仍可查询已有任务。

查询已有任务

等待期间使用 GET 查询任务进度。重复发送 POST /v1/videos 会再次提交生成请求,不能用来查询原任务的状态。

4. 下载视频

确认 statuscompleted 后,使用同一个任务编号下载:

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 状态码进一步排查

其他状态码的处理方式见 故障排查

© AsterMesh

On this page