万相 3.0 与快乐马视频 API

Essevin 上的阿里百炼视频生成 —— 万相 3.0 全能参考最长 30 秒,快乐马 1.1 文生 / 图生 / 参考生视频,只在成片时计费。

Essevin 以阿里自家的 DashScope 契约暴露阿里云百炼视频生成,并且保持原始路径。用阿里官方 SDK 或 HTTP 写好的代码迁过来只需改 base URL 和密钥——请求体、响应结构、路径都不用动。

两个模型系列都是异步的:提交任务,然后轮询 Essevin 任务 ID。请使用已开通阿里分组的密钥,并在正式付费调用前用 GET /v1/models 确认可用性。

端点

方法路径用途
POST/api/v1/services/aigc/video-generation/video-synthesis提交万相 3.0 或快乐马视频任务
GET/api/v1/tasks/{task_id}查询单个任务

所有请求使用 Authorization: Bearer sk-your-keyContent-Type: application/json。你不需要发送 X-DashScope-Async——网关向上游一律以异步方式请求。

请求体严格解码:未知字段与第二个 JSON 值会在调用上游前就被拒绝。这是刻意的。上游在提交阶段几乎不校验参数,只在执行期才失败——一个非法的 resolution 照样会返回任务 ID,大约十分钟后才报错。Essevin 会直接以 400 当场拒绝。

模型

模型 ID时长分辨率输入
wan3.0-video2-30 秒整数(默认 5),或 -1 表示自动480P / 720P / 1080P首帧 / 尾帧,或最多 10 张参考图、5 段参考视频、5 段参考音频、1 个文档、1 个网页链接
happyhorse-1.1-t2v3-15 秒整数(默认 5)480P / 720P / 1080P仅提示词
happyhorse-1.1-i2v3-15 秒整数(默认 5)480P / 720P / 1080P恰好 1 张 first_frame 图片
happyhorse-1.1-r2v3-15 秒整数(默认 5)480P / 720P / 1080P1-9 张 reference_image 图片

请使用上表中的精确 ID。未登记任何别名,未知模型名会被拒绝。wan3.0-video-primehappyhorse-1.1-video-edit 以及快乐马 1.0 系列均未上架。

请求契约

{
  "model": "wan3.0-video",
  "input": { "prompt": "...", "media": [{ "type": "first_frame", "url": "..." }] },
  "parameters": { "resolution": "1080P", "duration": 5 }
}

input

prompt 是否必填逐模型不同,与阿里自身契约一致:

模型prompt
wan3.0-video条件必选 —— promptmedia 必填其一
happyhorse-1.1-t2v必选
happyhorse-1.1-i2v可选 —— 纯首帧图即可驱动
happyhorse-1.1-r2v必选

长度:万相 3.0 最多 20,000 字符;快乐马最多 5,000 个非中文字符(中文实际被上游限到 2,500)。阿里对超长是静默截断;Essevin 对超过该模型官方上限的 prompt 直接返回 400,而不是放行一个会被悄悄改写的请求。

media 每一项都带 typeurl:

type万相 3.0快乐马
first_frame1-i2v,必填
last_frame1不接受
reference_image最多 10-r2v,必填 1-9
reference_video最多 5,合计 ≤15 秒不接受
reference_audio最多 5,合计 ≤15 秒不接受
file1 个文档(docx / doc / xlsx / xls / pptx / ppt / pdf / txt / key / pages / numbers / md;≤100 MB、≤50 页)不接受
link1 个公开网页不接受

对万相 3.0,首尾帧输入与参考组(reference_*filelink)在同一次请求中互斥,且 filelink 彼此也互斥。有参考视频时,阿里还要求输入视频总时长 + 输出时长 ≤ 30 秒;网关量不到你的输入片长,这条由上游判定。

url 接受绝对的公网 http(s) 地址或 data: 内嵌(base64)。oss:// 会被拒绝——该对象归属你自己的阿里云账号,网关无法代取。link 必须是真实网页地址,不能是 data: 内嵌。

parameters

字段万相 3.0快乐马 1.1
resolution480P / 720P / 1080P(默认 1080P)同左
duration可选;2-30,默认 5,或 -1 表示自动可选;3-15,默认 5
ratioadaptive / 16:9 / 4:3 / 1:1 / 3:4 / 9:1616:9 / 9:16 / 1:1 / 4:3 / 3:4 / 4:5 / 5:4 / 9:21 / 21:9;-i2v 不接受,成片比例随输入图
audio布尔,上游默认 true(开关声音价格相同)不接受
prompt_extend布尔,上游默认 true不接受
watermark布尔,上游默认 false布尔,上游默认 true
seed整数 0-2147483647同左

模型不支持的参数会被拒绝而不是静默丢弃,避免出现「以为生效了其实没有」的情况。你没传的字段完全不会发往上游——阿里自己的默认值原样生效。

快乐马默认带水印

阿里对快乐马 watermark 的默认值是 true,会在成片上打「Happy Horse」标记。Essevin 不覆盖上游默认值。需要干净输出请显式传 "watermark": false

示例 —— 文生视频

curl https://api.essevin.com/api/v1/services/aigc/video-generation/video-synthesis \
  -H "Authorization: Bearer sk-your-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "wan3.0-video",
    "input": { "prompt": "日出时分航拍云海之上的雪山" },
    "parameters": { "resolution": "1080P", "duration": 5, "ratio": "16:9" }
  }'

提交返回阿里响应结构中的 Essevin 任务 ID:

{ "output": { "task_id": "blt60x4115010d-d361-4bfc-b131-a382f1c400a5", "task_status": "PENDING" }, "request_id": "..." }

示例 —— 图生视频

{
  "model": "happyhorse-1.1-i2v",
  "input": {
    "prompt": "镜头缓缓推进,光影在场景中流动",
    "media": [{ "type": "first_frame", "url": "data:image/jpeg;base64,..." }]
  },
  "parameters": { "resolution": "720P", "duration": 5, "watermark": false }
}

用稳定的图床或 data: 内嵌

参考素材由上游下载,而不是 Essevin 下载。屏蔽机房 IP 的图床(很多免费图床都会)会让任务在提交几分钟后失败。建议用 data: 内嵌或你自己的 OSS / CDN。

任务生命周期

轮询 GET /api/v1/tasks/{task_id}output.task_statusPENDING → RUNNING → SUCCEEDED | FAILED。一条片子通常 1-5 分钟完成,万相 3.0 的长片更久。建议约 15 秒轮询一次。

成功时响应携带稳定的 Essevin 中继地址(上游下载链接 24 小时过期,中继会透明刷新):

{
  "output": {
    "task_id": "blt60x4115010d-d361-4bfc-b131-a382f1c400a5",
    "task_status": "SUCCEEDED",
    "video_url": "https://api.essevin.com/relay/...",
    "orig_prompt": "..."
  },
  "usage": { "video_count": 1, "duration": 5, "SR": 1080, "output_video_duration": 5, "input_video_duration": 0, "ratio": "16:9", "billed_seconds": 5, "billing_bucket": "1080p" }
}

usage.SR 是输出短边像素,决定计费档;usage.ratio 回报的是成片实际比例,可能是原始尺寸(如 1632:937)而不是请求里的枚举值。

失败任务在 output.message 里给出原因:

{ "output": { "task_id": "blt60x...", "task_status": "FAILED", "code": "TaskFailed", "message": "..." } }

计费

只有任务成功才计费,依据上游回报的用量:

  • 输出秒数按上游实际产出的档位(usage.SR)计价,而不是按你请求的档位。
  • 万相 3.0 还会计参考视频的输入秒数,与输出同档价——阿里价目表把它列为「输入和输出单价」。快乐马只计输出秒数。
  • 生成失败或命中安全审核不计费,也不会产生用量记录。

官方牌价见价格页;你的实际费率以登录后的模型目录为准。

本页目录