> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apimart.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# MiniMax-H3 Context-IR Prompt Enhancement

>  - Multimodal context understanding that produces an enhanced structured prompt (text only, no video)
- Shares the same media fields and mutual-exclusion rules as H3 video generation
- Token-based billing; typically completes in 20~40 seconds
- Use alone, or as step 1 of the 768P preview → 2K regeneration workflow 

<Info>
  **Full 2K Workflow** (optional): ① Context-IR enhances the prompt → ② [MiniMax-H3](/en/api-reference/videos/minimax-h3/generation) with `768P` for a preview → ③ [Regeneration](/en/api-reference/videos/minimax-h3/regeneration) upscales to 2K. Combined unit prices match direct 2K, with cheaper retries. You can also call this endpoint alone.
</Info>

<RequestExample>
  ```bash cURL theme={null}
  curl --request POST \
    --url https://api.apimart.ai/v1/videos/generations \
    --header 'Authorization: Bearer <token>' \
    --header 'Content-Type: application/json' \
    --data '{
      "model": "MiniMax-H3-Context-IR",
      "prompt": "Epic space-opera trailer: a female captain alone before a huge viewport as the last fleet gathers and jumps away.",
      "duration": 5,
      "aspect_ratio": "16:9"
    }'
  ```

  ```python Python theme={null}
  import requests

  url = "https://api.apimart.ai/v1/videos/generations"

  payload = {
      "model": "MiniMax-H3-Context-IR",
      "prompt": "Epic space-opera trailer: a female captain alone before a huge viewport as the last fleet gathers and jumps away.",
      "duration": 5,
      "aspect_ratio": "16:9",
  }

  headers = {
      "Authorization": "Bearer <token>",
      "Content-Type": "application/json",
  }

  response = requests.post(url, json=payload, headers=headers)

  print(response.json())
  ```

  ```javascript JavaScript theme={null}
  const url = "https://api.apimart.ai/v1/videos/generations";

  const payload = {
    model: "MiniMax-H3-Context-IR",
    prompt: "Epic space-opera trailer: a female captain alone before a huge viewport as the last fleet gathers and jumps away.",
    duration: 5,
    aspect_ratio: "16:9",
  };

  const headers = {
    Authorization: "Bearer <token>",
    "Content-Type": "application/json",
  };

  fetch(url, {
    method: "POST",
    headers: headers,
    body: JSON.stringify(payload),
  })
    .then((response) => response.json())
    .then((data) => console.log(data))
    .catch((error) => console.error("Error:", error));
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "code": 200,
    "data": [
      {
        "status": "submitted",
        "task_id": "task_01J9HA7JPQ9A0Z6JZ3V8M9W6PZ"
      }
    ]
  }
  ```

  ```json 400 theme={null}
  {
    "error": {
      "code": 400,
      "message": "Invalid request parameters",
      "type": "invalid_request_error"
    }
  }
  ```

  ```json 401 theme={null}
  {
    "error": {
      "code": 401,
      "message": "Authentication failed, please check your API key",
      "type": "authentication_error"
    }
  }
  ```

  ```json 402 theme={null}
  {
    "error": {
      "code": 402,
      "message": "Insufficient account balance, please top up and try again",
      "type": "payment_required"
    }
  }
  ```
</ResponseExample>

## Authorization

<ParamField header="Authorization" type="string" required>
  Bearer Token auth. Get a key from the [API Key Management Page](https://apimart.ai/keys).

  ```
  Authorization: Bearer YOUR_API_KEY
  ```
</ParamField>

## Overview

Send your idea plus optional media for multimodal understanding; receive a **structured, richer prompt**.

* **No video is produced.** Result is in `result.prompt` (not `result.videos`)
* Media fields use the **same validation rules** as [video generation](/en/api-reference/videos/minimax-h3/generation) (frame vs reference mutual exclusion; audio cannot be alone) so the same inputs can go to generation next

Completed task query example:

```json theme={null}
{
  "code": 200,
  "data": {
    "actual_time": 28,
    "completed": 1700000128,
    "cost": 0.011204,
    "created": 1700000100,
    "credits_cost": 0.11204,
    "estimated_time": 100,
    "id": "task_01J9HA7J*************",
    "progress": 100,
    "result": {
      "prompt": "integrated_multimodal_description: [Shot 1] Cinematic, close-up shot. The camera slowly pushes in on a lone adult astronaut standing in a dimly lit, metallic corridor. The astronaut wears a weathered, white and silver extravehicular spacesuit heavily scuffed with grey dust, featuring a completely opaque, gold-tinted helmet visor. The astronaut slowly pushes open a rusted, thick steel airlock door on the right side of the frame. As the heavy metal door shifts, a sudden, intense beam of vibrant green light spills across the dark frame, illuminating the intricate fabric folds of the suit. The curved golden visor vividly reflects a dense, tangled mass of luminescent green leaves and vines. [Shot 2] At 00:02.500, the camera cuts to a wide shot from directly behind the astronaut from Shot 1, smoothly pedestaling up to reveal the interior of the abandoned orbital station. The vast, hexagonal titanium room is completely overrun by a lush, zero-gravity living garden. Giant, emerald-green vines spiral tightly around cracked, grey ceiling support beams, while thick patches of bioluminescent cyan moss emit a soft glow from the rusted floor grid. Several large, perfectly spherical water droplets float weightlessly in the midground, refracting the ambient green light. The astronaut lowers their heavy, white-gloved hands to their sides, standing perfectly motionless before the massive canopy of overgrown flora.\noverall_soundscape: A loud, grinding metallic creak dominates the foreground as the heavy steel door shifts, instantly followed by a pronounced, high-pitched hiss of escaping pressurized air. A continuous, low-frequency mechanical hum rumbles in the background, establishing the station's deadened room tone. As the space opens, the distinct, crisp rustle of thick foliage is clearly heard, accompanied by soft, resonant liquid plops as unseen water drops collide in the metallic chamber.\nnon_diegetic_music: Ambient electronic score, slow tempo, featuring a deep, sustained synthesizer drone heavily overlaid with delicate, shimmering glockenspiel notes and a solitary, reverberating cello."
    },
    "status": "completed",
    "usage": {
      "input_tokens": 5512,
      "output_tokens": 2388,
      "total_tokens": 7900
    }
  }
}
```

Pass `result.prompt` **as-is** to `MiniMax-H3` as `prompt`.

## Request Parameters

<ParamField body="model" type="string" required>
  Fixed value: `MiniMax-H3-Context-IR`
</ParamField>

<ParamField body="prompt" type="string" required>
  Original idea text, **≤ 7000 characters**
</ParamField>

<ParamField body="duration" type="integer" default="5">
  Target video duration (seconds), **4\~15**, default `5`. Affects pacing language in the enhanced prompt.
</ParamField>

<ParamField body="aspect_ratio" type="string">
  Target aspect ratio. **Required for text-only input**, and cannot be `adaptive`.

  Common values: `16:9`, `9:16`, `1:1`, `4:3`, `3:4`, `21:9`, etc.
</ParamField>

<ParamField body="first_frame_image" type="string">
  First-frame image URL
</ParamField>

<ParamField body="last_frame_image" type="string">
  Last-frame image URL
</ParamField>

<ParamField body="image_urls" type="string[]">
  Reference images (always treated as references), ≤ **9**
</ParamField>

<ParamField body="image_with_roles" type="object[]">
  Role-tagged images: `first_frame` / `last_frame` / `reference_image`
</ParamField>

<ParamField body="video_urls" type="string[]">
  Reference videos, ≤ **3**; each 2\~15s, total ≤ 15s
</ParamField>

<ParamField body="audio_urls" type="string[]">
  Reference audio, ≤ **3**; cannot be used alone — pair with image or video
</ParamField>

## Billing

**Token-based** (only H3-family model billed by tokens):

| Item          | Price                |
| ------------- | -------------------- |
| Input tokens  | **\$0.87 / million** |
| Output tokens | **\$3.45 / million** |

A typical call (\~5.6k input + \~3.4k output tokens) is about **\$0.0167**.

A fixed deposit is pre-charged on submit, then settled against real `prompt_tokens` / `completion_tokens` (refund excess / charge shortfall). Multimodal inputs significantly increase input tokens.

## Notes

1. Usually **20\~40 seconds**; poll [task status](/en/api-reference/tasks/status) every **3\~5 seconds**.
2. Bad params → sync **400** (no task, no charge); runtime failures go to `failed` with auto refund.
3. Full workflow notes are on the [Regeneration](/en/api-reference/videos/minimax-h3/regeneration) page.

## Response

<ResponseField name="code" type="integer">
  Status code; 200 on success
</ResponseField>

<ResponseField name="data" type="array">
  On submit: `status` / `task_id`

  <Expandable title="Array elements">
    <ResponseField name="status" type="string">
      Initially `submitted`
    </ResponseField>

    <ResponseField name="task_id" type="string">
      Task ID
    </ResponseField>
  </Expandable>
</ResponseField>
