0G Foundation 제공
MiniMax-H3 (Hailuo-03) text-to-video and image-to-video, with first/last-frame control and multimodal references (images, video, audio). 4–15 second clips at 2K. Billed per second of output, plus per second of reference video; reference images beyond five are charged per image.
$0.195
생성 1초당
2K
청구 등급 — 전송하는 크기가 아님
비동기 API — 비디오 생성은 비동기 흐름을 사용합니다: 작업을 제출하고, 완료될 때까지 폴링한 다음, 별도 엔드포인트에서 파일을 다운로드하세요. 생성에는 몇 분이 걸리므로 3~5초마다 폴링하세요. 아래 예시는 세 단계를 모두 보여줍니다.
# 1. Submit the job. model, prompt and seconds are required. Each account may hold only a small number of
# unfinished jobs at once — 5 by default, set per deployment — and one over that returns 429
# video_jobs_in_flight_limit.
#
# The model's own options go under "metadata"; every field and the values it accepts are listed below.
# Media references go in metadata.content as {type, <type>: {url}, role}. Images, reference videos and reference
# audio each take a URL or a base64 data: URI; label audio data:audio/mp3 or data:audio/wav (with
# data:audio/mpeg the job is accepted, then fails unbilled). The whole request is capped at 24 MB, so send a
# large video as a URL. First/last frame and reference media cannot be mixed in one request.
curl "https://router-api.0g.ai/v1/videos" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <YOUR_API_KEY>" \
-d '{
"model": "minimax-h3",
"prompt": "A cat surfing a wave at sunset",
"seconds": 5,
"metadata": {
"resolution": "2K",
"ratio": "16:9",
"aigc_watermark": false
}
}'
# Response: {"id": "v0_426354818031858", "status": "queued", "provider_address": "0x..."}
# 2. Poll until status is "completed". Generation takes minutes — 3-5s is a sane interval. The poll answers
# 200 and reports the job's own status, so a failure arrives as 200 + {"status":"failed"}, NOT as an error
# code. The SUBMIT response echoes what you sent; the POLL response reports what was actually rendered — so
# reconcile against the poll. Which fields carry that answer depends on the upstream:
# usage.output_video_duration when the provider reported a duration, size/seconds on some providers and not
# others. Read what is present rather than assuming a particular field.
curl "https://router-api.0g.ai/v1/videos/<VIDEO_ID>" \
-H "Authorization: Bearer <YOUR_API_KEY>"
# 3. Download the finished file. This is where 409 / 424 / 429 live: 409 = not ready yet, 429 = too many
# concurrent downloads (both retryable), 424 = the job failed and has no output (terminal).
curl "https://router-api.0g.ai/v1/videos/<VIDEO_ID>/content" \
-H "Authorization: Bearer <YOUR_API_KEY>" \
-o video.mp4
| 입력 | 역할 | 유형 | 최대 | 시나리오 |
|---|---|---|---|---|
| 첫 프레임 | first_frame | 이미지 | 1 | 첫 / 마지막 프레임 |
| 마지막 프레임첫 프레임 필요 | last_frame | 이미지 | 1 | 첫 / 마지막 프레임 |
| 참조 이미지 | reference_image | 이미지 | 9 | 멀티모달 참조 |
| 참조 동영상 | reference_video | 동영상 | 3 | 멀티모달 참조 |
| 참조 오디오 | reference_audio | 오디오 | 3 | 멀티모달 참조 |
Media references go in metadata.content as {type, <type>: {url}, role}. Images, reference videos and reference audio each take a URL or a base64 data: URI; label audio data:audio/mp3 or data:audio/wav (with data:audio/mpeg the job is accepted, then fails unbilled). The whole request is capped at 24 MB, so send a large video as a URL. First/last frame and reference media cannot be mixed in one request.
| 필드 | 값 | 기본값 |
|---|---|---|
| metadata.resolution | 2K | 2K |
| metadata.ratio | adaptive · 21:9 · 16:9 · 4:3 · 1:1 · 3:4 · 9:16 | adaptive |
| seconds | 4–15s | 5 |
| metadata.aigc_watermark | true · false | false |
Billed per second of output plus per second of reference video; reference images beyond 5 are charged per image.
제공자 라우팅
X-0G-Provider-* 요청 헤더를 사용하여 요청을 처리할 제공자를 제어합니다.
X-0G-Provider-Address는 제공자를 고정하고, X-0G-Provider-Identity는 해당 제공자의 업스트림 중 어느 것을 통해 라우팅할지 고정합니다. 두 값 모두 GET /v1/providers의 address 및 provider_identity 필드에서 가져옵니다. 이 둘을 함께 사용하면 특정 제공자의 특정 업스트림 하나를 지정합니다. 둘 다 보내지 않으면 라우터는 이전과 똑같이 가격과 상태에 따라 선택합니다.
curl "https://router-api.0g.ai/v1/videos" \
-H "Authorization: Bearer <YOUR_API_KEY>" \
-H "Content-Type: application/json" \
-H "X-0G-Provider-Address: <PROVIDER_ADDRESS>" \
-H "X-0G-Provider-Identity: <UPSTREAM>" \
-H "X-0G-Provider-Sort: latency" \
-H "X-0G-Provider-Allow-Fallbacks: true" \
-d '{
"model": "minimax-h3",
"prompt": "A cat surfing a wave at sunset",
"seconds": 6
}'