Skip to content

happyhorse-1.0-r2v 参考生视频 API 使用文档

HappyHorse-参考生视频模型支持传入多张参考图像,通过文本提示词描述场景,将图像中的主体角色融合生成一段流畅的视频。模型可理解 character1、character2 等参考指代标识,将不同图像中的角色自然融入同一视频场景。视频支持 720P/1080P 分辨率、5 种宽高比(16:9/9:16/3:4/4:3/1:1)、3~15 秒时长,任务通常在 1~5 分钟内完成,采用异步模式提交后通过任务 ID 轮询获取结果。

模型名称

  • happyhorse-1.0-r2v

接口地址

接口请求方式URL
提交任务POSThttps://www.dmxapi.cn/v1/responses
获取结果POSThttps://www.dmxapi.cn/v1/responses

WARNING

请妥善保管您的 API Key!严禁将密钥泄露给他人、硬编码到代码中或提交到公开的代码仓库。

参考生视频 示例代码

python
import requests
import json
import base64
import mimetypes


# ═══════════════════════════════════════════════════════════════
# 🔑 步骤1: 配置 API 连接信息
# ═══════════════════════════════════════════════════════════════

# 🌐 DMXAPI 服务端点地址
url = "https://www.dmxapi.cn/v1/responses"

# 🔐 DMXAPI 密钥 (请替换为您自己的密钥)
# 获取方式: 登录 DMXAPI 官网 -> 个人中心 -> API 密钥管理
api_key = "sk-***************************************************"

# ═══════════════════════════════════════════════════════════════
# 📋 步骤2: 配置请求头
# ═══════════════════════════════════════════════════════════════

headers = {
    "Content-Type": "application/json",      # 指定请求体为 JSON 格式
    "Authorization": f"{api_key}",           # token 认证方式
}

# ═══════════════════════════════════════════════════════════════
# 📁 步骤3: 配置参考图片来源 (本地路径 或 公网URL 任意混用)
# ═══════════════════════════════════════════════════════════════

# 按照数组顺序定义 prompt 中角色引用的顺序:
#   第 1 个对应 [Image 1], 第 2 个对应 [Image 2], 以此类推
# 参考图像数量限制: 1~9 张
#
# 每个元素既可以是本地文件路径, 也可以是公网 URL 地址, 程序会自动识别:
#   - 本地路径示例: "C:/Users/15664/Desktop/hh-v2v-girl.jpg"
#   - 公网 URL 示例: "https://xxx/xxx.jpg"
reference_image_sources = [
    # 示例1: 本地图片路径 (请替换为您自己的图片路径)
    "C:/Users/a1/Pictures/hh-v2v-girl01.jpg",

    # 示例2: 公网 URL 地址 (与本地路径可混用)
    "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20260424/fvuihk/hh-v2v2-folding-fan.jpg",

    # 示例3: 本地图片路径
    "C:/Users/a1/Pictures/hh-v2v-earrings03.jpg",
]


# ╔═══════════════════════════════════════════════════════════════╗
# ║        ⚙️ 图片处理逻辑(无需修改)                              ║
# ╚═══════════════════════════════════════════════════════════════╝

def image_to_base64(image_path):
    mime_map = {
        ".jpg": "image/jpeg", ".jpeg": "image/jpeg",
        ".png": "image/png",  ".webp": "image/webp",
    }
    ext = "." + image_path.rsplit(".", 1)[-1].lower()
    mime_type = mime_map.get(ext)
    if mime_type is None:
        mime_type = mimetypes.guess_type(image_path)[0] or "image/png"
    with open(image_path, "rb") as f:
        base64_data = base64.b64encode(f.read()).decode("utf-8")
    return f"data:{mime_type};base64,{base64_data}"

def build_image_url(image_source):
    src = image_source.strip()
    if src.lower().startswith(("http://", "https://")):
        return src
    else:
        return image_to_base64(src)

media_list = []
for source in reference_image_sources:
    media_list.append({
        "type": "reference_image",
        "url": build_image_url(source),
    })


# ═══════════════════════════════════════════════════════════════
# 💬 步骤4: 配置请求参数
# ═══════════════════════════════════════════════════════════════

payload = {
    # 【model】(string, 必选) 模型名称, 固定值: happyhorse-1.0-r2v
    "model": "happyhorse-1.0-r2v",

    # 【input】(array, 必选) 输入的基本信息, 包括参考图像和提示词
    "input": [{
        # 【prompt】(string, 必选) 文本提示词
        # 支持任何语言, 长度不超过 5000 个非中文字符或 2500 个中文字符
        # 注意! prompt 中必须明确标明 [Image 1]、[Image 2] 等, 否则模型会报错
        "prompt": (
            "[Image 1]中身着红色旗袍的女性,镜头先以侧面中景勾勒旗袍修身剪裁与S型曲线,"
            "随即切换至低角度仰拍,捕捉她轻抬玉手展开[Image 2]中的折扇的同时,"
            "[Image 3]中的流苏耳坠随头部转动轻盈摆动的细节,最后推近至面部特写,"
            "定格在她指尖轻点扇骨、眼波流转间的含蓄风情,多视角全方位展现东方韵味。"
        ),

        # 【media】(array, 必选) 媒体素材列表
        # 由步骤3的 reference_image_sources 自动构建, 无需手动修改
        "media": media_list,
    }],

    # 【parameters】(object, 可选) 视频生成参数
    "parameters": {
        # 【resolution】(string, 可选) 分辨率档位: "1080P"(默认) / "720P"
        "resolution": "720P",
        # 【ratio】(string, 可选) 宽高比: "16:9"(默认)/"9:16"/"3:4"/"4:3"/"1:1"
        "ratio": "16:9",
        # 【duration】(integer, 可选) 时长(秒), 取值 3~15, 默认 5
        "duration": 3,
        # 【watermark】(boolean, 可选) 是否添加水印, true(默认)/false
        # 水印位于视频右下角, 文案固定为 "Happy Horse"
        "watermark": True,
        # 【seed】(integer, 可选) 随机数种子, 取值 [0, 2147483647]
        # 固定 seed 可提升结果可复现性 (但不保证完全一致)
        "seed": 11,
    },
}


# ═══════════════════════════════════════════════════════════════
# 📤 步骤5: 发送请求并输出结果
# ═══════════════════════════════════════════════════════════════

response = requests.post(url, headers=headers, json=payload)
print(json.dumps(response.json(), indent=2, ensure_ascii=False))

返回示例

json
{
  "request_id": "3adf70fc-8ad8-98b2-b56e-b5741e21fd58",
  "output": [
    {
      "type": "message",
      "content": [
        {
          "type": "output_text",
          "text": "{\"task_id\":\"f6801082-d1f5-470b-b81e-74360fe72d29\",\"task_status\":\"PENDING\"}"
        }
      ]
    }
  ],
  "usage": {
    "input_tokens": 0,
    "input_tokens_details": {
      "cached_tokens": 0
    },
    "output_tokens": 27000,
    "output_tokens_details": {
      "reasoning_tokens": 0
    },
    "total_tokens": 27000
  }
}

获取结果 示例代码

python
import requests
import json

# 步骤1: 配置 API 连接信息
# DMXAPI 服务端点地址
url = "https://www.dmxapi.cn/v1/responses"

# DMXAPI 密钥 (请替换为您自己的密钥)
api_key = "sk-******************************************"

# 步骤2: 配置请求头
headers = {
    "Content-Type": "application/json",      # 指定请求体为 JSON 格式
    "Authorization": f"{api_key}",           # token 认证方式
}

# 步骤3: 配置请求参数
payload = {
    # 【model】(string, 必选) 查询模型名称
    # 固定值: happyhorse-get,用于查询 happyhorse-1.0-r2v 提交的任务结果
    "model": "happyhorse-get",
    # 【input】(string, 必选) 任务 ID
    # 填入提交任务时返回的 task_id,task_id 查询有效期为 24 小时
    # 任务状态流转: PENDING(排队中) -> RUNNING(处理中) -> SUCCEEDED(成功) / FAILED(失败)
    "input": "62967e89-6174-4d38-9828-aedd2c5d151f"
}

# 步骤4: 发送请求并输出结果
response = requests.post(url, headers=headers, json=payload)

data = response.json()
print(json.dumps(data, indent=2, ensure_ascii=False))

# 提取 video_url(嵌套在 output[0].content[0].text 的 JSON 字符串里)
try:
    text = data["output"][0]["content"][0]["text"]
    inner = json.loads(text)
    video_url = inner.get("video_url")
    if video_url:
        print("\n视频链接:")
        print(video_url)
    else:
        print("\n未找到 video_url,任务状态:", inner.get("task_status"))
except (KeyError, IndexError, json.JSONDecodeError) as e:
    print("\n解析 video_url 失败:", e)

返回示例

json
{
  "request_id": "a011c69c-ef4a-9903-a89e-78f72c9ef33c",
  "output": [
    {
      "type": "message",
      "content": [
        {
          "type": "output_text",
          "text": "{\"task_id\":\"62967e89-6174-4d38-9828-aedd2c5d151f\",\"task_status\":\"SUCCEEDED\",\"submit_time\":\"2026-04-28 14:26:42.286\",\"scheduled_time\":\"2026-04-28 14:26:42.330\",\"end_time\":\"2026-04-28 14:28:24.417\",\"video_url\":\"https://dashscope-a717.oss-accelerate.aliyuncs.com/1d/8a/20260428/17ae637c/51496466-metadata_video_720p_62967e89-6174-4d38-9828-aedd2c5d151f_refiner_watermark.mp4?Expires=1777444103&OSSAccessKeyId=LTAI5tPxpiCM2hjmWrFXrym1&Signature=pi9SIKuTr00DfRgkUfUyYpNRsVk%3D\"}"
        }
      ]
    }
  ],
  "usage": {
    "input_tokens": 0,
    "input_tokens_details": {
      "cached_tokens": 0
    },
    "output_tokens": 0,
    "output_tokens_details": {
      "reasoning_tokens": 0
    },
    "total_tokens": 0
  }
}

视频链接:
https://dashscope-a717.oss-accelerate.aliyuncs.com/1d/8a/20260428/17ae637c/51496466-metadata_video_720p_62967e89-6174-4d38-9828-aedd2c5d151f_refiner_watermark.mp4?Expires=1777444103&OSSAccessKeyId=LTAI5tPxpiCM2hjmWrFXrym1&Signature=pi9SIKuTr00DfRgkUfUyYpNRsVk%3D

© 2026 DMXAPI happyhorse-1.0-r2v 参考生视频

一个 Key 用全球大模型