| 항목 | 내용 |
|---|---|
| 모델 ID | minimax-h3-max |
| 종류 | 영상 |
| 만든 곳 | MiniMax |
| 최대 해상도 | 1080p |
| 길이 | 5-15초 |
| 소리 | 있어요 |
입력
| 필드 | 설명 |
|---|---|
prompt | 필수 |
inputs.start_frame | 시작 프레임 이미지 |
inputs.end_frame | 끝 프레임 이미지. 시작 프레임과 함께 써요 |
옵션
params에 넣어요. 빼면 기본값을 쓰고, 표에 없는 값은 400으로 거절해요.
| 키 | 뜻 | 기본값 | 값 |
|---|---|---|---|
duration | 길이 | 5 | 5~15 초 |
aspect | 화면 비율 | 16:9 | 16:9, 9:16, 1:1, 4:3, 3:4, 21:9 |
resolution | 해상도 | 768p | 480p, 768p, 1080p |
가격
옵션에 따라 달라져요. 보내기 전에POST /estimate로 정확한 금액을 확인할 수 있고, 전체 가격표는 가격 페이지에 있어요.
예시
curl -X POST https://api.studio.thezet.io/v1/generations \
-H "Authorization: Bearer $ZET_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"model": "minimax-h3-max",
"prompt": "A red paper boat drifting across a calm lake, soft morning light",
"params": {
"aspect": "16:9",
"resolution": "768p"
}
}'
const API = "https://api.studio.thezet.io/v1";
const headers = { Authorization: `Bearer ${process.env.ZET_API_KEY}` };
// 다시 시도할 때 같은 키를 보내면 두 번 청구되지 않아요.
const started = await fetch(`${API}/generations`, {
method: "POST",
headers: { ...headers, "Content-Type": "application/json", "Idempotency-Key": crypto.randomUUID() },
body: JSON.stringify({
"model": "minimax-h3-max",
"prompt": "A red paper boat drifting across a calm lake, soft morning light",
"params": {
"aspect": "16:9",
"resolution": "768p"
}
}),
});
let job = await started.json();
if (!started.ok) throw new Error(job.error.message);
while (!job.terminal) {
await new Promise((resolve) => setTimeout(resolve, 10000));
job = await (await fetch(`${API}/generations/${job.id}`, { headers })).json();
}
console.log(job.status === "succeeded" ? job.outputs[0].url : job.error);
import os, time, uuid
import requests
API = "https://api.studio.thezet.io/v1"
headers = {"Authorization": f"Bearer {os.environ['ZET_API_KEY']}"}
# 다시 시도할 때 같은 키를 보내면 두 번 청구되지 않아요.
started = requests.post(
f"{API}/generations",
headers={**headers, "Idempotency-Key": str(uuid.uuid4())},
json={
"model": "minimax-h3-max",
"prompt": "A red paper boat drifting across a calm lake, soft morning light",
"params": {
"aspect": "16:9",
"resolution": "768p"
}
},
)
job = started.json()
if not started.ok:
raise RuntimeError(job["error"]["message"])
while not job["terminal"]:
time.sleep(10)
job = requests.get(f"{API}/generations/{job['id']}", headers=headers).json()
print(job["outputs"][0]["url"] if job["status"] == "succeeded" else job["error"])