输入提示词,开始创作
输入提示词,生成视频
上传人像和音频,生成数字人视频
https://api.huameng.space
HM Studio 采用火山方舟(Ark)标准 JSON 格式作为主要调用方式,同时兼容 multipart/form-data 通用格式。
multipart/form-data 的通用兼容接口,适用于已有 multipart 对接的项目或需要直接上传文件的场景。推荐新项目优先使用「火山方舟格式」Tab 中的 JSON 接口。所有 API 请求均以以下地址为基准路径:
https://api.huameng.space
示例:调用图片生成接口的完整 URL 为 https://api.huameng.space/v1/images/generations
所有 API 请求(除 /health 外)均需携带 API Key 进行身份认证,支持以下两种方式:
| 方式 | Header | 示例 |
|---|---|---|
| Bearer Token | Authorization | Bearer your-api-key |
| X-API-Key | X-API-Key | your-api-key |
Authorization: Bearer <key> 方式,与 OpenAI 风格保持一致。| HTTP 状态码 | 含义 | 说明 |
|---|---|---|
400 | 参数错误 | 请求参数缺失或无效,或渠道不存在/已关闭 |
401 | 鉴权失败 | API Key 无效、已过期或已禁用 |
402 | 余额不足 | 账户余额不足以支付本次生成费用 |
429 | 频率限制 | 请求频率超限(默认 60 次/分钟),或生成中任务数超限(响应含 "code":"GENERATING_LIMIT") |
500 | 服务器错误 | 内部服务异常 |
503 | 服务繁忙 | 服务暂时不可用,请稍后重试 |
错误响应格式:
{
"error": "错误信息描述"
}
// 生成中限制的特殊格式:
{
"error": "当前有 N 个任务正在生成中,请等待完成后再提交",
"code": "GENERATING_LIMIT"
}
/v1/balance查询当前 API Key 的账户余额及统计信息。
GET /v1/balance Authorization: Bearer your-api-key
| 字段 | 类型 | 说明 |
|---|---|---|
balance | number | 可用余额(积分) |
frozen | number | 冻结中金额(生成中任务的预扣费) |
total_recharged | number | 累计充值金额 |
total_consumed | number | 累计消费金额 |
created_at | string | 账户创建时间(ISO 8601) |
{
"balance": 1500,
"frozen": 200,
"total_recharged": 5000,
"total_consumed": 3300,
"created_at": "2026-03-15T08:00:00.000Z"
}
/v1/transactions查询当前 API Key 的消费/充值流水记录,支持分页和类型过滤。
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
page | number | 否 | 1 | 页码 |
page_size | number | 否 | 20 | 每页条数(最大 100) |
type | string | 否 | 全部 | 过滤类型:confirm 扣费 / recharge 充值 / rollback 退款 / pre_deduct 预扣费 |
{
"transactions": [
{
"id": 123,
"type": "confirm",
"amount": -200,
"balance_after": 1300,
"model": "jimeng-video-seedance-2.0-fast",
"task_type": "video",
"task_id": "a1b2c3d4-...",
"channel": "official",
"note": "视频生成 5s 720p",
"created_at": "2026-04-02T12:00:00.000Z"
}
],
"total": 56,
"page": 1,
"page_size": 20
}
/v1/channels获取所有已启用的计费渠道及其定价配置。仅用于展示,不可修改。
{
"channels": [
{
"name": "default",
"display_name": "逆向渠道",
"description": "基于逆向工程的默认渠道",
"is_default": true,
"pricing": { /* 各模型定价配置 */ }
}
]
}
/v1/recharge使用卡密为当前 API Key 充值。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
card_code | string | 是 | 充值卡密 |
POST /v1/recharge Content-Type: application/json { "card_code": "XXXX-XXXX-XXXX" }
{
"balance": 2500,
"recharged_amount": 1000
}
/v1/models获取当前可用的所有模型列表。
{
"data": [
{ "id": "HM-Image-5.0Lite", "type": "image" },
{ "id": "HM-Video-SD2.0", "type": "video" },
{ "id": "HM-Avatar-Pro", "type": "lip_sync" }
]
}
图像模型:(均为逆向渠道)
| 模型名称 | 支持分辨率 | 最大参考图数 | 渠道 |
|---|---|---|---|
HM-Image-5.0Lite | 2K / 4K | 6 | 逆向 |
HM-Image-4.6 | 2K / 4K | 6 | 逆向 |
HM-Image-4.5 | 2K / 4K | 6 | 逆向 |
HM-Image-4.1 | 2K / 4K | 6 | 逆向 |
HM-Image-4.0 | 2K / 4K | 6 | 逆向 |
HM-Image-3.1 | 1K / 2K | 2 | 逆向 |
HM-Image-3.0 | 1K / 2K | 2 | 逆向 |
HM-Image-NanoBanana | 1K | 3 | 逆向 |
视频模型:
| 模型名称 | 支持时长 | 支持分辨率 | 渠道 |
|---|---|---|---|
HM-Video-SD2.0 | 4~15s | 720p | 官方 |
HM-Video-SD2.0Fast | 4~15s | 720p | 官方 |
HM-Video-SD1.5Pro | 5s / 10s / 12s | 720p / 1080p | 逆向 |
HM-Video-SD1.0 | 5s / 10s | 720p / 1080p | 逆向 |
HM-Video-SD1.0Mini | 5s / 10s | 720p / 1080p | 逆向 |
HM-Video-SD1.0Fast | 5s / 10s | 720p / 1080p | 逆向 |
| 模型 | 时长 | 分辨率 | 纯文生视频 | 首帧 | 首尾帧 | 多帧引导 | 全能引用 |
|---|---|---|---|---|---|---|---|
SD2.0 | 4~15s(连续) | 720p | ✔ | ✔ | ✔ | ✘ | ✔ |
SD2.0Fast | 4~15s(连续) | 720p | ✔ | ✔ | ✔ | ✘ | ✔ |
SD1.5Pro | 5 / 10 / 12s | 720p / 1080p | ✔ | ✔ | ✔ | ✘ | ✘ |
SD1.0 | 5 / 10s | 720p / 1080p | ✔ | 部分 | 部分 | ✘ | ✘ |
SD1.0Mini | 5 / 10s | 720p / 1080p | ✔ | ✔ | 部分 | ✔ | ✘ |
SD1.0Fast | 5 / 10s | 720p / 1080p | ✔ | ✔ | 部分 | 部分 | ✘ |
数字人模型:(均为逆向渠道)
| 模型名称 | 渠道 |
|---|---|
HM-Avatar-Pro | 逆向 |
HM-Avatar-Turbo | 逆向 |
model 参数请使用 HM 模型名称。可用模型列表会根据实际账号动态变化。/v1/images/generations提交图片生成任务。支持文本生图和参考图生图。请求格式为 multipart/form-data。
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
prompt | string | 是 | - | 生成提示词,最大 4000 字符 |
model | string | 否 | HM-Image-4.5 | 图像模型名称 |
ratio | string | 否 | 1:1 | 宽高比,可选:1:1 4:3 3:4 16:9 9:16 3:2 2:3 21:9 |
resolution | string | 否 | 2k | 分辨率,可选:1k 2k 4k(不同模型支持范围不同) |
negative_prompt | string | 否 | "" | 反向提示词,指定不希望出现的内容 |
sample_strength | number | 否 | 0.5 | 参考图影响强度,范围 0~1 |
intelligent_ratio | boolean | 否 | - | 是否启用智能比例 |
images | file[] | 否 | - | 参考图文件上传(最多 10 张,单张 ≤20MB) |
image_url | string | 否 | - | 参考图 URL(单张) |
image_urls | string/array | 否 | - | 参考图 URL 数组(JSON 字符串或数组格式) |
channel | string | 否 | official | 计费渠道:official(官方,稳定)/ default(逆向,不稳定)。不同渠道定价不同 |
纯文本生图
curl -X POST "https://api.huameng.space/v1/images/generations" \ -H "Authorization: Bearer your-api-key" \ -F "prompt=一只可爱的橘猫在花园里晒太阳" \ -F "model=HM-Image-5.0Lite" \ -F "ratio=16:9" \ -F "resolution=2k" \ -F "channel=official"
单图参考生图(文件上传)
curl -X POST "https://api.huameng.space/v1/images/generations" \ -H "Authorization: Bearer your-api-key" \ -F "prompt=将这张照片转换为动漫风格" \ -F "model=HM-Image-5.0Lite" \ -F "sample_strength=0.7" \ -F "images=@/path/to/reference.jpg"
单图参考生图(URL 方式)
curl -X POST "https://api.huameng.space/v1/images/generations" \ -H "Authorization: Bearer your-api-key" \ -F "prompt=将这张照片转换为水彩画风格" \ -F "model=HM-Image-5.0Lite" \ -F "sample_strength=0.6" \ -F "image_url=https://example.com/photo.jpg"
多图参考生图(文件上传,最多 6~10 张)
curl -X POST "https://api.huameng.space/v1/images/generations" \ -H "Authorization: Bearer your-api-key" \ -F "prompt=融合这些图片的风格,生成一幅新画作" \ -F "model=HM-Image-5.0Lite" \ -F "sample_strength=0.5" \ -F "images=@/path/to/ref1.jpg" \ -F "images=@/path/to/ref2.jpg" \ -F "images=@/path/to/ref3.jpg"
多图参考生图(URL 方式)
curl -X POST "https://api.huameng.space/v1/images/generations" \ -H "Authorization: Bearer your-api-key" \ -F "prompt=融合这些参考图的元素" \ -F "model=HM-Image-4.5" \ -F "sample_strength=0.5" \ -F 'image_urls=["https://example.com/ref1.jpg","https://example.com/ref2.jpg","https://example.com/ref3.jpg"]'
// HTTP 202 Accepted { "task_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "status": "pending", "model": "HM-Image-5.0Lite", "created_at": "2026-04-01T12:00:00.000Z" }
/v1/videos/generations提交视频生成任务。支持多种功能模式:首尾帧、多帧引导、全能引用。请求格式为 multipart/form-data。
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
prompt | string | 是 | - | 生成提示词,最大 4000 字符 |
model | string | 否 | HM-Video-SD1.5Pro | 视频模型名称 |
ratio | string | 否 | 1:1 | 宽高比,可选值同图片生成 |
duration | number | 否 | 5 | 视频时长(秒),范围 1~15,不同模型有不同限制 |
video_resolution | string | 否 | 720p | 视频分辨率,可选:720p 1080p |
function_mode | string | 否 | 自动检测 | 功能模式:first_last_frames / multi_frame / omni_reference |
channel | string | 否 | official | 计费渠道:official(官方,稳定)/ default(逆向,不稳定) |
first_last_frames| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
first_frame | file | 否 | 首帧图片文件(与 URL 二选一) |
end_frame | file | 否 | 尾帧图片文件(与 URL 二选一) |
first_frame_url | string | 否 | 首帧图片 URL |
end_frame_url | string | 否 | 尾帧图片 URL |
multi_frame| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
frame_1 ~ frame_10 | file | 否 | 帧引导图片文件(至少 2 帧) |
multi_frames | string/array | 否 | 帧引导图片 URL 数组(JSON 字符串或数组),每项为 URL 字符串 或 { "url": "..." } 对象 |
omni_reference| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
materials | string(JSON) | 否 | 素材描述 JSON 数组,每项含 type(image/video/audio)、url、name |
image_file_1 ~ image_file_9 | file | 否 | 图片素材文件上传 |
video_file_1 ~ video_file_3 | file | 否 | 视频素材文件上传 |
audio_file_1 ~ audio_file_3 | file | 否 | 音频素材文件上传 |
function_mode,系统按以下优先级自动判断:
① 提供了 materials JSON 或上传了 image_file_* / video_file_* / audio_file_* 文件(或对应 HTTP URL 字段)→ omni_reference;
② 上传的 frame_* 文件数 + multi_frames URL 数合计 ≥2 → multi_frame;
③ 其他情况 → first_last_frames。① 纯文生视频
支持所有视频模型
# SD2.0 — 支持 4~15 秒连续时长 curl -X POST "https://api.huameng.space/v1/videos/generations" \ -H "Authorization: Bearer your-api-key" \ -F "prompt=一只猫咪在草地上奔跑" \ -F "model=HM-Video-SD2.0" \ -F "ratio=16:9" \ -F "duration=8" # SD2.0Fast — 快速生成 14 秒长视频 curl -X POST "https://api.huameng.space/v1/videos/generations" \ -H "Authorization: Bearer your-api-key" \ -F "prompt=城市夜景延时摄影,霓虹灯闪烁" \ -F "model=HM-Video-SD2.0Fast" \ -F "ratio=16:9" \ -F "duration=14" # SD1.0 — 10 秒 + 1080p curl -X POST "https://api.huameng.space/v1/videos/generations" \ -H "Authorization: Bearer your-api-key" \ -F "prompt=海浪拍打礁石,日落余晖" \ -F "model=HM-Video-SD1.0" \ -F "ratio=16:9" \ -F "duration=10" \ -F "video_resolution=1080p"
② 仅首帧引导(文件上传)
支持:SD2.0 / SD2.0Fast / SD1.5Pro / SD1.0Mini / SD1.0Fast(SD1.0 部分地区)
curl -X POST "https://api.huameng.space/v1/videos/generations" \ -H "Authorization: Bearer your-api-key" \ -F "prompt=花朵慢慢盛开" \ -F "model=HM-Video-SD1.5Pro" \ -F "first_frame=@/path/to/flower.jpg" \ -F "duration=5"
② 仅首帧引导(URL 方式)
curl -X POST "https://api.huameng.space/v1/videos/generations" \ -H "Authorization: Bearer your-api-key" \ -F "prompt=花朵慢慢盛开" \ -F "model=HM-Video-SD1.5Pro" \ -F "first_frame_url=https://example.com/flower.jpg" \ -F "duration=5"
③ 首尾帧模式(文件上传)
支持:SD2.0 / SD2.0Fast / SD1.5Pro(SD1.0/Mini/Fast 部分地区)
curl -X POST "https://api.huameng.space/v1/videos/generations" \ -H "Authorization: Bearer your-api-key" \ -F "prompt=人物从站立缓缓坐下" \ -F "model=HM-Video-SD1.5Pro" \ -F "first_frame=@/path/to/standing.jpg" \ -F "end_frame=@/path/to/sitting.jpg" \ -F "duration=12" \ -F "video_resolution=1080p"
③ 首尾帧模式(URL 方式)
curl -X POST "https://api.huameng.space/v1/videos/generations" \ -H "Authorization: Bearer your-api-key" \ -F "prompt=人物从站立缓缓坐下" \ -F "model=HM-Video-SD2.0" \ -F "first_frame_url=https://example.com/standing.jpg" \ -F "end_frame_url=https://example.com/sitting.jpg" \ -F "duration=5"
④ 多帧引导(文件上传,至少 2 帧,最多 5~10 帧)
支持:SD1.0Mini(SD1.0Fast 部分地区)。SD2.0/SD1.5Pro/SD1.0 不支持多帧
curl -X POST "https://api.huameng.space/v1/videos/generations" \ -H "Authorization: Bearer your-api-key" \ -F "prompt=人物从站立到坐下再到躺下的动作过渡" \ -F "model=HM-Video-SD1.0Mini" \ -F "function_mode=multi_frame" \ -F "frame_1=@/path/to/standing.jpg" \ -F "frame_2=@/path/to/sitting.jpg" \ -F "frame_3=@/path/to/lying.jpg" \ -F "duration=10"
④ 多帧引导(URL 方式)
curl -X POST "https://api.huameng.space/v1/videos/generations" \ -H "Authorization: Bearer your-api-key" \ -F "prompt=人物从站立到坐下再到躺下的动作过渡" \ -F "model=HM-Video-SD1.0Mini" \ -F "function_mode=multi_frame" \ -F 'multi_frames=["https://example.com/standing.jpg","https://example.com/sitting.jpg","https://example.com/lying.jpg"]' \ -F "duration=10"
⑤ 全能引用 omni_reference — 单素材 + @引用(文件上传)
仅支持:SD2.0 / SD2.0Fast
# prompt 中用 @名称 引用素材,materials 中的 name 必须与之对应 # 注意:prompt 以 @ 开头时须用 --form-string 代替 -F,避免 curl 将 @ 解读为文件路径 curl -X POST "https://api.huameng.space/v1/videos/generations" \ -H "Authorization: Bearer your-api-key" \ --form-string "prompt=@角色A 在咖啡馆微笑" \ -F "model=HM-Video-SD2.0" \ -F "function_mode=omni_reference" \ -F "ratio=16:9" \ -F "duration=5" \ -F 'materials=[{"type":"image","name":"角色A"}]' \ -F "image_file_1=@/path/to/charA.jpg"
⑤ 全能引用 omni_reference — 多素材 + @引用(URL 方式,含图片/视频/音频)
# 可同时引用多个图片素材、视频素材和音频素材 curl -X POST "https://api.huameng.space/v1/videos/generations" \ -H "Authorization: Bearer your-api-key" \ --form-string "prompt=@角色A 在咖啡馆和 @角色B 聊天,背景播放音乐" \ -F "model=HM-Video-SD2.0" \ -F "function_mode=omni_reference" \ -F "ratio=16:9" \ -F "duration=10" \ -F 'materials=[{"type":"image","url":"https://example.com/charA.jpg","name":"角色A"},{"type":"image","url":"https://example.com/charB.jpg","name":"角色B"},{"type":"video","url":"https://example.com/cafe-bg.mp4","name":"背景"},{"type":"audio","url":"https://example.com/bgm.mp3","name":"音乐"}]'
@素材名称 来引用 materials 中定义的素材。素材名称必须与 materials 数组中对应项的 name 字段完全一致。文件上传时 materials 数组中可省略 url,系统会自动关联 image_file_N / video_file_N / audio_file_N 字段。@ 开头时,必须使用 --form-string 代替 -F,否则 curl 会将 @ 解读为文件路径导致报错。// HTTP 202 Accepted { "task_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "status": "pending", "model": "HM-Video-SD2.0", "created_at": "2026-04-01T12:00:00.000Z" }
/v1/videos/lip-sync一步完成数字人口播视频生成:上传人像和音频,系统自动进行人脸检测并提交生成任务。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
image | file | 三选一 | 人像图片文件 |
image_uri | string | 三选一 | 已上传的图片 URI |
image_url | string | 三选一 | 图片 URL |
audio | file | 三选一 | 音频文件 |
audio_url | string | 三选一 | 音频 URL |
audio_vid | string | 三选一 | 已上传的音频 VID |
model | string | 否 | 模型名称,默认 HM-Avatar-Turbo |
prompt | string | 否 | 额外提示词 |
face_index | number | 否 | 人脸索引(图片含多人时选择),默认 0 |
channel | string | 否 | 计费渠道:official(官方,稳定)/ default(逆向,不稳定),默认 official |
curl -X POST "https://api.huameng.space/v1/videos/lip-sync" \ -H "Authorization: Bearer your-api-key" \ -F "image=@/path/to/portrait.jpg" \ -F "audio=@/path/to/speech.mp3" \ -F "model=HM-Avatar-Pro"
// HTTP 202 Accepted { "task_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "status": "pending", "model": "HM-Avatar-Pro", "created_at": "2026-04-01T12:00:00.000Z" }
手动模式将流程拆分为多步操作,可以预览人脸检测结果并精确选择目标人脸。
POST /v1/videos/lip-sync/upload-image
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
image | file | 是 | 人像图片文件 |
// 响应 { "image_uri": "tos://bucket/path/image.jpg", "width": 1024, "height": 768 }
POST /v1/videos/lip-sync/upload-audio
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
audio | file | 是 | 音频文件 |
// 响应 { "audio_vid": "v0d2a1g10000...", "duration_ms": 15000 }
POST /v1/videos/lip-sync/detect-faces
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
image_uri | string | 三选一 | 步骤 1 返回的 image_uri |
image_url | string | 三选一 | 图片 URL |
image | file | 三选一 | 图片文件 |
// 响应 { "session_id": "sess_abc123", "faces": [ ... ], "face_count": 2, "image_uri": "tos://...", "expires_in": 300 }
POST /v1/videos/lip-sync/submit
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
session_id | string | 是 | 步骤 3 返回的 session_id |
audio_vid | string | 二选一 | 步骤 2 返回的 audio_vid |
audio_url | string | 二选一 | 音频 URL |
audio_duration | number | 否 | 音频时长(毫秒),用于精确控制生成时长 |
face_index | number | 否 | 选择的人脸索引,默认 0 |
model | string | 否 | 模型名称,默认 HM-Avatar-Turbo |
prompt | string | 否 | 额外提示词 |
channel | string | 否 | 计费渠道,默认 official |
// 响应 HTTP 202 { "task_id": "a1b2c3d4-...", "status": "pending", "model": "HM-Avatar-Turbo", "created_at": "2026-04-01T12:00:00.000Z" }
POST /v1/videos/lip-sync/cancel
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
session_id | string | 是 | 要取消的 session_id |
/v1/tasks/{taskId}通过 task_id 轮询任务状态。建议每 3~5 秒查询一次。
GET /v1/tasks/a1b2c3d4-e5f6-7890-abcd-ef1234567890 Authorization: Bearer your-api-key
| 字段 | 类型 | 说明 |
|---|---|---|
task_id | string | 任务 ID |
status | string | 任务状态:pending / submitted / generating / post_processing / finalizing / success / failed |
model | string | 使用的模型 |
task_type | string | 任务类型:image / video / lip_sync |
progress | object | 原始进度对象,包含即梦返回的详细进度信息 |
progress_pct | number | 进度百分比(0~100) |
progress_text | string | 进度文案(如 "生成中 45%") |
result_urls | string[] | 生成成功时返回,结果文件 URL 数组 |
fail_reason | string | 生成失败时返回,失败原因描述 |
created_at | string | 任务创建时间(ISO 8601) |
{
"task_id": "a1b2c3d4-...",
"status": "success",
"model": "HM-Image-5.0Lite",
"task_type": "image",
"progress_pct": 100,
"progress_text": "生成完成",
"result_urls": [
"https://cdn.example.com/result/image_001.png"
],
"created_at": "2026-04-01T12:00:00.000Z"
}
{
"task_id": "a1b2c3d4-...",
"status": "failed",
"model": "HM-Image-5.0Lite",
"task_type": "image",
"progress_pct": 0,
"progress_text": "生成失败",
"fail_reason": "内容审核未通过,请修改后重试",
"created_at": "2026-04-01T12:00:00.000Z"
}
| fail_reason | 说明 |
|---|---|
| 内容审核未通过,请修改后重试 | 提示词或素材触发内容审核 |
| 素材包含人脸,审核未通过 | 素材中人脸不符合审核要求 |
| 生成的视频内容存在风险,请修改提示词后重试 | 生成结果触发安全过滤 |
| 素材上传失败,请重试 | 素材文件上传过程出错 |
| 生成超时,请重试 | 生成任务处理超时 |
| 服务繁忙,请稍后重试 | 服务暂时负载较高 |
task_id →
② 轮询 /v1/tasks/{taskId} →
③ 当 status 变为 success 时从 result_urls 获取结果
import requests, time API_BASE = "https://api.huameng.space" API_KEY = "your-api-key" headers = {"Authorization": f"Bearer {API_KEY}"} # 1. 提交图片生成任务 resp = requests.post(f"{API_BASE}/v1/images/generations", headers=headers, data={ "prompt": "一只可爱的橘猫在花园里晒太阳", "model": "HM-Image-5.0Lite", "ratio": "16:9", "resolution": "2k", "channel": "official" }) task_id = resp.json()["task_id"] print(f"任务已提交: {task_id}") # 2. 轮询任务状态 while True: time.sleep(3) result = requests.get( f"{API_BASE}/v1/tasks/{task_id}", headers=headers ).json() print(f"状态: {result['status']} | {result.get('progress_text', '')}") if result["status"] == "success": print("生成成功!", result["result_urls"]) break elif result["status"] == "failed": print("生成失败:", result.get("fail_reason")) break
所有 API 请求均以以下地址为基准路径:
https://api.huameng.space
示例:调用视频生成接口的完整 URL 为 https://api.huameng.space/api/v3/contents/generations/tasks
所有 API 请求(除 /health 外)均需携带 API Key 进行身份认证,支持以下两种方式:
| 方式 | Header | 示例 |
|---|---|---|
| Bearer Token(推荐) | Authorization | Bearer your-api-key |
| X-API-Key | X-API-Key | your-api-key |
Authorization: Bearer <key> 方式,与火山方舟 SDK 保持一致。| HTTP 状态码 | 含义 | 说明 |
|---|---|---|
400 | 参数错误 | 请求参数缺失或无效,或渠道不存在/已关闭 |
401 | 鉴权失败 | API Key 无效、已过期或已禁用 |
402 | 余额不足 | 账户余额不足以支付本次生成费用 |
429 | 频率/并发限制 | 请求频率超限(默认 60 次/分钟),或生成中任务数超限(响应含 "code":"GENERATING_LIMIT") |
500 | 服务器错误 | 内部服务异常 |
503 | 服务繁忙 | 服务暂时不可用,请稍后重试 |
错误响应格式:
{
"error": {
"message": "错误信息描述",
"type": "invalid_request_error"
}
}
// 生成中限制的特殊格式(HTTP 429):
{
"error": "当前有 N 个任务正在生成中,请等待完成后再提交",
"code": "GENERATING_LIMIT"
}
/v1/balance查询当前 API Key 的账户余额及统计信息。
GET /v1/balance Authorization: Bearer your-api-key
| 字段 | 类型 | 说明 |
|---|---|---|
balance | number | 可用余额(积分) |
frozen | number | 冻结中金额(生成中任务的预扣费) |
total_recharged | number | 累计充值金额 |
total_consumed | number | 累计消费金额 |
created_at | string | 账户创建时间(ISO 8601) |
{
"balance": 1500,
"frozen": 200,
"total_recharged": 5000,
"total_consumed": 3300,
"created_at": "2026-03-15T08:00:00.000Z"
}
/v1/transactions查询当前 API Key 的消费/充值流水记录,支持分页和类型过滤。
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
page | number | 否 | 1 | 页码 |
page_size | number | 否 | 20 | 每页条数(最大 100) |
type | string | 否 | 全部 | 过滤类型:confirm / recharge / rollback / pre_deduct |
{
"transactions": [
{
"id": 123,
"type": "confirm",
"amount": -200,
"balance_after": 1300,
"model": "jimeng-video-seedance-2.0-fast",
"task_type": "video",
"task_id": "a1b2c3d4-...",
"channel": "official",
"note": "视频生成 5s 720p",
"created_at": "2026-04-02T12:00:00.000Z"
}
],
"total": 56,
"page": 1,
"page_size": 20
}
/v1/channels获取所有已启用的计费渠道及其定价配置。仅用于展示,不可修改。
{
"channels": [
{
"name": "default",
"display_name": "逆向渠道",
"is_default": true,
"pricing": { /* 定价配置 */ }
}
]
}
/v1/recharge使用卡密为当前 API Key 充值。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
card_code | string | 是 | 充值卡密 |
POST /v1/recharge Content-Type: application/json { "card_code": "XXXX-XXXX-XXXX" }
{
"balance": 2500,
"recharged_amount": 1000
}
/v1/models获取当前可用的所有模型列表。
{
"data": [
{ "id": "HM-Image-5.0Lite", "type": "image" },
{ "id": "HM-Video-SD2.0", "type": "video" },
{ "id": "HM-Avatar-Pro", "type": "lip_sync" }
]
}
图像模型:(均为逆向渠道)
| 模型名称 | 支持分辨率 | 最大参考图数 | 渠道 |
|---|---|---|---|
HM-Image-5.0Lite | 2K / 4K | 6 | 逆向 |
HM-Image-4.6 | 2K / 4K | 6 | 逆向 |
HM-Image-4.5 | 2K / 4K | 6 | 逆向 |
HM-Image-4.1 | 2K / 4K | 6 | 逆向 |
HM-Image-4.0 | 2K / 4K | 6 | 逆向 |
HM-Image-3.1 | 1K / 2K | 2 | 逆向 |
HM-Image-3.0 | 1K / 2K | 2 | 逆向 |
HM-Image-NanoBanana | 1K | 3 | 逆向 |
视频模型:
| 模型名称 | 支持时长 | 支持分辨率 | 渠道 |
|---|---|---|---|
HM-Video-SD2.0 | 4~15s | 720p | 官方 |
HM-Video-SD2.0Fast | 4~15s | 720p | 官方 |
HM-Video-SD1.5Pro | 5s / 10s / 12s | 720p / 1080p | 逆向 |
HM-Video-SD1.0 | 5s / 10s | 720p / 1080p | 逆向 |
HM-Video-SD1.0Mini | 5s / 10s | 720p / 1080p | 逆向 |
HM-Video-SD1.0Fast | 5s / 10s | 720p / 1080p | 逆向 |
| 模型 | 时长 | 分辨率 | 纯文生视频 | 首帧 | 首尾帧 | 多帧引导 | 全能引用 |
|---|---|---|---|---|---|---|---|
SD2.0 | 4~15s(连续) | 720p | ✔ | ✔ | ✔ | ✘ | ✔ |
SD2.0Fast | 4~15s(连续) | 720p | ✔ | ✔ | ✔ | ✘ | ✔ |
SD1.5Pro | 5 / 10 / 12s | 720p / 1080p | ✔ | ✔ | ✔ | ✘ | ✘ |
SD1.0 | 5 / 10s | 720p / 1080p | ✔ | 部分 | 部分 | ✘ | ✘ |
SD1.0Mini | 5 / 10s | 720p / 1080p | ✔ | ✔ | 部分 | ✔ | ✘ |
SD1.0Fast | 5 / 10s | 720p / 1080p | ✔ | ✔ | 部分 | 部分 | ✘ |
数字人模型:(均为逆向渠道)
| 模型名称 | 渠道 |
|---|---|
HM-Avatar-Pro | 逆向 |
HM-Avatar-Turbo | 逆向 |
model 参数请使用 HM 模型名称。可用模型列表会根据实际账号动态变化。/v1/images/generations标准图片生成接口。请求格式为 application/json,请求体须包含 size 字段。
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
prompt | string | 是 | - | 生成提示词 |
model | string | 否 | HM-Image-4.5 | 模型名称 |
size | string | 触发字段 | - | 尺寸描述,支持 1K、2K、宽x高(如 1920x1080)格式。系统自动映射为最接近的宽高比和分辨率 |
response_format | string | 否 | - | 方舟格式触发标记 |
n | number | 否 | 1 | 生成图片数量 |
seed | number | 否 | - | 随机种子,用于复现生成结果 |
negative_prompt | string | 否 | "" | 反向提示词 |
sample_strength | number | 否 | - | 参考图影响强度 |
intelligent_ratio | boolean | 否 | - | 智能比例 |
image | string | 否 | - | 参考图 URL(单张) |
images | string[] | 否 | - | 参考图 URL 数组(多张) |
channel | string | 否 | official | 计费渠道:official(官方,稳定)/ default(逆向,不稳定) |
1K → 比例 1:1 + 分辨率 1k;
2K → 比例 1:1 + 分辨率 2k;
宽x高 → 系统自动匹配最接近的宽高比,分辨率由像素面积决定(面积 > 1500×1500 = 2,250,000 像素时为 2k,否则为 1k)。
例:1920x1080(2,073,600 像素)→ 16:9 + 1k;2560x1440(3,686,400 像素)→ 16:9 + 2k。
纯文本生图(使用 2K 快捷值)
{
"prompt": "一只可爱的橘猫在花园里晒太阳",
"model": "HM-Image-5.0Lite",
"size": "2K",
"n": 1
}
纯文本生图(使用 宽x高 指定比例)
{
"prompt": "赛博朋克城市天际线",
"model": "HM-Image-5.0Lite",
"size": "2560x1440"
}
单图参考生图(通过 URL)
{
"prompt": "将这张照片转换为水彩画风格",
"model": "HM-Image-5.0Lite",
"size": "2K",
"image": "https://example.com/photo.jpg",
"sample_strength": 0.7
}
多图参考生图(通过 URL 数组)
{
"prompt": "融合这些参考图的风格元素,生成一幅新画作",
"model": "HM-Image-4.5",
"size": "1024x1024",
"images": [
"https://example.com/ref1.jpg",
"https://example.com/ref2.jpg",
"https://example.com/ref3.jpg"
],
"sample_strength": 0.5
}
// HTTP 202 Accepted { "task_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "status": "pending", "model": "HM-Image-5.0Lite", "created_at": "2026-04-01T12:00:00.000Z" }
GET /v1/tasks/{taskId} 轮询结果。task_id(无前缀)、status: "pending"、created_at 为 ISO 字符串,使用 GET /v1/tasks/{taskId} 轮询。
视频接口返回 id(含 cgt- 前缀)、status: "queued"、created_at 为 Unix 时间戳,使用 GET /api/v3/.../tasks?filter.task_ids= 轮询。
子客户端需根据任务类型使用不同的 ID 字段名和轮询端点。
/api/v3/contents/generations/tasks标准视频生成接口。请求格式为 application/json,支持两种传参方式:content 数组方式和扁平参数方式。
使用 content 数组传递文本和素材,支持在文本中嵌入特殊指令。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | 否 | 模型名称,默认 HM-Video-SD1.5Pro |
content | array | 是 | 内容数组(详见下方结构说明) |
function_mode | string | 否 | 指定功能模式(不指定则自动推断) |
channel | string | 否 | 计费渠道:official(官方,稳定)/ default(逆向,不稳定),默认 official |
文本项 type: "text"
| 字段 | 说明 |
|---|---|
type | 固定 "text" |
text | 提示词文本,支持嵌入以下指令:--ratio 16:9 宽高比--dur 5 时长(秒)--fps 24 帧率--res 1080p 分辨率--mode omni_reference 功能模式 |
图片项 type: "image_url"
| 字段 | 说明 |
|---|---|
type | 固定 "image_url" |
image_url | 图片 URL(string 或 { url } 对象) |
role | 角色标记:first_frame / start(首帧)、last_frame / end(尾帧)、frame(多帧引导)、material(全能引用素材)。省略 role 时默认作为首帧处理 |
name | 素材名称(仅 role: "material" 时有效) |
视频项 type: "video_url"
| 字段 | 说明 |
|---|---|
type | 固定 "video_url" |
video_url | 视频 URL(string 或 { url } 对象) |
role | 必须为 material,缺少此字段时该视频项会被忽略 |
name | 素材名称,用于 prompt 中 @名称 引用 |
音频项 type: "audio_url"
| 字段 | 说明 |
|---|---|
type | 固定 "audio_url" |
audio_url | 音频 URL(string 或 { url } 对象) |
name | 素材名称,用于 prompt 中 @名称 引用 |
role 字段,系统自动将所有音频项作为素材处理。① 纯文生视频
支持所有视频模型。文本指令:--ratio 宽高比、--dur 时长、--res 分辨率
// SD2.0 — 支持 4~15 秒连续时长 { "model": "HM-Video-SD2.0", "content": [ { "type": "text", "text": "一只猫咪在草地上奔跑 --ratio 16:9 --dur 8" } ] } // SD2.0Fast — 快速模式 14 秒 { "model": "HM-Video-SD2.0Fast", "content": [ { "type": "text", "text": "城市夜景延时摄影 --ratio 16:9 --dur 14" } ] } // SD1.0 — 10 秒 + 1080p { "model": "HM-Video-SD1.0", "content": [ { "type": "text", "text": "海浪拍打礁石,日落余晖 --ratio 16:9 --dur 10 --res 1080p" } ] }
② 仅首帧引导
支持:SD2.0 / SD2.0Fast / SD1.5Pro / SD1.0Mini / SD1.0Fast(SD1.0 部分地区)。role 使用 first_frame 或 start
{
"model": "HM-Video-SD1.5Pro",
"content": [
{
"type": "text",
"text": "花朵慢慢盛开 --ratio 16:9 --dur 5"
},
{
"type": "image_url",
"image_url": "https://example.com/flower.jpg",
"role": "first_frame"
}
]
}
③ 首尾帧模式
支持:SD2.0 / SD2.0Fast / SD1.5Pro(SD1.0/Mini/Fast 部分地区)。分别使用 first_frame 和 last_frame(或 start / end)
{
"model": "HM-Video-SD1.5Pro",
"content": [
{
"type": "text",
"text": "人物从站立缓缓坐下 --ratio 16:9 --dur 12 --res 1080p"
},
{
"type": "image_url",
"image_url": "https://example.com/standing.jpg",
"role": "first_frame"
},
{
"type": "image_url",
"image_url": "https://example.com/sitting.jpg",
"role": "last_frame"
}
]
}
④ 多帧引导模式(至少 2 帧,最多 5~10 帧)
支持:SD1.0Mini(SD1.0Fast 部分地区)。role 使用 frame
{
"model": "HM-Video-SD1.0Mini",
"function_mode": "multi_frame",
"content": [
{
"type": "text",
"text": "人物从站立到坐下再到躺下的动作过渡 --ratio 16:9 --dur 10"
},
{
"type": "image_url",
"image_url": "https://example.com/standing.jpg",
"role": "frame"
},
{
"type": "image_url",
"image_url": "https://example.com/sitting.jpg",
"role": "frame"
},
{
"type": "image_url",
"image_url": "https://example.com/lying.jpg",
"role": "frame"
}
]
}
⑤ 全能引用 omni_reference — @引用多素材(图片 + 视频 + 音频)
仅支持:SD2.0 / SD2.0Fast。prompt 中用 @素材名称 引用素材,name 字段必须对应。role 使用 material
{
"model": "HM-Video-SD2.0",
"content": [
{
"type": "text",
"text": "@角色A 在咖啡馆和 @角色B 聊天,@背景视频 作为场景,配上 @背景音乐 --ratio 16:9 --dur 10"
},
{
"type": "image_url",
"image_url": "https://example.com/characterA.jpg",
"role": "material",
"name": "角色A"
},
{
"type": "image_url",
"image_url": "https://example.com/characterB.jpg",
"role": "material",
"name": "角色B"
},
{
"type": "video_url",
"video_url": "https://example.com/cafe-scene.mp4",
"role": "material",
"name": "背景视频"
},
{
"type": "audio_url",
"audio_url": "https://example.com/bgm.mp3",
"name": "背景音乐"
}
]
}
@素材名称 来引用 content 数组中 role: "material" 的素材项。素材名称必须与对应项的 name 字段完全一致。图片素材使用 type: "image_url",视频素材使用 type: "video_url",音频素材使用 type: "audio_url"。当请求体不包含 content 但包含 prompt 时,使用扁平参数方式。
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
model | string | 否 | HM-Video-SD1.5Pro | 模型名称 |
prompt | string | 是 | - | 生成提示词 |
aspect_ratio 或 ratio | string | 否 | 16:9 | 宽高比 |
duration | number | 否 | 5 | 视频时长(秒) |
quality 或 resolution | string | 否 | 720p | 视频分辨率 |
fps | number | 否 | - | 帧率 |
function_mode | string | 否 | 自动推断 | 功能模式 |
image_urls | string[] | 否 | - | 图片素材 URL 数组 |
video_urls | string[] | 否 | - | 视频素材 URL 数组 |
audio_urls | string[] | 否 | - | 音频素材 URL 数组 |
channel | string | 否 | official | 计费渠道:official(官方)/ default(逆向,不稳定) |
function_mode,系统直接采用该模式。若未指定,则按以下规则自动推断:
① 存在 video_urls 或 audio_urls(任一非空)→ omni_reference(仅 SD2.0/SD2.0Fast 支持);
② 仅 image_urls 且 ≤2 张 → first_last_frames(第 1 张作首帧,第 2 张作尾帧);
③ 仅 image_urls 且 ≥3 张 → omni_reference;
④ 不传任何 URL → 纯文生视频(first_last_frames 无帧)。
如需使用多帧引导模式,请使用 content 数组方式。
纯文生视频(不传任何 URL)
{
"model": "HM-Video-SD2.0Fast",
"prompt": "城市夜景延时摄影",
"aspect_ratio": "16:9",
"duration": 14
}
纯文生视频 — SD1.5Pro 12 秒 1080p
{
"model": "HM-Video-SD1.5Pro",
"prompt": "一只猫咪在草地上奔跑",
"aspect_ratio": "16:9",
"duration": 12,
"quality": "1080p"
}
全能引用(传入图片/视频/音频 URL → 自动进入 omni_reference,仅 SD2.0/SD2.0Fast)
{
"model": "HM-Video-SD2.0",
"prompt": "角色在咖啡馆聊天,配上背景音乐",
"aspect_ratio": "16:9",
"duration": 10,
"image_urls": [
"https://example.com/charA.jpg",
"https://example.com/charB.jpg"
],
"video_urls": ["https://example.com/cafe.mp4"],
"audio_urls": ["https://example.com/bgm.mp3"]
}
// HTTP 200 OK { "id": "cgt-a1b2c3d4-e5f6-7890-abcd-ef1234567890", "model": "HM-Video-SD2.0", "status": "queued", "created_at": 1711929600 }
id 带有 cgt- 前缀,created_at 为 Unix 时间戳(秒)。任务状态使用 queued / running / succeeded / failed。/api/v3/contents/generations/tasks标准任务批量查询接口。支持同时查询多个任务状态。
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
filter.task_ids 或 task_ids | string | 是 | - | 逗号分隔的任务 ID 列表(含 cgt- 前缀) |
page_num | number | 否 | 1 | 页码 |
page_size | number | 否 | 100 | 每页条数 |
GET /api/v3/contents/generations/tasks?filter.task_ids=cgt-a1b2c3d4-...,cgt-e5f6g7h8-... Authorization: Bearer your-api-key
| 字段 | 类型 | 说明 |
|---|---|---|
items | array | 任务列表 |
items[].id | string | 任务 ID(含 cgt- 前缀) |
items[].model | string | 模型 ID |
items[].status | string | 状态:queued / running / succeeded / failed |
items[].content.video_url | string | 成功时返回视频 URL |
items[].error | object | 失败时返回错误信息 |
items[].error.message | string | 用户友好的错误原因描述 |
items[].error.type | string | 错误类型,固定为 generation_error |
items[].progress | object | 进度信息 |
items[].created_at | number | 创建时间(Unix 秒) |
items[].updated_at | number | 更新时间(Unix 秒) |
total | number | 总数 |
page_num | number | 当前页码 |
page_size | number | 每页条数 |
{
"items": [
{
"id": "cgt-a1b2c3d4-...",
"model": "HM-Video-SD2.0",
"status": "succeeded",
"content": {
"video_url": "https://cdn.example.com/result/video_001.mp4"
},
"created_at": 1711929600,
"updated_at": 1711929900
}
],
"total": 1,
"page_num": 1,
"page_size": 100
}
{
"items": [
{
"id": "cgt-e5f6g7h8-...",
"model": "HM-Video-SD1.5Pro",
"status": "failed",
"error": {
"message": "该模型仅支持 720p 分辨率",
"type": "generation_error"
},
"created_at": 1711929600,
"updated_at": 1711929800
}
],
"total": 1,
"page_num": 1,
"page_size": 100
}
| 对比项 | 火山方舟格式(推荐) | 通用兼容格式 |
|---|---|---|
| 请求格式 | application/json | multipart/form-data |
| 图片生成路径 | POST /v1/images/generations(JSON + size 字段) | POST /v1/images/generations(multipart) |
| 视频生成路径 | POST /api/v3/contents/generations/tasks | POST /v1/videos/generations |
| 任务查询路径 | GET /api/v3/contents/generations/tasks(批量) | GET /v1/tasks/{taskId}(单个) |
| 任务 ID 格式 | cgt-UUID | UUID |
| 时间格式 | Unix 时间戳(秒) | ISO 8601 字符串 |
| 状态枚举 | queued / running / succeeded / failed |
pending / submitted / generating / post_processing / finalizing / success / failed |
| 视频生成 HTTP 码 | 200 | 202 |
| 数字人 | 请使用通用兼容格式接口 | 完整支持(自动模式 + 手动模式) |
| 适用场景 | 标准对接、SDK 集成、新项目接入 | 已有 multipart 对接的项目、文件直传场景 |
import requests, time API_BASE = "https://api.huameng.space" API_KEY = "your-api-key" headers = { "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json" } # 1. 提交视频生成任务(火山方舟格式) resp = requests.post( f"{API_BASE}/api/v3/contents/generations/tasks", headers=headers, json={ "model": "HM-Video-SD2.0", "content": [ { "type": "text", "text": "一只猫咪在草地上奔跑 --ratio 16:9 --dur 5" } ] }) task_id = resp.json()["id"] print(f"任务已提交: {task_id}") # 2. 轮询任务状态(火山方舟格式) while True: time.sleep(5) result = requests.get( f"{API_BASE}/api/v3/contents/generations/tasks", headers=headers, params={"filter.task_ids": task_id} ).json() item = result["items"][0] if result["items"] else None if not item: print("任务未找到") break print(f"状态: {item['status']}") if item["status"] == "succeeded": print("生成成功!", item["content"]["video_url"]) break elif item["status"] == "failed": print("生成失败") break # 3. 提交图片生成任务(火山方舟格式) resp = requests.post( f"{API_BASE}/v1/images/generations", headers=headers, json={ "model": "HM-Image-5.0Lite", "prompt": "一只可爱的橘猫", "size": "1920x1080" }) img_task_id = resp.json()["task_id"] # 图片任务使用 /v1/tasks/{taskId} 轮询(与通用格式相同)
channel 参数指定渠道(如 official 官方渠道、default 逆向渠道),不指定时使用系统默认渠道(管理员设置)加载中...
输入你的 API Key 以使用生成功能
| 时间 | 类型 | 渠道 | 模型 | 任务 | 金额 | 余额 | 任务ID |
|---|---|---|---|---|---|---|---|
| 加载中... | |||||||