MiniMax H3(Hailuo 3) EvoLink 출시무료 10크레딧으로 체험
MiniMax H3 API 사용법
지도 시간

MiniMax H3 API 사용법

EvoLink Team
EvoLink Team
Product Team
2026년 7월 31일
42분 소요

MiniMax H3는 Hailuo 3 또는 Hailuo 03으로도 검색되는 MiniMax의 최신 영상 생성 모델입니다. 텍스트로 영상 만들기, 시작 또는 종료 이미지에 움직임 추가하기, 이미지·영상·오디오를 참조해 새 클립 만들기라는 세 가지 워크플로를 지원합니다.

이 가이드에서는 EvoLink를 통해 MiniMax H3에 액세스하고, 올바른 모델 ID를 선택하고, 요청을 제출하고, 비동기 작업을 추적하고, 완성된 영상을 검색하는 방법을 보여줍니다. 예제에서는 세 가지 모드 모두에서 동일한 통합 영상 엔드포인트를 사용하므로 별도의 작업 시스템을 구축하지 않고도 기존 제작 워크플로에 H3를 추가할 수 있습니다.

모델 개요와 온라인 체험은 MiniMax H3 제품 페이지에서 확인하세요. 출시 정보는 MiniMax H3 출시 안내에서 볼 수 있습니다.

빠른 답변

  • 엔드포인트: POST https://api.evolink.ai/v1/videos/generations
  • 인증: Bearer API 키
  • 텍스트-동영상 모델: minimax-h3-text-to-video
  • 이미지-동영상 모델: minimax-h3-image-to-video
  • 참조 영상 모델: minimax-h3-reference-to-video
  • 출력: 2K 영상
  • 시간: 4~15초
  • 작업 흐름: 요청을 제출하고 작업 ID를 받은 다음 작업 엔드포인트를 폴링하거나 HTTPS 콜백을 사용합니다.
  • 결과 수명: 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. FAQ

1. MiniMax H3가 할 수 있는 일

MiniMax H3는 다양한 수준의 창의적인 제어 기능을 갖춘 짧은 형식의 영상 생성을 위해 설계되었습니다. 세 가지 API 모드는 동일한 작업 수명주기를 공유하지만 서로 다른 입력을 허용합니다.

방법기능일반적인 용도
텍스트-동영상작성된 장면 설명에서 직접 영상을 만듭니다.광고 컨셉, 영화 장면, 소셜 클립, 스토리보드
이미지-동영상시작 이미지, 종료 이미지 또는 둘 다에 애니메이션을 적용합니다.제품 애니메이션, 캐릭터 모션, 제어된 전환
참조 영상이미지, 영상 및 선택적 오디오를 새 영상의 참조로 사용합니다.캐릭터 및 스타일 참조, 모션 디렉션, 멀티 에셋 제작

주요 차이점은 제어 범위입니다. 텍스트-동영상은 모델에 가장 큰 자유도를 주고, 이미지-동영상은 구도를 하나 또는 두 개의 프레임에 고정합니다. 참조 영상을 사용하면 여러 원본 미디어가 결과에 어떤 영향을 줄지 지정할 수 있습니다.

2. 주요 기능 및 실질적인 업그레이드

개발자에게 가장 유용한 H3 변경 사항은 입력 및 출력 계약에서 확인할 수 있습니다.

  • 3가지 목적으로 구축된 워크플로. 텍스트, 키프레임 및 멀티모달 참조 생성에는 별도의 모델 ID가 있지만 하나의 EvoLink 엔드포인트를 사용합니다.
  • 2K 출력. 현재 H3 경로는 단일 2k 품질 옵션을 노출합니다.
  • 유연한 4~15초 클립. 지속 시간은 정수이므로 샷 계획에 따라 생성 길이를 더 쉽게 조정할 수 있습니다.
  • 첫 번째 및 마지막 프레임 제어. 이미지-동영상은 시작 이미지, 종료 이미지 또는 둘 다를 허용합니다.
  • 더 풍부한 참조 입력. 참조 영상은 순서가 지정된 이미지, 영상 및 오디오 배열을 허용하므로 단일 피사체 이미지보다 더 명확한 창의적 방향을 가능하게 합니다.
  • 프로덕션 지향 작업 처리. EvoLink는 세 가지 모드에 걸쳐 일관된 비동기 작업 엔드포인트와 선택적 완료 콜백을 제공합니다.

마지막 요점은 모델 기능이 아닌 EvoLink 통합 기능입니다. 프로덕션 애플리케이션에는 선택한 모델에 관계없이 예측 가능한 작업 상태, 콜백, 로깅 및 결과 처리가 필요하기 때문에 중요합니다.

이것이 Hailuo 2.3과 어떻게 다른가요?

영역EvoLink를 통한 Hailuo 2.3EvoLink를 통한 MiniMax H3
출력 계층지속 시간에 따라 768P 또는 1080P2K
클립 길이6~10초; 1080P는 6초로 제한됩니다.4~15초 사이의 정수
이미지 제어이미지-동영상용 입력 이미지 1개시작 이미지, 끝 이미지 또는 둘 다
참조 매체별도의 다중 모드 참조 경로 없음순서가 지정된 이미지, 영상, 오디오 참조
모드 선택자동 텍스트/이미지 모드 감지 기능이 있는 모델 ID 1개텍스트, 이미지 및 참조 워크플로를 위한 세 가지 명시적 모델 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-videopromptimage_start 또는 image_end 중 하나 이상시작/끝 이미지만입력 이미지에 따라 결정
minimax-h3-reference-to-videoprompt 및 하나 이상의 이미지 또는 참조 영상image_urls, video_urls, audio_urls적응형

공유 규칙:

  • duration는 5에서 15 사이의 정수를 허용합니다. 기본값은 5입니다.
  • quality2k여야 합니다. 768p를 보내지 마십시오.
  • 프롬프트는 영어나 중국어로 작성할 수 있습니다.
  • 프롬프트는 영어 단어 1,000자 이내, 한자 500자 이내로 유지하세요.
  • 비트 전송률, 프레임 속도 및 코덱은 구성할 수 없습니다.
  • 생성은 비동기식입니다.

4. MiniMax H3 API에 액세스하는 방법

요청한 작업을 수행하려면 EvoLink 계정, API 키 및 충분한 크레딧이 필요합니다.

  1. EvoLink 계정을 만들거나 로그인하세요.
  2. API 키 대시보드를 열고 키를 생성합니다.
  3. 서버 측 환경 변수에 키를 저장합니다.
  4. 사용 가능한 입력과 일치하는 H3 모드를 선택하십시오.
  5. 통합 영상 엔드포인트에 요청을 제출합니다.
EVOLINK_API_KEY=your_api_key

브라우저 JavaScript, 공개 저장소 또는 모바일 애플리케이션 번들에 이 키를 노출하지 마십시오. 서버, 서버 작업, API 경로, 작업자 또는 다른 신뢰할 수 있는 런타임에서 EvoLink API를 호출하세요.

5. 올바른 생성 모드 선택

페이로드를 구성하기 전에 다음 라우팅 테이블을 사용하세요.

귀하의 의견 또는 목표이 모드를 사용하세요
장면 설명만 있습니다.텍스트-동영상
하나의 제품이나 캐릭터 이미지에 애니메이션을 적용하고 싶습니다.이미지-동영상
동영상이 어떻게 시작하고 끝나야 하는지 알고 계시나요?image_startimage_end를 사용한 이미지-동영상
출력을 안내하려면 여러 이미지가 필요합니다.참조 영상
동작이나 카메라 움직임을 안내하는 영상 클립을 원합니다.참조 영상
오디오를 추가 참조로 사용하고 싶습니다.이미지 또는 영상이 포함된 참조 영상
오디오 파일만 있습니다.이미지나 영상을 추가하세요. 오디오 전용 참조 요청이 잘못되었습니다.
MiniMax H3 텍스트-동영상, 이미지-동영상 및 멀티모달 참조 영상 워크플로
MiniMax H3 텍스트-동영상, 이미지-동영상 및 멀티모달 참조 영상 워크플로
모드별 필드를 혼합하지 마십시오. 예를 들어 텍스트 경로는 image_start를 허용하지 않으며 참조 경로는 image_start 또는 image_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": "A compact electric concept car drives through a rain-soaked city at night. The camera tracks beside the car, then slowly pulls back to reveal neon reflections across the street.",
    "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"
statuscompleted인 경우 results에서 생성된 영상 URL을 읽습니다.
{
  "id": "task-unified-example",
  "status": "completed",
  "results": [
    "https://example-cdn.com/generated-video.mp4"
  ]
}

24시간 이내에 결과를 다운로드하세요. 나중에 애플리케이션에 필요할 경우 내구성 있는 저장소에 복사하세요.

7. 비동기 워크플로 이해

영상 생성은 일반 HTTP 요청보다 시간이 오래 걸립니다. 따라서 create 호출은 영상이 완료될 때까지 연결을 열어 두는 대신 작업을 반환합니다.

Submit request
      ↓
Receive task ID
      ↓
pending → processing
      ↓
completed or failed
      ↓
Download completed result

작업 상태는 다음과 같습니다.

  • pending: 요청이 대기 중입니다.
  • processing: 생성이 진행 중입니다.
  • completed: results 배열에는 출력이 포함됩니다.
  • failed: 오류 정보를 검사하고 요청을 수정해야 할지 재시도해야 할지 결정합니다.

폴링 또는 콜백?

명령줄 도구, 테스트 스크립트 또는 소규모 통합의 경우 폴링이 가장 간단합니다. 제한된 간격과 전체 시간 제한이 있는 GET /v1/tasks/{task_id}를 사용합니다.
프로덕션 워크로드의 경우 생성 요청에 HTTPS callback_url를 추가합니다. EvoLink는 작업이 completed 또는 failed에 도달하고 청구가 확인된 후 콜백을 보냅니다. 콜백 URL은 다음과 같아야 합니다.
  • HTTPS를 사용하세요.
  • 2,048자 이하여야 합니다.
  • 개인 IP가 아닌 공용 대상으로 확인됩니다.
  • 10초 이내에 응답하세요.
  • 이벤트가 수락된 후 2xx 응답을 반환합니다.

실패한 전달은 약 1초, 2초, 4초 지연을 두고 세 번 재시도됩니다. 동일한 이벤트가 두 번 이상 수신되면 핸들러가 안전해야 합니다.

8. 텍스트-동영상 예시

텍스트-동영상은 미디어 입력 없이 프롬프트를 받아들입니다.

{
  "model": "minimax-h3-text-to-video",
  "prompt": "A ceramic coffee cup sits on a wooden table beside a window. Morning steam curls upward while the camera makes a slow clockwise orbit. Natural light, realistic texture, quiet editorial mood.",
  "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_start, image_end, image_urls, video_urls 또는 audio_urls를 허용하지 않습니다. 장면이 특정 시각 요소에 의존한다면 이미지-동영상 또는 참조 영상으로 전환하세요.
자세한 규격은 MiniMax H3 텍스트-동영상 API 문서를 참조하세요.

9. 이미지-동영상 예시

이미지-동영상에는 프롬프트와 image_start 또는 image_end 중 하나 이상이 필요합니다.

시작 이미지에 애니메이션 적용

{
  "model": "minimax-h3-image-to-video",
  "prompt": "The camera slowly moves closer as the fabric responds to a soft breeze. Preserve the product shape, label, and lighting.",
  "image_start": "https://assets.example.com/product-start.webp",
  "quality": "2k",
  "duration": 6
}

종료 프레임을 향해 생성

{
  "model": "minimax-h3-image-to-video",
  "prompt": "A wide landscape shot gradually resolves into the supplied final frame, with continuous forward camera movement and stable natural lighting.",
  "image_end": "https://assets.example.com/landscape-end.jpg",
  "quality": "2k",
  "duration": 10
}

첫 번째 프레임과 마지막 프레임을 모두 제어

{
  "model": "minimax-h3-image-to-video",
  "prompt": "The sealed package opens smoothly and the product rises into the final display position. Keep the logo legible and avoid sudden camera cuts.",
  "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를 사용하세요.
  • 30MB 이하여야 합니다.
  • 너비와 높이는 256~5,760픽셀 사이여야 합니다.
  • 너비 대 높이 비율이 0.4에서 2.5 사이여야 합니다.
  • 공개 HTTP(S) URL에서 사용할 수 있습니다.
요청 본문은 64MB 미만으로 유지되어야 합니다. Base64 데이터 및 mm_file:// 참조는 이 경로에서 허용되지 않습니다. 출력 종횡비는 입력 이미지가 결정합니다. 이 경로는 aspect_ratio 필드 자체를 받지 않으며, 함께 보내면 파라미터 오류가 반환됩니다.
자세한 규격은 MiniMax H3 이미지-동영상 API 문서를 참조하세요.

10. 참조 영상 예

참조 영상 모드는 이미지, 영상, 선택적 오디오를 순서가 있는 배열로 받습니다. 프롬프트만으로 주제, 움직임 또는 템포를 충분히 정확하게 설명하기 어려울 때 유용합니다.

{
  "model": "minimax-h3-reference-to-video",
  "prompt": "Use Image 1 for the main character and Image 2 for the wardrobe. Follow the camera movement and walking rhythm from Video 1. Use Audio 1 only as a pacing reference. The character crosses a modern gallery and stops beside a large window.",
  "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초를 초과할 수 없습니다.
  • 참조 영상은 H.264 또는 H.265 영상과 함께 MP4 또는 MOV를 사용해야 하며 AAC 또는 MP3 오디오를 포함할 수 있습니다.
  • 각 참조 동영상의 최대 크기는 50MB입니다.
  • 참조 영상 크기는 측면당 2565,760픽셀이어야 하며 너비 대 높이 비율은 0.42.5, 프레임 속도는 23.976~60FPS여야 합니다.
  • 참조 오디오는 WAV 또는 MP3를 사용해야 하며 클립당 최대 15MB까지 가능합니다.
  • 전체 JSON 요청 본문은 64MB 미만으로 유지되어야 합니다.

참조 이미지는 이미지-동영상과 동일한 형식, 크기, 치수 및 URL 규칙을 따릅니다.

배열 순서로 미디어 참조

프롬프트에서 Image 1, Image 2, Video 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_start, image_end 또는 참조 배열의 항목으로 전달합니다.
업로드된 파일은 72시간 후에 만료됩니다. 파일 서비스는 영구 미디어 저장소가 아니라 입력 미디어를 공개 URL로 연결하는 용도로 사용하세요. 전체 규격은 스트림 업로드 문서를 참조하세요.

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();

대용량 시스템의 경우 애플리케이션 측 폴링을 콜백 및 내구성 있는 작업 기록으로 대체하세요. 작업 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필수의필수의필수의영어 또는 중국어
quality2k 전용
duration5에서 15 사이의 정수
aspect_ratio아니요텍스트·참조 라우트는 adaptive 또는 고정 비율을 받고, 이미지-투-비디오는 이 필드를 거부하며 입력 이미지에서 비율을 도출합니다
image_start아니요아니요시작 프레임
image_end아니요아니요끝 프레임
image_urls아니요아니요최대 9개
video_urls아니요아니요최대 3개
audio_urls아니요아니요최대 3개; 단독으로 사용할 수 없습니다
callback_url공개 HTTPS URL

프롬프트 패턴: 텍스트-동영상

[subject] + [action] + [environment] + [camera movement] +
[lighting] + [visual mood]

예:

자전거 타는 사람이 새벽 안개 낀 숲 위의 현수교를 건너고 있습니다. 카메라는 뒤에서 따라오다가 넓은 공중 뷰로 올라갑니다. 부드러운 자연광과 사실적인 움직임.

프롬프트 패턴: 이미지-동영상

[motion to add] + [camera movement] + [elements to preserve] +
[transition or ending state]

예:

햇빛이 바닥을 가로질러 이동함에 따라 카메라는 의자 주위로 천천히 반원을 만듭니다. 의자의 정확한 모양, 소재, 색상을 보존하세요.

프롬프트 패턴: 참조 영상

Use [Image/Video/Audio number] for [specific purpose].
[Describe the new scene, action, camera, and final composition.]

예:

캐릭터에는 이미지 1, 차량에는 이미지 2, 카메라 이동에는 영상 1을 사용합니다. 카메라가 영상 1과 동일한 전방 호를 만드는 동안 캐릭터는 일몰 시 조용한 사막에서 차량에서 나옵니다.

재사용 가능한 입력 예시를 더 찾으려면 MiniMax H3 프롬프트와 영상 예시를 확인하세요. 각 사례에 참조 자산, 변수, 제약이 정리되어 있습니다. API 참조는 허용되는 필드의 정보 소스로 남아 있습니다.

15. 일반적인 오류 및 수정 사항

오류 또는 증상가능한 원인해야 할 일
401 unauthorizedAPI 키가 누락되었거나, 형식이 잘못되었거나, 유효하지 않습니다.Bearer 헤더 및 서버 환경 확인
402 insufficient quota계정 크레딧이 부족함크레딧을 추가하거나 계획된 작업 부하를 줄입니다.
403 permission_denied키 또는 계정이 경로에 액세스할 수 없습니다.주요 권한 및 모델 가용성 확인
404 task_not_found올바르지 않거나 만료된 작업 ID반환된 작업 ID를 수정 없이 저장
429 rate_limit_exceeded요청이 너무 많습니다.지수 백오프 적용 및 동시성 제한
요청이 768p를 거부했습니다.H3은 2k만 허용합니다."quality": "2k" 설정
이미지를 가져올 수 없습니다.URL이 비공개이거나 만료되었거나 외부 요청을 차단합니다.EvoLink 파일 서비스를 통해 업로드하세요.
Base64 이미지가 거부되었습니다.경로에는 공개 URL이 필요합니다.파일을 업로드하고 file_url를 사용하십시오.
참조 요청이 잘못되었습니다.오디오만 제공되었습니다.이미지 또는 동영상을 하나 이상 추가하세요.
참조 입력이 거부되었습니다.개수, 크기, 형식 또는 총 길이가 한도를 초과합니다.제출하기 전에 미디어를 검증하세요
작업이 완료되었지만 URL이 더 이상 작동하지 않습니다.결과 URL의 수명이 24시간을 초과했습니다.완성된 영상을 내구성 있는 저장소에 복사
반복되는 콜백 처리전송이 다시 시도되었거나 두 번 처리되었습니다.데이터베이스에서 콜백 핸들러를 멱등적으로 만듭니다.

일시적인 네트워크 장애나 속도 제한처럼 요청을 바꾸지 않아도 성공할 수 있는 오류만 재시도하세요. 잘못된 매개변수와 지원되지 않는 미디어는 다시 제출하기 전에 수정해야 합니다.

16. 가격 및 비용 계획

복사된 가격표를 애플리케이션에 하드 코딩하거나 현재 가격에 대해 오래된 블로그 게시물에 의존하지 마십시오. EvoLink 가격 페이지를 현재 소스로 사용하세요.

계획 목적:

  • 출력 길이가 길수록 필요한 처리량이 늘어납니다.
  • 참조 영상에서는 입력 참조 영상의 길이도 과금 대상이 될 수 있습니다.
  • 프롬프트나 워크플로를 검증할 때는 목적을 충족하는 가장 짧은 길이를 사용하세요.
  • 대규모 배치를 시작하기 전에 소수의 테스트 생성을 실행하고 결과를 검토하세요.
  • 각 작업의 모드, 출력 길이, 참조 영상 길이, 상태와 비용을 기록하세요.
  • 사용 가능한 영상당 비용을 계산할 때 실패한 생성과 사용 가능한 결과를 구분하세요.

또한 EvoLink의 통합 API를 통해 제작팀은 인증, 작업 추적 및 청구 통합을 교체하지 않고도 H3를 다른 영상 모델과 비교할 수 있습니다.

17. 프로덕션 체크리스트

프로덕션 적용 전:

  • API 키를 서버에 보관하세요.
  • 제출하기 전에 모든 모드별 매개변수를 검증하십시오.
  • 미디어 URL이 공개되어 있고 생성 중에 계속 사용할 수 있는지 확인하세요.
  • 요청 시간 초과를 설정합니다.
  • 폴링 간격과 총 폴링 시간을 제한합니다.
  • 429 및 일시적인 서버 오류에는 백오프를 적용합니다.
  • 폴링을 시작하기 전에 작업 ID를 저장합니다.
  • H3 작업이 취소될 수 있다고 가정하지 마세요. 현재 작업 계약은 can_cancel: false를 보고합니다.
  • 콜백을 반복 가능한 이벤트로 처리합니다.
  • 이벤트를 수락한 후에만 2xx 콜백 응답을 반환합니다.
  • 임시 URL이 만료되기 전에 완료된 영상을 유지합니다.
  • 모델 ID, 기간, 입력 참조, 상태 및 결과를 기록합니다.
  • 계정 수준 동시성 및 예산 제어를 적용합니다.
  • 문서화되지 않은 헤더나 출력 설정에 의존하지 마십시오.

18. 실제 사용 사례

사용 사례권장 모드
신속한 광고 컨셉 생성텍스트-동영상사본에서 시각적 테스트까지 가장 빠른 경로
제품 사진 애니메이션이미지-동영상공급된 제품 구성을 유지합니다.
전환 전후이미지-동영상시작 및 끝 프레임은 두 상태를 모두 정의합니다.
캐릭터가 이끄는 짧은 동영상참조 영상여러 시각적 참조를 통해 주제를 안내할 수 있습니다.
카메라 모션 매칭참조 영상짧은 참조 클립으로 움직임을 안내할 수 있습니다.
스토리보드 탐색텍스트-동영상 또는 이미지-동영상승인된 프레임의 유무에 따라 선택하세요.
앱 내부의 영상 생성모든 모드단일 엔드포인트 및 작업 수명주기로 통합 단순화
다중 모델 생산 경로모든 모드동일한 EvoLink 키 및 작업 시스템이 다른 모델에도 사용될 수 있습니다.

19. FAQ

MiniMax H3 API에 어떻게 액세스하나요?

EvoLink 계정과 API 키를 생성한 다음 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 또는 60FPS를 지원합니까?

이러한 제어는 현재 H3 API 계약의 일부가 아닙니다. 문서화되지 않은 품질, 프레임 속도, 비트 전송률 또는 코덱 설정을 보내지 마십시오.

최대 영상 재생 시간은 얼마입니까?

현재 지속 시간 범위는 4~15초이며 정수 값을 사용합니다.

로컬 이미지를 업로드할 수 있나요?

예. EvoLink 파일 서비스를 통해 업로드한 다음 반환된 공개 file_url를 생성 요청에 전달합니다.

생성 API가 Base64 이미지를 허용합니까?

아니요. 공개 HTTP(S) URL을 사용하세요.

참조 자료는 몇 개까지 사용할 수 있나요?

참조 영상에는 파일당 제한 및 총 재생 시간 제한에 따라 최대 9개의 이미지, 3개의 영상, 3개의 오디오 파일이 허용됩니다.

오디오 참조만으로 영상을 생성할 수 있나요?

아니요. 참조 요청에는 이미지나 동영상이 하나 이상 포함되어야 합니다. 오디오를 다른 참조로 추가할 수 있습니다.

생성 상태는 어떻게 확인하나요?

GET /v1/tasks/{task_id}를 호출하거나 원래 요청에 공개 HTTPS 콜백 URL을 제공하세요.

생성된 동영상 URL은 얼마 동안 사용할 수 있나요?

결과 URL은 24시간 동안 사용할 수 있습니다. 만료되기 전에 영상을 다운로드하거나 자신의 저장소로 이동하세요.

JavaScript 또는 Python에서 MiniMax H3를 사용할 수 있나요?

예. API는 표준 HTTPS이며 JSON 요청 및 Bearer 인증을 지원하는 모든 서버 측 환경에서 호출할 수 있습니다.

작업을 폴링해야 합니까, 아니면 콜백을 사용해야 합니까?

폴링은 테스트 및 적은 양의 스크립트에 편리합니다. 콜백은 일반적으로 프로덕션 대기열과 대규모 작업 부하에 더 효율적입니다.


API 연동 시작하기

AI 비용을 89% 절감할 준비가 되셨나요?

오늘 EvoLink를 시작하고 지능형 API 라우팅의 힘을 경험해보세요.