# MiniMax integration

https://video-doc.1route.dev/en/docs/minimax



## Verification status (2026-09-23) [#verification-status-2026-09-23]

In the latest concurrent test, the image/audio reference model accepted a task but delivery remains unverified. Both per-request variants and the 933 per-second variant failed submission. &#x2A;*Those three variants are paused for new requests and removed from the public plugin catalog and schema; historical tasks and bills are retained.** Only `minimax-h3-8img3audio` remains enabled for testing; stable delivery is not promised.

Acceptance, 99% progress or archiving does not mean download readiness. A creation timeout does not prove that generation never started. Keep request records and contact support rather than automatically resubmitting.

The [machine-readable verification record](/minimax-test-status.json) describes this test only, not an uptime guarantee.

## Model, permission and budget [#model-permission-and-budget]

API root: `https://video.1route.dev`. Create a service key for the 混合 group and check `GET /v1/models` with that key. Do not reuse an image-service key.

Read [models and prices](/en/docs/minimax-models/), [models.json](/models.json) and [MiniMax OpenAPI](/minimax-openapi.json). The schema covers canonical MiniMax JSON fields only, not WAN3 or other video families. The public catalog is a price snapshot, not proof of token permissions. A null limit means unknown, not unlimited. Unverified capabilities are not a support promise.

Obtain the user's approval for the selected model, use of their media, duration and CNY spending limit before generating.

## Request fields [#request-fields]

`POST /v1/videos` with `Authorization: Bearer YOUR_API_KEY` and `Content-Type: application/json`.

| Field        | Type             | Contract                                                             |
| ------------ | ---------------- | -------------------------------------------------------------------- |
| `model`      | string           | Copy the public API ID, not the display name                         |
| `prompt`     | non-empty string | Describe the scene; identify multiple images as Image 1, Image 2     |
| `seconds`    | integer          | Required; 5–15                                                       |
| `resolution` | string           | `480p` or `768p`, not pixel dimensions                               |
| `ratio`      | string           | `16:9` or `9:16`                                                     |
| `images`     | URL string array | Up to 8 for the image/audio reference model                          |
| `audios`     | URL string array | Up to 3 for that model; audio reference generation is not yet tested |
| `videos`     | URL string array | Not supported; do not submit a non-empty array                       |

Use public HTTP(S) media URLs that require no login. Local paths, preview pages and base64 are not accepted. Never upload private media to an arbitrary host without approval. Do not send WAN3 `reference_images` or `reference_videos`. Use canonical fields consistently instead of mixing compatibility aliases such as `duration`, `size` and `aspect_ratio`. Text-only generation is not currently promised.

## Minimal request [#minimal-request]

Replace the placeholder with a real, user-approved image URL before submission.

```json
{
  "model": "minimax-h3-8img3audio",
  "prompt": "Use Image 1 as the scene reference. Slowly move the camera forward while preserving the subject and composition.",
  "seconds": 5,
  "resolution": "768p",
  "ratio": "16:9",
  "images": ["https://YOUR_MEDIA_HOST/reference.jpg"]
}
```

Read the key from private environment variable `VIDEO_API_KEY`. Do not expose it in frontend code, screenshots or logs. Append `/v1/videos` to the API root once.

## Durable task workflow [#durable-task-workflow]

1. Submit once; immediately persist the complete returned `id` and `X-Oneapi-Request-Id`.
2. Query `GET /v1/videos/{id}` with the same key every 15 seconds. Continue for `queued` or `in_progress`.
3. On `completed`, read `metadata.url` (a `url` field may also be supplied). If no URL is ready, keep querying the same task rather than creating another one.
4. Download the MP4 immediately using the returned service URL verbatim. Signed links last up to about 5 minutes; ready files are cached for about 10 minutes. Never forward your API key to arbitrary download hosts.
5. Stop on generation failure and inspect service task/usage records. A successful generation without delivery requires support for delivery or a refund; absence of a URL does not mean refunded.

Do not automatically repeat POST after a timeout, disconnect or ambiguous 5xx. Inspect existing tasks/usage first. Transient GET errors can use backoff. Resume saved task IDs after a restart. No idempotent creation or cancellation endpoint is promised.

## Settlement [#settlement]

Generation, delivery and billing status are separate. Per-second tasks without valid usage retain their reservation for manual reconciliation, not estimated final settlement. Do not bill waiting time or apply WAN3 reference-video duration rules. See [prices](/en/docs/minimax-models/).
