# MiniMax | H3 | Max | Text to Video MiniMax H3 Max Text to Video generates prompt-based videos with duration, resolution, aspect ratio, and prompt expansion controls for creative production. ## API Information - **Model Slug:** minimax-h3-max-text-to-video - **Branded URL:** https://www.eachlabs.ai/fal/minimax-h3-max/minimax-h3-max-text-to-video - **Provider:** fal - **Category:** Text to Video - **Output Type:** video - **Status:** active - **Base Cost:** $0.0125–$0.04 per second, depending on resolution - **Estimated Processing Time:** 60 seconds - **Interactive Demo:** https://www.eachlabs.ai/ai-models/minimax-h3-max-text-to-video ## Pricing - **Charge Type:** dynamic - **Estimate:** $0.0125–$0.04 per second, depending on resolution - **Pricing Details:** 480p: $0.0125 - **Pricing Details:** 1080p: $0.04 - **Pricing Details:** default: $0.02 ## Input Schema | Parameter | Type | Required | Default | Constraints | Description | |-----------|------|----------|---------|-------------|-------------| | prompt | string | Yes | - | - | Text prompt describing the desired video. | | duration | integer | No | 5 | 5–15 | Output video duration in seconds. Default: 5. | | resolution | string | No | 768P | 480P, 768P, 1080P | Native generation resolution. Default: 768P. | | aspect_ratio | string | No | 16:9 | 21:9, 16:9, 4:3, 1:1, 3:4, 9:16 | Aspect ratio of the generated video. Default: 16:9. | | prompt_expansion_mode | string | Yes | balanced | disabled, balanced, quality | Prompt rewriting mode before generation. Default: balanced. | | seed | integer | No | - | - | Random seed. A random seed is selected when omitted. | | enable_safety_checker | boolean | No | true | - | Enable provider safety checking. Default: true. | ## Example Request ```bash curl -X POST https://api.eachlabs.ai/v1/prediction/ \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "minimax-h3-max-text-to-video", "input": { "prompt": "Animate the existing image into a calm, cinematic blue-hour scene while strictly preserving the woman’s identity, facial features, hair, clothing, body proportions, wooden chair, sketchbook, meadow, flowers, mountains, and overall composition. The woman remains naturally seated on the chair, gently looking down at the open sketchbook in her hands. She slowly turns one page, then lightly adjusts her grip on the book with subtle, realistic hand and finger movement. A soft evening breeze gently moves her hair and clothing while the surrounding wildflowers and tall grasses sway naturally in waves. Distant mist drifts slowly between the hills and the clouds move subtly across the lavender-blue sky. The remaining warm sunset light on the horizon gradually softens. Use a very slow cinematic camera push-in toward the woman, with subtle natural parallax through the foreground flowers. Peaceful, intimate and realistic atmosphere, natural human motion, realistic wind physics, cinematic depth of field, subtle film grain, premium editorial cinematography.", "prompt_expansion_mode": "balanced" } }' ``` ## Output Schema Response returned by `GET /v1/prediction/{id}` when the job completes: ```json { "status": "success", "predictionID": "string", "output": "string (URL of generated video)", "metrics": { "predict_time": "number (seconds)" } } ``` ## Polling ```bash curl https://api.eachlabs.ai/v1/prediction/{PREDICTION_ID} \ -H "Authorization: Bearer YOUR_API_KEY" ``` | Status | Meaning | |--------|---------| | `processing` | Still running — poll again | | `success` | Done — read `output` | | `error` | Failed — read `message` / `details` | ## Webhook (alternative to polling) Pass `"webhook_url": "https://your.host/path"` in the create request. Eachlabs POSTs this payload when the job ends: ```json { "exec_id": "prediction-uuid", "status": "succeeded", "output": "https://...", "error": "" } ``` `status` is `"succeeded"` or `"failed"`. `exec_id` equals the `predictionID` from create. Return 2xx within 30 seconds. ## Errors Error body: `{ "status": "error", "message": "...", "details": "..." }` | Code | Meaning | |------|---------| | `400` | Invalid input | | `401` | Missing / invalid `Authorization` bearer token | | `404` | Unknown model or prediction id | | `429` | Rate limit — 100 creates / min, 10 concurrent per key | | `5xx` | Retry with backoff | ## Usage Notes - API Base URL: `https://api.eachlabs.ai/v1` - Authentication: send `Authorization: Bearer YOUR_API_KEY`. Generate a key from the Eachlabs dashboard at https://www.eachlabs.ai/dashboard/api-keys. - File-typed parameters (`*_url`, `image_url`, `video_url`, `audio_url`, etc.) accept publicly-reachable HTTPS URLs only. Upload your asset first (GCS / S3 / your CDN) and pass the resulting URL. Data-URIs and localhost URLs are rejected. - For structured parameters (arrays / objects) send real JSON values, not stringified payloads. - Monetary values are reported in USD; per-token / per-megapixel rates may be billed in micro-cents internally. - Prefer `webhook_url` over polling for long-running predictions — see the Webhook Callback section.