MiniMax H3(海螺 3.0)已上线 EvoLink领 10 积分免费试
MiniMax H3 API 使用指南
教程

MiniMax H3 API 使用指南

EvoLink 团队
EvoLink 团队
产品团队
2026年7月31日
33 分钟阅读

MiniMax H3 是 MiniMax 最新的视频生成模型,用户也会用 Hailuo 3 或 Hailuo 03 搜索它。模型提供三种不同的生成方式:根据文本直接生成视频、让首帧或尾帧图片动起来,以及根据图片、视频和音频参考素材生成新视频。

这篇指南将介绍如何通过 EvoLink 接入 MiniMax H3,包括怎样选择正确的模型 ID、提交请求、跟踪异步任务以及获取最终视频。三种模式共用统一的视频生成端点,因此可以在不重建任务系统的情况下,把 H3 加入现有的生产工作流。

如果要查看完整模型能力或在线体验,请访问 MiniMax H3 产品页;如果要了解发布信息,请查看 MiniMax H3 发布公告

快速结论

  • 请求端点: POST https://api.evolink.ai/v1/videos/generations
  • 鉴权方式: Bearer API Key
  • 文生视频模型: minimax-h3-text-to-video
  • 图生视频模型: minimax-h3-image-to-video
  • 参考视频模型: minimax-h3-reference-to-video
  • 输出规格: 2K 视频
  • 视频时长: 4–15 秒
  • 任务流程: 提交请求并取得任务 ID,然后轮询任务端点或使用 HTTPS Callback
  • 结果有效期: 完成后的视频需要在 24 小时内下载并保存

目录

  1. MiniMax H3 可以做什么
  2. 核心功能与实际升级
  3. MiniMax H3 API 速览
  4. 如何接入 MiniMax H3 API
  5. 选择正确的生成模式
  6. 快速开始:60 秒提交第一个请求
  7. 理解异步任务流程
  8. 文生视频示例
  9. 图生视频示例
  10. 参考视频示例
  11. 上传本地素材
  12. 完整 TypeScript 实现
  13. 完整 Python 实现
  14. 参数与提示词速查
  15. 常见错误与解决方法
  16. 定价与成本规划
  17. 生产环境检查清单
  18. 实际使用场景
  19. 常见问题

1. MiniMax H3 可以做什么

MiniMax H3 面向短视频生成,并通过不同模式提供不同程度的创作控制。三种 API 模式使用相同的任务生命周期,但接收的输入不同。

模式能做什么常见用途
文生视频根据文字描述直接生成视频广告创意、电影感镜头、社交短片、分镜
图生视频让首帧、尾帧或首尾两张图片动起来产品动画、角色动作、受控转场
参考视频使用图片、视频和可选音频作为新视频的参考角色和风格参考、动作指导、多素材生产

三种模式的主要区别在于控制程度。文生视频给模型更大的发挥空间;图生视频用一张或两张关键帧固定画面;参考视频则允许在提示词中说明多份素材分别应该如何影响结果。

2. 核心功能与实际升级

对开发者来说,H3 最重要的变化可以直接从输入和输出合同中看到:

  • 三种独立工作流。 文本、关键帧和多模态参考生成分别使用不同模型 ID,但共用一个 EvoLink 端点。
  • 2K 输出。 当前 H3 路由只开放 2k 画质选项。
  • 4–15 秒可调时长。 duration 接收整数,便于按照镜头规划设置片段长度。
  • 首尾帧控制。 图生视频既可提交首帧,也可提交尾帧,或者同时提交两者。
  • 更丰富的参考输入。 参考视频模式接收有顺序的图片、视频和音频数组,比单张主体图提供更明确的创作控制。
  • 适合生产环境的任务处理。 EvoLink 为三种模式提供统一的异步任务查询和可选完成回调。

最后一项是 EvoLink 的接入能力,不是模型本身的能力。生产应用需要稳定的任务状态、Callback、日志和结果处理,而这些流程不应该随着所选模型改变。

与 Hailuo 2.3 相比有什么不同

对比项EvoLink 上的 Hailuo 2.3EvoLink 上的 MiniMax H3
输出档位根据时长支持 768P 或 1080P2K
视频时长6 秒或 10 秒;1080P 仅支持 6 秒4–15 秒内的任意整数
图片控制图生视频使用一张输入图片支持首帧、尾帧或首尾帧
参考素材没有独立的多模态参考路由支持有顺序的图片、视频和音频参考
模式选择一个模型 ID 自动判断文本或图片模式文本、图片和参考工作流分别使用明确的模型 ID
这张表比较的是 API 合同,不代表视觉质量评测。需要完整的生成效果和迁移对比,请查看 MiniMax H3 与 Hailuo 2.3 对比;需要跨供应商选择工作流时,可继续比较 MiniMax H3 与 Seedance 2.0

官方示例:视频与声音参考

这个由 MiniMax 提供的 H3 示例使用一段视频作为表演参考,并使用一段音频作为音色参考。它也解释了为什么参考视频工作流需要分别排列 video_urlsaudio_urls,而不是把所有输入都当作没有区别的普通附件。
官方来源:MiniMax 的 H3 视频生成指南明确记录了视频和音频参考输入。此处示例使用 Audio 1 作为音色参考。

3. MiniMax H3 API 速览

三种模式均使用以下端点:

POST https://api.evolink.ai/v1/videos/generations
具体输入合同由 model 决定。
模型 ID必填输入可用参考字段画面比例
minimax-h3-text-to-videoprompt不支持媒体参考自适应或指定比例
minimax-h3-image-to-videoprompt,并至少提供 image_startimage_end仅首帧/尾帧图片由输入图片决定
minimax-h3-reference-to-videoprompt,并至少提供一张图片或一段视频image_urlsvideo_urlsaudio_urls自适应

三种模式的共同规则:

  • duration 接收 4–15 的整数,默认值为 5。
  • quality 必须是 2k,不要提交 768p
  • 提示词支持中文和英文。
  • 建议中文提示词不超过 500 个汉字,英文不超过 1,000 个单词。
  • 码率、帧率和编码格式不能自定义。
  • 视频生成采用异步任务。

4. 如何接入 MiniMax H3 API

接入前需要准备 EvoLink 账号、API Key,以及足够完成任务的余额。

  1. 注册或登录 EvoLink。
  2. 打开 API Keys 控制台并创建密钥。
  3. 将密钥保存到服务端环境变量。
  4. 根据现有输入选择 H3 生成模式。
  5. 向统一视频端点提交请求。
EVOLINK_API_KEY=your_api_key

不要把 API Key 放进浏览器 JavaScript、公开代码仓库或移动应用安装包。应当从自己的服务器、Server Action、API Route、Worker 或其他可信运行环境调用 EvoLink API。

5. 选择正确的生成模式

构造请求前,可以先按下面的规则选择:

现有输入或目标应使用的模式
只有场景描述文生视频
需要让一张产品图或角色图动起来图生视频
已经确定视频开始和结束画面同时提供 image_startimage_end 的图生视频
需要多张图片指导输出参考视频
需要参考某段视频的动作或运镜参考视频
希望把音频作为额外参考参考视频,同时至少提供图片或视频
只有一段音频需要补充图片或视频;不支持仅音频请求
MiniMax H3 文生视频、图生视频和多模态参考视频三种工作流
MiniMax H3 文生视频、图生视频和多模态参考视频三种工作流
不要混用不同模式的专属字段。例如,文生视频不接收 image_start,参考视频也不接收 image_startimage_end

6. 快速开始:60 秒提交第一个请求

第 1 步:提交文生视频请求

curl -X POST https://api.evolink.ai/v1/videos/generations \
  -H "Authorization: Bearer $EVOLINK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "minimax-h3-text-to-video",
    "prompt": "一辆紧凑型电动概念车驶过雨夜城市。镜头在车旁跟随,随后缓慢拉远,展示街道上的霓虹倒影。",
    "quality": "2k",
    "aspect_ratio": "16:9",
    "duration": 5
  }'

API 会返回一个异步任务:

{
  "id": "task-unified-example",
  "status": "pending",
  "created": 1785470400
}

第 2 步:查询任务

curl https://api.evolink.ai/v1/tasks/task-unified-example \
  -H "Authorization: Bearer $EVOLINK_API_KEY"
status 变为 completed 后,从 results 中读取生成的视频 URL。
{
  "id": "task-unified-example",
  "status": "completed",
  "results": [
    "https://example-cdn.com/generated-video.mp4"
  ]
}

请在 24 小时内下载结果。如果应用需要长期使用该视频,应将它复制到自己的持久化存储中。

7. 理解异步任务流程

视频生成所需时间远长于普通 HTTP 请求,因此创建接口不会让连接一直等待视频完成,而是先返回任务。

提交请求
   ↓
取得任务 ID
   ↓
pending → processing
   ↓
completed 或 failed
   ↓
下载已完成的结果

任务可能处于以下状态:

  • pending:请求正在队列中等待。
  • processing:视频正在生成。
  • completedresults 数组中包含输出结果。
  • failed:检查错误信息,判断应该修正请求还是重试。

轮询还是 Callback?

命令行工具、测试脚本或低请求量应用可以轮询 GET /v1/tasks/{task_id},但要限制轮询间隔和最长等待时间。
生产环境可以在生成请求中添加 HTTPS callback_url。当任务变为 completedfailed 且计费确认完成后,EvoLink 会发送回调。Callback URL 必须:
  • 使用 HTTPS。
  • 长度不超过 2,048 个字符。
  • 指向公开地址,不能解析到内网 IP。
  • 在 10 秒内响应。
  • 接受事件后返回 2xx 状态码。

回调失败后最多重试 3 次,间隔约为 1 秒、2 秒和 4 秒。由于同一事件可能被多次送达,处理程序必须具备幂等性。

8. 文生视频示例

文生视频只接收提示词,不需要媒体输入。

{
  "model": "minimax-h3-text-to-video",
  "prompt": "一个陶瓷咖啡杯放在窗边的木桌上。晨光中蒸汽缓慢上升,镜头围绕杯子顺时针移动。自然光、真实材质、安静的编辑风格。",
  "quality": "2k",
  "aspect_ratio": "4:3",
  "duration": 8,
  "callback_url": "https://api.example.com/webhooks/evolink"
}

支持的画面比例包括:

  • 21:9
  • 16:9
  • 4:3
  • 1:1
  • 3:4
  • 9:16
  • 自适应
文生视频不接受 image_startimage_endimage_urlsvideo_urlsaudio_urls。如果画面必须围绕特定主体生成,应改用图生视频或参考视频。
完整字段请查看 MiniMax H3 文生视频 API 文档

9. 图生视频示例

图生视频需要 prompt,并且至少提供 image_startimage_end 之一。

让首帧图片动起来

{
  "model": "minimax-h3-image-to-video",
  "prompt": "镜头缓慢靠近,布料在微风中自然摆动。保持产品形状、标签和光线不变。",
  "image_start": "https://assets.example.com/product-start.webp",
  "quality": "2k",
  "duration": 6
}

生成到指定尾帧

{
  "model": "minimax-h3-image-to-video",
  "prompt": "从远景开始,镜头持续向前移动,画面逐渐过渡到提供的最终帧,并保持自然光线稳定。",
  "image_end": "https://assets.example.com/landscape-end.jpg",
  "quality": "2k",
  "duration": 10
}

同时控制首帧和尾帧

{
  "model": "minimax-h3-image-to-video",
  "prompt": "密封包装平稳打开,产品升起到最终展示位置。保持 Logo 清晰,避免突然切换镜头。",
  "image_start": "https://assets.example.com/package-closed.png",
  "image_end": "https://assets.example.com/package-open.png",
  "quality": "2k",
  "duration": 8
}

输入图片必须满足以下条件:

  • 使用 JPG、JPEG、PNG、WEBP、HEIC 或 HEIF 格式。
  • 单张不超过 30 MB。
  • 宽度和高度均在 256–5,760 像素之间。
  • 宽高比在 0.4–2.5 之间。
  • 能通过公开 HTTP(S) URL 访问。
完整请求体不能超过 64 MB。该路由不接收 Base64 数据或 mm_file:// 引用。输出比例由输入图片决定。该路由根本不接受 aspect_ratio 字段,传入就会返回参数错误。
完整字段请查看 MiniMax H3 图生视频 API 文档

10. 参考视频示例

参考视频接收有顺序的图片、视频和可选音频数组。当提示词无法准确描述主体、动作或节奏时,可以用参考素材提供更明确的约束。

{
  "model": "minimax-h3-reference-to-video",
  "prompt": "使用 Image 1 作为主角,使用 Image 2 作为服装参考。沿用 Video 1 的运镜和行走节奏,Audio 1 仅作为节奏参考。角色走过现代美术馆,停在一扇落地窗旁。",
  "image_urls": [
    "https://assets.example.com/character.jpg",
    "https://assets.example.com/wardrobe.jpg"
  ],
  "video_urls": [
    "https://assets.example.com/camera-reference.mp4"
  ],
  "audio_urls": [
    "https://assets.example.com/pacing-reference.mp3"
  ],
  "quality": "2k",
  "duration": 10
}

参考素材限制

  • image_urls 最多 9 项。
  • video_urls 最多 3 项。
  • audio_urls 最多 3 项。
  • 参考文件总数不超过 12 个,因此 9 + 3 + 3 的满配会被拒绝。
  • 至少需要一张图片或一段视频。
  • 音频不能作为唯一的参考类型。
  • 每段参考视频或音频必须为 2–15 秒。
  • 参考视频总时长不能超过 15 秒。
  • 参考音频总时长不能超过 15 秒。
  • 参考视频必须使用 MP4 或 MOV,视频编码为 H.264 或 H.265,可包含 AAC 或 MP3 音频。
  • 每段参考视频不超过 50 MB。
  • 参考视频的宽和高均为 256–5,760 像素,宽高比为 0.4–2.5,帧率为 23.976–60 FPS。
  • 参考音频必须使用 WAV 或 MP3,单段不超过 15 MB。
  • 完整 JSON 请求体不能超过 64 MB。

参考图片遵循图生视频中相同的格式、大小、尺寸和 URL 规则。

按数组顺序引用素材

在提示词中使用 Image 1Image 2Video 1Audio 1。数字对应素材在各自数组中的位置。不要使用 @image1,这不是该 API 合同支持的语法。

参考视频的输入时长也会计费,因此不要上传超出任务实际需要的长素材。

完整字段请查看 MiniMax H3 参考视频 API 文档

11. 上传本地素材

生成路由要求媒体文件具有公开 HTTP(S) URL。如果素材位于本地磁盘或应用的私有存储中,应先上传到 EvoLink 文件服务。

curl -X POST https://files-api.evolink.ai/api/v1/files/upload/stream \
  -H "Authorization: Bearer $EVOLINK_API_KEY" \
  -F "file=@./product-start.png"
从响应中读取 file_url,然后将它作为 image_startimage_end 或参考数组中的一项传给生成接口。
上传文件会在 72 小时后过期,因此文件服务适合连接输入素材与生成任务,不应当用作永久存储。完整合同请查看流式文件上传文档

12. 完整 TypeScript 实现

以下示例应运行在 Node.js 18 或更高版本的可信服务端环境中。

const API_BASE = "https://api.evolink.ai";

type TaskStatus = "pending" | "processing" | "completed" | "failed";

interface VideoTask {
  id: string;
  status: TaskStatus;
  results?: string[];
  error?: {
    code?: string;
    message?: string;
  };
}

interface BaseRequest {
  prompt: string;
  quality?: "2k";
  duration?: number;
  callback_url?: string;
}

type AspectRatio =
  | "adaptive"
  | "21:9"
  | "16:9"
  | "4:3"
  | "1:1"
  | "3:4"
  | "9:16";

// 每个路由对应一个类型,非法的字段组合无法通过编译。
interface TextToVideoRequest extends BaseRequest {
  model: "minimax-h3-text-to-video";
  aspect_ratio?: AspectRatio;
}

interface ImageToVideoRequest extends BaseRequest {
  model: "minimax-h3-image-to-video";
  image_start?: string;
  image_end?: string;
  // 没有 aspect_ratio:该路由会拒绝此字段,并根据输入图片
  // 推导画面比例。
}

interface ReferenceToVideoRequest extends BaseRequest {
  model: "minimax-h3-reference-to-video";
  aspect_ratio?: AspectRatio;
  image_urls?: string[];
  video_urls?: string[];
  audio_urls?: string[];
}

type VideoRequest =
  | TextToVideoRequest
  | ImageToVideoRequest
  | ReferenceToVideoRequest;

function getApiKey(): string {
  const apiKey = process.env.EVOLINK_API_KEY;

  if (!apiKey) {
    throw new Error("EVOLINK_API_KEY is not configured");
  }

  return apiKey;
}

async function requestJson<T>(
  path: string,
  init?: RequestInit,
): Promise<T> {
  const response = await fetch(`${API_BASE}${path}`, {
    ...init,
    headers: {
      Authorization: `Bearer ${getApiKey()}`,
      "Content-Type": "application/json",
      ...init?.headers,
    },
  });

  if (!response.ok) {
    const body = await response.text();
    throw new Error(`EvoLink request failed (${response.status}): ${body}`);
  }

  return response.json() as Promise<T>;
}

async function submitVideo(payload: VideoRequest): Promise<VideoTask> {
  return requestJson<VideoTask>("/v1/videos/generations", {
    method: "POST",
    body: JSON.stringify(payload),
  });
}

async function getTask(taskId: string): Promise<VideoTask> {
  return requestJson<VideoTask>(
    `/v1/tasks/${encodeURIComponent(taskId)}`,
  );
}

function wait(milliseconds: number): Promise<void> {
  return new Promise((resolve) => setTimeout(resolve, milliseconds));
}

async function waitForVideo(
  taskId: string,
  timeoutMs = 10 * 60 * 1000,
  pollIntervalMs = 5_000,
): Promise<string> {
  const deadline = Date.now() + timeoutMs;

  while (Date.now() < deadline) {
    const task = await getTask(taskId);

    if (task.status === "completed") {
      const resultUrl = task.results?.[0];

      if (!resultUrl) {
        throw new Error("Task completed without a result URL");
      }

      return resultUrl;
    }

    if (task.status === "failed") {
      throw new Error(task.error?.message ?? "Video generation failed");
    }

    await wait(pollIntervalMs);
  }

  throw new Error(`Timed out while waiting for task ${taskId}`);
}

async function main(): Promise<void> {
  const task = await submitVideo({
    model: "minimax-h3-text-to-video",
    prompt:
      "A slow aerial approach toward a coastal observatory at sunrise, " +
      "natural cloud movement, cinematic wide shot",
    quality: "2k",
    aspect_ratio: "16:9",
    duration: 6,
  });

  const videoUrl = await waitForVideo(task.id);
  console.log(videoUrl);
}

void main();

高请求量系统应当用 Callback 和持久化任务记录替代应用侧轮询。任务 ID 应作为请求、账单记录、日志和最终结果之间的主要关联字段。

13. 完整 Python 实现

import os
import time
from typing import NotRequired, TypedDict, cast

import requests

API_BASE = "https://api.evolink.ai"
API_KEY = os.environ["EVOLINK_API_KEY"]
HEADERS = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json",
}


class VideoError(TypedDict):
    code: NotRequired[str]
    message: NotRequired[str]


class VideoTask(TypedDict):
    id: str
    status: str
    results: NotRequired[list[str]]
    error: NotRequired[VideoError]


class VideoPayload(TypedDict):
    model: str
    prompt: str
    image_start: NotRequired[str]
    quality: NotRequired[str]
    duration: NotRequired[int]


def submit_video(payload: VideoPayload) -> VideoTask:
    response = requests.post(
        f"{API_BASE}/v1/videos/generations",
        headers=HEADERS,
        json=payload,
        timeout=30,
    )
    response.raise_for_status()
    return cast(VideoTask, response.json())


def get_task(task_id: str) -> VideoTask:
    response = requests.get(
        f"{API_BASE}/v1/tasks/{task_id}",
        headers=HEADERS,
        timeout=30,
    )
    response.raise_for_status()
    return cast(VideoTask, response.json())


def wait_for_video(
    task_id: str,
    timeout_seconds: int = 600,
    poll_interval_seconds: int = 5,
) -> str:
    deadline = time.monotonic() + timeout_seconds

    while time.monotonic() < deadline:
        task = get_task(task_id)
        status = task["status"]

        if status == "completed":
            results = task.get("results", [])
            if not results:
                raise RuntimeError("Task completed without a result URL")
            return str(results[0])

        if status == "failed":
            error = task.get("error", {})
            message = error.get("message", "Video generation failed")
            raise RuntimeError(message)

        time.sleep(poll_interval_seconds)

    raise TimeoutError(f"Timed out while waiting for task {task_id}")


task = submit_video(
    {
        "model": "minimax-h3-image-to-video",
        "prompt": (
            "The camera slowly orbits the product while the background "
            "light shifts from warm to cool. Preserve the product design."
        ),
        "image_start": "https://assets.example.com/product.webp",
        "quality": "2k",
        "duration": 8,
    }
)

print(wait_for_video(task["id"]))

这份示例在尽量减少依赖的同时,声明了代码会读取的字段。更大的 Python 服务可以使用 Pydantic 校验完整响应,再写入存储。

14. 参数与提示词速查

参数支持情况

参数文生视频图生视频参考视频说明
model使用对应模式的模型 ID
prompt必填必填必填支持中文和英文
quality仅支持 2k
duration4–15 的整数
aspect_ratio文生视频和参考生视频支持 adaptive 或固定比例;图生视频不接受该字段,比例由输入图片决定
image_start首帧
image_end尾帧
image_urls最多 9 项
video_urls最多 3 项
audio_urls最多 3 项,不能单独使用
callback_url公开 HTTPS URL

文生视频提示词结构

[主体] + [动作] + [环境] + [镜头运动] + [光线] + [视觉氛围]

示例:

一名骑行者在黎明时穿过雾林上方的悬索桥。镜头从后方跟随,随后上升到航拍全景。柔和自然光,动作真实。

图生视频提示词结构

[需要增加的运动] + [镜头运动] + [必须保留的元素] + [转场或结束状态]

示例:

镜头围绕椅子缓慢移动半圈,阳光逐渐掠过地面。保持椅子的形状、材质和颜色完全不变。

参考视频提示词结构

使用 [Image/Video/Audio 编号] 作为 [具体用途]。
[描述新场景、动作、镜头和最终构图。]

示例:

使用 Image 1 作为角色,Image 2 作为车辆,Video 1 作为运镜参考。角色在日落时分的安静沙漠中走下车辆,镜头沿用 Video 1 的向前弧形运动。

更多可复用输入见 MiniMax H3 提示词与视频示例,每条案例都标注了参考素材、可替换变量与约束。API 文档始终是可用字段的权威来源。

15. 常见错误与解决方法

错误或现象常见原因解决方法
401 unauthorizedAPI Key 缺失、格式错误或已经失效检查 Bearer Header 和服务端环境变量
402 insufficient quota账户余额不足充值或缩小计划任务量
403 permission deniedKey 或账户没有路由访问权限检查密钥权限和模型可用状态
404 task_not_found任务 ID 错误或已不可用原样保存创建接口返回的任务 ID
429 rate_limit_exceeded请求过多使用指数退避并限制并发
请求拒绝 768pH3 只接受 2k设置 "quality": "2k"
服务无法读取图片URL 私有、过期或禁止外部访问通过 EvoLink 文件服务上传
Base64 图片被拒绝路由要求公开 URL上传文件并使用返回的 file_url
参考请求无效只提供了音频至少添加一张图片或一段视频
参考素材被拒绝数量、大小、格式或总时长超过限制提交前校验素材
任务完成但结果无法访问结果 URL 已超过 24 小时有效期将视频复制到持久化存储
Callback 被重复处理回调重试或事件被处理两次在数据库中实现幂等处理

只有在不修改请求也可能成功时才应重试,例如临时网络故障或限流。参数错误和不受支持的素材需要先修正,再重新提交。

16. 定价与成本规划

不要在应用中硬编码复制来的价格表,也不要把旧文章当作当前价格来源。请以 EvoLink 定价页为准。

规划成本时需要考虑:

  • 输出时长越长,请求的生成工作量越大。
  • 参考视频模式还可能计算输入参考视频的时长。
  • 验证提示词或工作流时,先使用满足需求的最短时长。
  • 开始大批量任务前,先进行少量测试生成并检查结果。
  • 每个任务都记录模式、输出时长、参考视频时长、状态和成本。
  • 评估每条可用视频的成本时,要区分失败生成和可用结果。

EvoLink 的统一 API 也便于生产团队比较 H3 与其他视频模型,而不必替换鉴权、任务跟踪和账单集成。

17. 生产环境检查清单

上线前确认:

  • API Key 只保存在服务端。
  • 提交前校验各模式的专属参数。
  • 媒体 URL 可以公开访问,并在生成期间持续有效。
  • 为请求设置超时。
  • 限制轮询频率和最长等待时间。
  • 遇到 429 和临时服务错误时进行退避。
  • 开始轮询前先保存任务 ID。
  • 不要假设 H3 任务可以取消;当前合同返回 can_cancel: false
  • 将 Callback 视为可能重复送达的事件。
  • 只有成功接收事件后才返回 2xx。
  • 临时 URL 过期前保存已完成的视频。
  • 记录模型 ID、时长、参考输入、状态和结果。
  • 设置账户级并发和预算控制。
  • 不依赖未写入文档的 Header 或输出设置。

18. 实际使用场景

使用场景推荐模式原因
快速验证广告创意文生视频从文案得到视觉测试的路径最短
让产品图动起来图生视频保持提供的产品构图
制作前后状态转场图生视频首尾帧可以定义两个状态
角色主导的短视频参考视频多份视觉参考可以约束主体
匹配某种运镜参考视频短视频素材可以提供运动参考
探索分镜文生视频或图生视频根据是否已经有确认过的画面选择
在 App 中加入视频生成任意模式统一端点和任务流程简化集成
多模型生产路由任意模式同一 EvoLink Key 和任务系统可调用其他模型

19. 常见问题

怎么接入 MiniMax H3 API?

创建 EvoLink 账号和 API Key,然后从服务端向 POST https://api.evolink.ai/v1/videos/generations 发送请求。

应该使用哪个 MiniMax H3 模型 ID?

只有提示词时使用 minimax-h3-text-to-video;需要首尾帧控制时使用 minimax-h3-image-to-video;需要有顺序的图片、视频和音频参考时使用 minimax-h3-reference-to-video

MiniMax H3 支持 2K 视频吗?

支持。当前 EvoLink H3 路由使用 2k 作为画质值。

API 支持 4K 或 60 FPS 输出吗?

当前 H3 API 合同没有提供这些输出控制。不要提交文档中没有的画质、帧率、码率或编码格式。

最长可以生成多少秒?

当前支持 4–15 秒的整数时长。

可以上传本地图片吗?

可以。先通过 EvoLink 文件服务上传图片,再将返回的公开 file_url 传给生成接口。

生成接口接受 Base64 图片吗?

不接受,需要使用公开 HTTP(S) URL。

最多可以使用多少份参考素材?

参考视频最多接收 9 张图片、3 段视频和 3 段音频,同时还要满足单文件和总时长限制。

可以只用音频参考生成视频吗?

不可以。参考请求必须至少包含一张图片或一段视频,音频只能作为额外参考。

怎么查询生成状态?

调用 GET /v1/tasks/{task_id},或者在原始请求中提供公开 HTTPS Callback URL。

生成结果 URL 可以保存多久?

结果 URL 有效期为 24 小时,需要在过期前下载视频或转存到自己的存储。

JavaScript 和 Python 都能调用 MiniMax H3 吗?

可以。该 API 使用标准 HTTPS,任何支持 JSON 请求和 Bearer 鉴权的服务端环境都可以调用。

应该轮询任务还是使用 Callback?

测试和低请求量脚本使用轮询更方便;生产队列和较大请求量通常更适合使用 Callback。


开始接入

准备好把 AI 成本降低 89% 吗?

现在就开始使用 EvoLink,体验智能 API 路由的强大能力。