# MiniMax | H3 | Max | Turbo | Image to Video H3 Max Turbo Image-to-Video creates short AI video clips from prompts with optional first and last frames for faster cinematic motion. ## API Information - **Model Slug:** minimax-h3-max-turbo-image-to-video - **Branded URL:** https://www.eachlabs.ai/fal/minimax-h3-max/minimax-h3-max-turbo-image-to-video - **Provider:** fal - **Category:** Image to Video - **Output Type:** video - **Status:** active - **Base Cost:** 768P resolution (default): $0.026 per second through October 31, 2026 (35% promotional discount). After that, the price will be $0.04 per second. - **Estimated Processing Time:** 300 seconds - **Interactive Demo:** https://www.eachlabs.ai/ai-models/minimax-h3-max-turbo-image-to-video ## Pricing - **Charge Type:** dynamic - **Estimated Price (default example):** $0.3120 - **Pricing Details:** 768P resolution (default): $0.026 per second through October 31, 2026 (35% promotional discount). After that, the price will be $0.04 per second. ### Pricing Rules | Condition | Pricing | | --- | --- | | output.billing.billable_units exists "undefined" AND output.billing.billable_units > "0" AND output.billing.unit_cost_usd exists "undefined" AND output.billing.unit_cost_usd > "0" | Billed per second of generated video at the selected resolution's rate. | | resolution eq_i "480P" | 480P resolution: $0.01625 per second through October 31, 2026 (35% promotional discount). After that, the price will be $0.025 per second. | | resolution eq_i "1080P" | 1080P resolution: $0.052 per second through October 31, 2026 (35% promotional discount). After that, the price will be $0.08 per second. | | Rule 4 | 768P resolution (default): $0.026 per second through October 31, 2026 (35% promotional discount). After that, the price will be $0.04 per second. | ## Input Schema | Parameter | Type | Required | Default | Constraints | Description | |-----------|------|----------|---------|-------------|-------------| | prompt | string | Yes | - | - | Text prompt for video generation. | | image_url | string | No | - | - | Optional URL of the image to use as the first frame. When provided, the output aspect ratio follows this image. | | end_image_url | string | No | - | - | Optional URL of the image to use as the last frame for first-to-last keyframe generation. | | target_audio_url | string | No | - | - | Optional URL of an audio clip at least 2 seconds long (maximum 15 MB) to pin to the generated soundtrack. Longer clips are trimmed to the requested video duration, keeping the beginning. The original audio replaces the output soundtrack, padded with silence if shorter than the video, without changing playback speed. Exceptionally high sample rates may be resampled to 96 kHz. Accepts an HTTP(S) URL or a base64 data URI. | | duration | integer | No | 5 | 5–15 | Output video duration in seconds. Default: 5. 5-15 | | resolution | string | No | 768P | 480P, 768P, 1080P | Native generation resolution of the video. Default: 768P. | | prompt_expansion_mode | string | Yes | balanced | disabled, balanced, quality | How much effort to spend rewriting the prompt before generation. | | seed | integer | No | - | - | Optional random seed. A random seed is selected when omitted. | | enable_safety_checker | boolean | No | true | - | Enable fal's safety checker. 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-turbo-image-to-video", "input": { "prompt": "A 12 second fast paced fashion campaign film. Energetic, confident, rhythmic cuts that land on the beat. Same bag, same tan leather, same gold hardware in every shot.\n\n0 to 3s: Start on the product shot. The bag rotates quickly to the right on the cream background, light sweeping across the grain, then snaps to a stop facing forward.\n\n3 to 6s: Hard cut to a woman walking away from camera down a sunlit city street, filmed from behind at waist height. Only her lower body and the bag are in frame, face never visible. She wears a tailored cream coat. The bag swings at her side with each step, catching the sunlight. The camera tracks steadily behind her at a fixed distance.\n\n6 to 9s: Hard cut to a tight close up of the bag alone on her shoulder, filmed from the side. Only the leather, the gold hardware and the shoulder of her coat are in frame. No hands, no face. Sunlight moves across the grain as she walks.\n\n9 to 12s: Hard cut back to the clean cream background. The bag lands into frame and settles, front facing, exactly as in the opening shot. The camera holds still for the final beat with clean empty space above the bag.\n\nKeep the bag proportions, color and hardware identical to the source image in every shot. No visible face, no visible hands in any shot. Quick punchy camera moves, real time speed, no slow motion. Bright and premium, high contrast, warm daylight on the street shots.", "prompt_expansion_mode": "quality" } }' ``` ## 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.