# MiniMax H3 Image to Video Audio LoRA Trainer API

> Trainer LoRA che instruescha image-to-video dal prim frame cun audio da clips video

Trainescha in LoRA d’ina zip da clips video en `training_data_url`, cun cundiziunament dal prim frame per animar in maletg fix en video. Il dataset sto cuntegnair mo videos. Ils settings includan `rank` da 8 fin 128, `number_of_steps` fin 15000, `number_of_frames` da 22 fin 124, `frame_rate` da 8 fin 60 ed ina `trigger_phrase`. Retorna ils pes LoRA ed ina datoteca da configuraziun.

- Model id: `minimax/h3/i2v/trainer`
- Made by: MiniMax
- Category: Training
- Output: file
- Price: $0.01 / step (cheapest run $20.00 (20000 API credits))
- Run: `POST https://api.doitong.com/v1/run/minimax/h3/i2v/trainer`
- Quote: `POST https://api.doitong.com/v1/quote/minimax/h3/i2v/trainer`
- Docs page: https://doitong.com/rm/developers/models/minimax/h3/i2v/trainer

## Pricing

Price: **$0.01 / step**. Billed per training step (`number_of_steps`).

The full example input below costs $20.00 = 20000 API credits (2000 steps × 10 API credits).

Prices are the upstream price in USD, paid from the API balance in API credits (1000 API credits = 1 USD). `POST https://api.doitong.com/v1/quote/minimax/h3/i2v/trainer` with the same JSON body returns the exact price for that input; the quote is exactly what a run charges. Invalid input is never charged and failed or canceled requests are refunded automatically.

## Input parameters

| Parameter | Canonical name | Type | Required | Default | Allowed values / range | Description |
|---|---|---|---|---|---|---|
| `training_data_url` |  | string | yes |  |  | URL d'in ZIP cun videos da trenament en format .mp4, .mov, .avi u .mkv; almain 10 clips èn recumandads, e collecziuns pli grondas èn preferiblas. Maletgs na pon betg esser medias da trenament: datasets mo da maletgs ed archivs che maschaidan maletgs da trenament cun videos vegnan refusads, bain che tscherts endpoints permettan maletgs sco sidecars da condicionament. Datotecas da legenda facultativas pon accumpagnar ils clips, cun mintga datoteca da text che porta il medem num da basa sco ses video. |
| `rank` |  | enum (integer) | no | `32` | `8`, `16`, `32`, `64`, `128` | Rank da l'adattaziun LoRA, che baratta dapli consum da memoria cunter dapli capacitad sch'il parameter crescha. |
| `number_of_steps` |  | integer | no | `2000` | 1 – 15,000 | Dumber total da pass da scolaziun. |
| `learning_rate` |  | number | no | `0.0002` | 0.000001 – 1 | Ritmus d'emprender per l'optimizaziun, che cumpensescha in pussaivel augment da spertadad dal trenament cun il ristg d'overfitting en cas d'augment. |
| `number_of_frames` |  | integer | no | `73` | 22 – 124 | Quantitad da frames per mintga exempel da trenament; sia divisun tras 17 sto dar ina restanza da 5. Exemplas èn 22, 39, 56, 73, 90, 107 e 124. |
| `frame_rate` |  | integer | no | `24` | 8 – 60 | Frequenza da frames dal video target, mesirada en frames per secunda. |
| `resolution` |  | enum (string) | no | `medium` | `low`, `medium`, `high` | Resoluziun da scolaziun. Augmentar la resoluziun augmenta il basegn da memoria. |
| `aspect_ratio` |  | enum (string) | no | `16:9` | `21:9`, `16:9`, `4:3`, `1:1`, `3:4`, `9:16` | Tscherna la relaziun d'aspect dal trenament dal medem set disponibel tras l'API MiniMax H3. |
| `trigger_phrase` |  | string | no | `` |  | Frasa d'activaziun dal stil LoRA, inserida a l'entschatta da las legendas durant la scolaziun. |
| `first_frame_conditioning_p` |  | number | no | `0.5` | 0 – 1 | Megliurar la prestaziun image-to-video augmentond quant savens che il trenament utilisescha la cundiziun dal prim frame; questa valur fixescha quella probabilitad. |
| `auto_scale_input` |  | boolean | no | `false` |  | Sche fps e quantitad da frames da destinaziun vegnan accordads tras scalaziun automatica dal video; true activa questa adattaziun. |
| `split_input_into_scenes` |  | boolean | no | `true` |  | Partiziun da scenas per videos che surpassan ina limita da durada, activada sch'ella è true. |
| `split_input_duration_threshold` |  | number | no | `30` | 1 – 60 | Trigger da partiziun da scenas exprimì sco durada en secundas: mo videos pli lungs che la limita vegnan partidas. |
| `debug_dataset` |  | boolean | no | `false` |  | Modus d'inspecziun da preelavuraziun per controllar videos, maletgs e legendas avant ina scolaziun cumpletta. L'activaziun fa turnar al trainer il dataset da scolaziun elavurà en in archiv telechargiabel per controlla manuala. |
| `strict_dataset` |  | boolean | no | `false` |  | Tractament strict dals problems da preelavuraziun che autramain vegnan protocollads e schliads cun ils fallback documentads. L'activaziun refusa legendas che basegnan prompts vids, keyframes sidecar mancants e videos cun audio illegibel, empè da remplazzar quels cun in prompt vid, in frame dal clip u silenzi. |

## Example input

Required parameters only:

```json
{
  "training_data_url": "https://example.com/your-file.zip"
}
```

A fuller example:

```json
{
  "training_data_url": "https://example.com/your-file.zip"
}
```

## Run it

Set `DOITONG_API_KEY` to a key from https://doitong.com/developers/dashboard#keys. `?wait=20` returns the finished request in the same call when it is ready within 20 seconds; otherwise poll `GET /requests/{id}` (it also accepts `?wait=`), or pass `webhook_url`.

### curl

```bash
# Run the model; wait up to 20 s for the finished result in the same call
curl -X POST "https://api.doitong.com/v1/run/minimax/h3/i2v/trainer?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "training_data_url": "https://example.com/your-file.zip"
  }'

# Still "queued" or "running"? Poll with the id from the response:
curl "https://api.doitong.com/v1/requests/REQUEST_ID?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY"
```

### JavaScript

```javascript
const API = "https://api.doitong.com/v1";
const headers = {
  "Authorization": "Bearer " + process.env.DOITONG_API_KEY,
  "Content-Type": "application/json",
};

// Run the model; wait up to 20 s for the finished result in the same call
let res = await fetch(API + "/run/minimax/h3/i2v/trainer?wait=20", {
  method: "POST",
  headers,
  body: JSON.stringify({
    "training_data_url": "https://example.com/your-file.zip"
  }),
});
let request = await res.json();
if (!res.ok) throw new Error(request.error.code + ": " + request.error.message);

// Not finished yet: long-poll until it is
while (request.status === "queued" || request.status === "running") {
  res = await fetch(API + "/requests/" + request.id + "?wait=20", { headers });
  request = await res.json();
}
if (request.status !== "succeeded") throw new Error(JSON.stringify(request.error));
console.log(request.outputs.map((o) => o.url), request.cost.credits + " API credits ($" + request.cost.usd + ")");
```

### Python

```python
import os
import requests

API = "https://api.doitong.com/v1"
headers = {"Authorization": "Bearer " + os.environ["DOITONG_API_KEY"]}

payload = {
    "training_data_url": "https://example.com/your-file.zip",
}

# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/minimax/h3/i2v/trainer", params={"wait": 20}, json=payload, headers=headers)
request = r.json()
if not r.ok:
    raise RuntimeError(request["error"]["code"] + ": " + request["error"]["message"])

# Not finished yet: long-poll until it is
while request["status"] in ("queued", "running"):
    request = requests.get(API + "/requests/" + request["id"], params={"wait": 20}, headers=headers).json()
if request["status"] != "succeeded":
    raise RuntimeError(request["error"])
print([o["url"] for o in request["outputs"]], request["cost"]["credits"], "API credits", "$" + request["cost"]["usd"])
```

### MCP

The MCP server at `https://api.doitong.com/v1/mcp` exposes the tools `search_models`, `get_model`, `quote`, `run`, `get_request`, `cancel_request`, `list_requests`, `create_upload` and `get_account`. A `run` call for this model:

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "run",
    "arguments": {
      "model_id": "minimax/h3/i2v/trainer",
      "input": {
        "training_data_url": "https://example.com/your-file.zip"
      },
      "wait_seconds": 20
    }
  }
}
```

## Response

Every call returns a request object. `status` is one of `queued`, `running`, `succeeded`, `failed`, `canceled`. `outputs` lists the generated files with URLs on our storage (kept forever, or 7 days with `?storage=temporary`; `storage` says which); `output` is the model's own result object with the same URLs.

```json
{
  "id": "req_8k2m4q7x1z9c3v5b6n0p2r4t",
  "object": "request",
  "model": "minimax/h3/i2v/trainer",
  "status": "succeeded",
  "created_at": "2026-10-20T12:00:00Z",
  "started_at": "2026-10-20T12:00:02Z",
  "completed_at": "2026-10-20T12:00:09Z",
  "queue_position": null,
  "cost": {
    "credits": 20000,
    "usd": "20.00",
    "charged": 20000,
    "refunded": 0
  },
  "input": {
    "training_data_url": "https://example.com/your-file.zip"
  },
  "output": {
    "lora_file": {
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
      "content_type": "image/jpeg",
      "file_name": "0-output.jpeg",
      "file_size": 1843200
    },
    "config_file": {
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
      "content_type": "image/jpeg",
      "file_name": "0-output.jpeg",
      "file_size": 1843200
    },
    "debug_dataset": {
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
      "content_type": "image/jpeg",
      "file_name": "0-output.jpeg",
      "file_size": 1843200
    }
  },
  "outputs": [
    {
      "type": "file",
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
      "content_type": "image/jpeg",
      "file_size": 1843200,
      "stored": true
    }
  ],
  "error": null,
  "metrics": {
    "inference_seconds": 6.8
  },
  "urls": {
    "self": "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t",
    "cancel": "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t/cancel"
  }
}
```

### Output fields (`output`)

| Field | Type | Description |
|---|---|---|
| `lora_file` | object {url, content_type, file_name, file_size} | URL per las ponderaziuns LoRA scoladas en format .safetensors. |
| `config_file` | object {url, content_type, file_name, file_size} | Configuraziun per l'installaziun da l'endpoint d'inferenza. |
| `debug_dataset` | object {url, content_type, file_name, file_size} \| null | Disponibel mo per dumondas cun `debug_dataset` activà, quest archiv scaricabel cuntegna las datas da trenament suenter la preelavuraziun. |

## Related models

- [MiniMax H3 First Last Frame LoRA Trainer](https://doitong.com/developers/models/minimax/h3/flf2v/trainer.md) (`minimax/h3/flf2v/trainer`): $0.01 / step
- [MiniMax H3 Reference to Video LoRA Trainer](https://doitong.com/developers/models/minimax/h3/ref2va/trainer.md) (`minimax/h3/ref2va/trainer`): $0.015 / step
- [MiniMax H3 Text to Video LoRA Trainer](https://doitong.com/developers/models/minimax/h3/t2v/trainer.md) (`minimax/h3/t2v/trainer`): $0.005 / step
- [ERNIE-Image Trainer](https://doitong.com/developers/models/ernie-image-trainer.md) (`ernie-image-trainer`): $0.0012 / step
- [FLUX 2 \[klein\] 9b Base Trainer](https://doitong.com/developers/models/flux-2-klein-9b-base-trainer.md) (`flux-2-klein-9b-base-trainer`): $0.0043 / step
- [Flux 2 Klein 9B Base Trainer](https://doitong.com/developers/models/flux-2-klein-9b-base-trainer/edit.md) (`flux-2-klein-9b-base-trainer/edit`): $0.0139 / step
- [FLUX 2 Trainer](https://doitong.com/developers/models/flux-2-trainer.md) (`flux-2-trainer`): $0.0064 / step
- [FLUX 2 Trainer Edit](https://doitong.com/developers/models/flux-2-trainer/edit.md) (`flux-2-trainer/edit`): $0.0389 / step

## Links

- HTML page: https://doitong.com/developers/models/minimax/h3/i2v/trainer
- All models and guides for AI agents: https://doitong.com/developers/llms.txt
- OpenAPI 3.1 with this model's typed request body: https://doitong.com/developers/openapi.json?model=minimax/h3/i2v/trainer
- Errors: https://doitong.com/developers/docs/errors
- Model details as JSON: https://api.doitong.com/v1/models/minimax/h3/i2v/trainer
