# MiniMax H3 Image to Video Audio LoRA Trainer API

> LoRA treniruoklis, mokantis pirmojo kadro vaizdo keitimą į vaizdo įrašą su garsu iš vaizdo klipų

Treniruoja LoRA iš vaizdo klipų ZIP archyvo, esančio `training_data_url`, naudodama pirmojo kadro sąlygojimą, kad nejudantis vaizdas galėtų būti animuojamas į vaizdo įrašą. Duomenų rinkinyje turi būti tik vaizdo įrašai. Nustatymai apima `rank` nuo 8 iki 128, `number_of_steps` iki 15000, `number_of_frames` nuo 22 iki 124, `frame_rate` nuo 8 iki 60 ir `trigger_phrase`. Išveda LoRA svorius ir konfigūracijos failą.

- 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/lt/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 |  |  | ZIP URL su mokymo vaizdo įrašais .mp4, .mov, .avi arba .mkv formatu; rekomenduojama bent 10 klipų, o didesnės kolekcijos yra tinkamesnės. Vaizdai negali būti mokymo medija: vien vaizdų duomenų rinkiniai ir archyvai, kuriuose mokymo vaizdai sumaišyti su vaizdo įrašais, atmetami, nors kai kurie galiniai taškai leidžia vaizdus naudoti kaip sąlygojančius papildomus išteklius. Prie klipų gali būti pridėti pasirinktiniai antraščių failai, kurių kiekvieno tekstinio failo bazinis pavadinimas sutampa su vaizdo įrašo pavadinimu. |
| `rank` |  | enum (integer) | no | `32` | `8`, `16`, `32`, `64`, `128` | LoRA adaptacijos rangas: didėjant reikšmei didėja atminties sąnaudos ir talpa. |
| `number_of_steps` |  | integer | no | `2000` | 1 – 15,000 | Bendras mokymo žingsnių skaičius. |
| `learning_rate` |  | number | no | `0.0002` | 0.000001 – 1 | Optimizavimo mokymosi sparta, subalansuojanti galimą mokymo pagreitėjimą su per didelio pritaikymo rizika ją padidinus. |
| `number_of_frames` |  | integer | no | `73` | 22 – 124 | Kiekvieno mokymo pavyzdžio kadrų skaičius; dalijant iš 17 liekana turi būti 5. Pavyzdžiai: 22, 39, 56, 73, 90, 107 ir 124. |
| `frame_rate` |  | integer | no | `24` | 8 – 60 | Tikslinis vaizdo įrašo kadrų dažnis, matuojamas kadrais per sekundę. |
| `resolution` |  | enum (string) | no | `medium` | `low`, `medium`, `high` | Mokymo raiška. Didesnė raiška padidina atminties poreikius. |
| `aspect_ratio` |  | enum (string) | no | `16:9` | `21:9`, `16:9`, `4:3`, `1:1`, `3:4`, `9:16` | Pasirinkite mokymo formato santykį iš to paties rinkinio, kurį galima naudoti per MiniMax H3 API. |
| `trigger_phrase` |  | string | no | `` |  | LoRA stiliaus aktyvinimo frazė, mokant įterpiama aprašų pradžioje. |
| `first_frame_conditioning_p` |  | number | no | `0.5` | 0 – 1 | Pagerinkite image-to-video našumą padidindami pirmojo kadro sąlygojimo naudojimo dažnį mokymo metu; ši reikšmė nustato tą tikimybę. |
| `auto_scale_input` |  | boolean | no | `false` |  | Ar tikslinis fps ir kadrų skaičius sulyginami automatiškai keičiant vaizdo įrašo mastelį; true įjungia šį koregavimą. |
| `split_input_into_scenes` |  | boolean | no | `true` |  | Vaizdo įrašų, viršijančių trukmės slenkstį, scenų skaidymas, įjungiamas esant true. |
| `split_input_duration_threshold` |  | number | no | `30` | 1 – 60 | Scenos skaidymo trigeris, išreikštas trukme sekundėmis: skaidomi tik už slenkstį ilgesni vaizdo įrašai. |
| `debug_dataset` |  | boolean | no | `false` |  | Išankstinio apdorojimo tikrinimo režimas vaizdo įrašams, vaizdams ir aprašams patikrinti prieš visą mokymo paleidimą. Įjungus mokytuvas grąžina apdorotą mokymo duomenų rinkinį atsisiunčiamame archyve rankinei peržiūrai. |
| `strict_dataset` |  | boolean | no | `false` |  | Griežtas išankstinio apdorojimo problemų, kurios kitu atveju būtų užregistruotos ir išspręstos naudojant dokumentuotas atsargines parinktis, tvarkymas. Įjungus atmetami antraščių failai, kuriems reikia tuščių raginių, trūkstamų papildomų pagrindinių kadrų ir vaizdo įrašų su neperskaitomu garsu, užuot atitinkamai naudojus tuščią raginį, klipo kadrą arba tylą. |

## 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} | Mokytų LoRA svorių URL `.safetensors` formatu. |
| `config_file` | object {url, content_type, file_name, file_size} | Išvedimo galinio taško sąrankos konfigūracija. |
| `debug_dataset` | object {url, content_type, file_name, file_size} \| null | Pasiekiamas tik užklausoms, kuriose įjungtas `debug_dataset`; ši atsisiunčiama archyvo rinkmena talpina mokymo duomenis po išankstinio apdorojimo. |

## 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
