03:00:00%50 İNDİRİMTalep et

MiniMax H3 API

Bring video generation into your workflow with API access to every video model on the website. Generate videos asynchronously using the same account and paid credits, at the same prices as the web app.

Quick start

  1. Sign in, create a key, and copy it once.
  2. Use existing paid credits. Starter credits cannot fund API requests.
  3. Call GET /models, submit a supported model, then poll the returned task ID every 10 seconds.
bash
curl 'https://minimaxh3.studio/api/v1/video/generations' \
  -H "Authorization: Bearer $MINIMAXH3_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: my-video-001' \
  --data '{"model":"minimax-h3","mode":"text-to-video","prompt":"A ceramic cup in soft morning light, slow camera push-in.","duration":5,"resolution":"768p","aspect_ratio":"16:9","max_credits":175}'

Keep MINIMAXH3_API_KEY on your server. Always supply model explicitly. Omitting model retains the legacy Seedance Fast default.

Inputs

The parameter details below describe the H3 family. Other models use the same request fields with their own limits; use GET /models for supported modes, required inputs and defaults.

model / duration / resolutionDefaults vary by model; query GET /models. H3 uses 768p, 5s. Unsupported values are rejected.
promptRequired, 1–7000 characters after trimming.
text-to-videoNo input media. Explicit ratio; default 16:9.
image-to-videoimage_url plus optional end_image_url. Fast requires both frames. H3/Max follow the image ratio: use adaptive.
media-to-videoUp to 9 reference_image_urls, 3 reference_video_urls, 3 reference_audio_urls; 12 total. Cannot mix frame fields.
reference_*_durationsOne rounded-up duration per video/audio URL. Each 2–15s, sum ≤15s per type. Server decodes and verifies.
FastRatios: 16:9, 9:16, 1:1. Video references require 768p and 4–15s output.
AudioH3 and Fast support audio references. H3 requires an image/video alongside audio; Fast supports audio-only references. Max does not support audio references.
max_creditsOptional positive integer. Reject before charging if current price is higher.
seed / generate_audioNot accepted for H3 models in this release.

HTTPS URLs only. JPEG/PNG/WebP ≤30 MiB, MP4/MOV ≤50 MiB, MP3/WAV ≤15 MiB. JSON ≤64 KiB; all media ≤256 MiB. Image/video dimensions: 256–5760 px on each side; width/height ratio: 0.4–2.5. Video: 23.976–60 fps. No Base64 or private network URLs.

Tasks & billing

bash
curl 'https://minimaxh3.studio/api/v1/tasks/YOUR_TASK_ID' \
  -H "Authorization: Bearer $MINIMAXH3_API_KEY"
json
{
  "id": "idem_example",
  "status": "completed",
  "model": "minimax-h3",
  "mode": "text-to-video",
  "credits_used": 175,
  "credits_refunded": 0,
  "billing_status": "settled",
  "output": {
    "video_url": "https://your-managed-storage.example/video.mp4"
  },
  "error": null
}

processing → completed or failed. Paid credits are reserved before downloads. Failures confirmed before acceptance refund the reservation; uncertain submissions stay under review. No five-minute API refund. credits_used is the original debit; net cost = credits_used − credits_refunded. Keep a local copy of successful videos; delivery URLs are not private authenticated links.

Examples

Estimate the same H3 body at POST /video/estimate; no media is fetched and no credits are charged. Check balance at GET /credits.

json
{
  "model": "minimax-h3",
  "mode": "media-to-video",
  "prompt": "Follow the reference motion.",
  "duration": 5,
  "resolution": "768p",
  "reference_image_urls": [
    "https://example.com/subject.png"
  ],
  "reference_video_urls": [
    "https://example.com/motion.mp4"
  ],
  "reference_video_durations": [
    3
  ],
  "max_credits": 280
}
python
import os, time, requests
headers = {"Authorization": "Bearer " + os.environ["MINIMAXH3_API_KEY"]}
# Save the ID returned by POST; this example only polls that job.
task_id = os.environ["MINIMAXH3_TASK_ID"]
for _ in range(360):
    r = requests.get("https://minimaxh3.studio/api/v1/tasks/" + task_id, headers=headers, timeout=65)
    if r.status_code == 429:
        time.sleep(int(r.headers.get("Retry-After", "10")))
        continue
    r.raise_for_status()
    task = r.json()
    if task["status"] != "processing":
        print(task)
        break
    time.sleep(10)
else:
    print("Still processing; save the task ID and query it later.")
javascript
const taskId = process.env.MINIMAXH3_TASK_ID;
const headers = { Authorization: 'Bearer ' + process.env.MINIMAXH3_API_KEY };
const response = await fetch('https://minimaxh3.studio/api/v1/tasks/' + encodeURIComponent(taskId), {
  headers, signal: AbortSignal.timeout(65000)
});
if (!response.ok) throw new Error('Query failed: ' + response.status);
console.log(await response.json());
// Poll no faster than every 10s. Respect Retry-After on HTTP 429.

Errors & retries

30 requests per minute per key, including polls and estimates. At most 3 unfinished video API tasks per account, shared across keys.

400: fix input. 401: check key. 402: add paid credits. 404: task unavailable to this owner. 409: key reused with a different body. 413: payload too large. 429: wait Retry-After. 503: check service availability or reconcile the original task.

The first POST includes media validation and can take several minutes. Allow a 260-second read timeout. On timeout or uncertain acceptance, retry the identical body with the same API key and Idempotency-Key. Replays return the original job, including failed jobs. Only start a new key after confirming the previous task failed and checking its refund. Key rotation changes the idempotency scope.

v1.1 · H3 models, estimates and usage; existing Seedance v1 calls remain compatible.

Developer tools

Import this OpenAPI file into your API tools to view endpoints and parameters.

Download API definition (JSON)

API frequently asked questions

Can I generate videos without using the API?

Yes. Use the website to generate videos directly without creating an API key. The API is for connecting video generation to your own application, scripts or automated workflow.

Where do I get an API key?

Sign in to minimaxh3.studio and open Manage API keys in your account settings. Save the full key when it is created; it is only shown once. Use a key created on this website and keep it on your server, not in browser code.

Which video models can I use?

All video models currently available on the website are supported, including H3, H3 Fast and H3 Max. Supported inputs, resolutions and durations vary by model. Call GET /api/v1/models for the available models and their capabilities.

Does the API cost the same as the website?

Every model uses the same pricing as the web app and shares your account’s paid credit balance. Starter credits cannot be used for API requests. You can estimate a request for free with POST /api/v1/video/estimate and review requests and credit usage on the API usage page.

How do I get the generated video?

Save the task ID returned by POST /api/v1/video/generations, then query GET /api/v1/tasks/{id} about every 10 seconds. When status becomes completed, get the video from output.video_url and save a copy. Anyone with the output URL can access it, so share it carefully.

What happens to my credits if generation fails?

Credits are reserved before generation. For confirmed refundable failures, the reservation is returned; check credits_refunded and billing_status on the task. A refund_pending status means the refund is pending, while review means the submission outcome is still being checked. A timeout alone does not trigger an immediate refund.

Will retrying a timed-out request create another charge?

Retry with the same API key, Idempotency-Key and request body to retrieve the original task instead of creating another generation. Changing the idempotency key may create a new task and charge. Check the original task and any refund before starting a new request.

Are there request or concurrency limits?

Each API key allows 30 requests per minute, including status queries and estimates. Each account can have up to 3 unfinished video API tasks across all its keys. If you receive HTTP 429, wait for the duration in Retry-After before retrying.