# minimax/h3-max/image-to-video > H3 Max generates a video from a source image and text prompt, with optional end-frame image, configurable duration, resolution, and prompt expansion. ## Overview - **Endpoint**: `https://api.shortapi.ai/api/v1/job/create` - **Model ID**: `minimax/h3-max/image-to-video` - **Category**: image-to-video - **Kind**: inference ## Pricing 480P: $0.05 per output second. 768P: $0.08 per output second. 1080P: $0.16 per output second. For more details, please check our pricing page. ## API Information This model can be used via our HTTP API or more conveniently via our client libraries. See the input and output schema below, as well as the usage examples. ### Input Schema The API accepts the following input parameters: - **`prompt`** (`string`, _required_): Text prompt describing the expected motion and video content. Maximum 50,000 characters. - Examples: "An action shot of a black lab swimming..." - **`image_url`** (`string`, _required_): Source image URL or Base64 image for the first frame. - **`end_image_url`** (`string`, _optional_): Optional image URL or Base64 image for the last frame. - **`duration`** (`int`, _optional_): Output video duration in seconds. Supported range: 5 to 15 seconds. - Default: `5` - Range: `5` to `15` - **`resolution`** (`string`, _optional_): Output video resolution. - Default: `768P` - Options: "480P", "768P", "1080P" - **`prompt_expansion_mode`** (`string`, _optional_): Controls prompt rewriting quality and latency. - Default: `balanced` - Options: "disabled", "balanced", "quality" ### Output Schema The API returns a JSON response with a `job_id` for tracking the request status. **Create Job Response:** ```json { "code": 0, "data": { "amount": "0.02", "job_id": "" } } ``` **Query Job Result (when status is 2, meaning succeeded):** ```json { "code": 0, "data": { "status": 2, "result": { "images": [{ "url": "https://..." }] } } } ``` ## Use Example To use this model, make an HTTP POST request to the API endpoint, then poll for results using the returned `job_id`. ### Bash (cURL) ```bash # Step 1: Create a job response=$(curl --request POST \ --url https://api.shortapi.ai/api/v1/job/create \ --header "Authorization: Bearer $SHORTAPI_KEY" \ --header "Content-Type: application/json" \ --data '{ "model": "minimax/h3-max/image-to-video", "args": { "prompt": "Use bullet time to capture a 360-degree shot of the scene.", "image_url": "https://shortapi-01.oss-cn-beijing.aliyuncs.com/assets/examples/minimax/hailuo-03/itov-input.webp" }, "callback_url": "CALLBACK_URL" }') JOB_ID=$(echo "$response" | grep -o '"job_id": *"[^"]*"' | sed 's/"job_id": *//; s/"//g') # Step 2: Poll for results curl --request GET \ --url "https://api.shortapi.ai/api/v1/job/query?id=$JOB_ID" \ --header "Authorization: Bearer $SHORTAPI_KEY" ``` ### JavaScript (Fetch API) ```javascript // Step 1: Create a job const response = await fetch(`https://api.shortapi.ai/api/v1/job/create`, { method: "POST", headers: { "Authorization": `Bearer ${SHORTAPI_KEY}`, "Content-Type": "application/json" }, body: JSON.stringify({ "model": "minimax/h3-max/image-to-video", "args": { "prompt": "Use bullet time to capture a 360-degree shot of the scene.", "image_url": "https://shortapi-01.oss-cn-beijing.aliyuncs.com/assets/examples/minimax/hailuo-03/itov-input.webp" }, "callback_url": "CALLBACK_URL" }) }); const data = await response.json(); const JOB_ID = data.job_id; // Step 2: Poll for results const result = await fetch(`https://api.shortapi.ai/api/v1/job/query?id=${JOB_ID}`, { method: "GET", headers: { "Authorization": `Bearer ${SHORTAPI_KEY}` } }); const resultData = await result.json(); console.log(resultData); ``` ### Python (Requests) ```python import requests # Step 1: Create a job url = "https://api.shortapi.ai/api/v1/job/create" payload = { "model": "minimax/h3-max/image-to-video", "args": { "prompt": "Use bullet time to capture a 360-degree shot of the scene.", "image_url": "https://shortapi-01.oss-cn-beijing.aliyuncs.com/assets/examples/minimax/hailuo-03/itov-input.webp" }, "callback_url": "CALLBACK_URL" } headers = { "Authorization": f"Bearer {SHORTAPI_KEY}", "Content-Type": "application/json" } response = requests.post(url, headers=headers, json=payload) data = response.json() JOB_ID = data.get("job_id") # Step 2: Poll for results result_url = f"https://api.shortapi.ai/api/v1/job/query?id={JOB_ID}" result = requests.get(result_url, headers={"Authorization": f"Bearer {SHORTAPI_KEY}"}) print(result.json()) ```