# MiniMax | H3 | Max | Image to Video H3 Max Image-to-Video turns prompts and optional reference images into short AI video clips with 480P or 768P output for creative motion work. ## API Information - **Model Slug:** minimax-h3-max-image-to-video - **Branded URL:** https://www.eachlabs.ai/fal/minimax-h3-max/minimax-h3-max-image-to-video - **Provider:** fal - **Category:** Image to Video - **Output Type:** video - **Status:** active - **Base Cost:** $0.0125–$0.04 per second, depending on resolution - **Estimated Processing Time:** 300 seconds - **Interactive Demo:** https://www.eachlabs.ai/ai-models/minimax-h3-max-image-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 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. | | duration | integer | No | 5 | 5–15 | Output video duration in seconds. Default: 5. | | 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-image-to-video", "input": { "prompt": "Animate the existing meadow scene while strictly preserving the original chair, open sketchbook, flowers, landscape, lighting and composition. A gentle breeze moves through the tall grass and wildflowers, creating soft natural waves across the field. The pages of the open sketchbook lift and flutter slightly in the wind without turning completely. Distant grasses move subtly while warm sunlight shifts naturally through passing clouds. Use a very slow cinematic push-in toward the chair, realistic plant physics, subtle film grain and natural atmospheric movement.", "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.