# MiniMax H3 Reference to Video LoRA Trainer API

> Бұрынғы LoRA-дан жылы бастау мүмкіндігі бар, анықтамалық шартталған бейнеге арналған LoRA тренері

Анықтамалық кірістер бейне генерациясын бағыттай алуы үшін нысан бейнелері бар zip файлы арқылы LoRA үйретеді. `reference_conditioning_p` үйрету кезінде анықтамалардың қаншалықты жиі қолданылатынын анықтайды, ал `resume_from_lora_url` бұрын үйретілген LoRA-дан жалғастырады. Сонымен қатар `rank`, `number_of_steps`, `number_of_frames`, `frame_rate` және `aspect_ratio` параметрлері реттеледі. Салмақтар мен конфигурация файлын қайтарады.

- Model id: `minimax/h3/ref2va/trainer`
- Made by: MiniMax
- Category: Training
- Output: file
- Price: $0.015 / step (cheapest run $30.00 (30000 API credits))
- Run: `POST https://api.doitong.com/v1/run/minimax/h3/ref2va/trainer`
- Quote: `POST https://api.doitong.com/v1/quote/minimax/h3/ref2va/trainer`
- Docs page: https://doitong.com/kk/developers/models/minimax/h3/ref2va/trainer

## Pricing

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

The full example input below costs $30.00 = 30000 API credits (2000 steps × 15 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/ref2va/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-і; тек кескінді деректер жиындары мен кескін/бейне аралас тренинг архивтері қабылданбайды, сондықтан кескіндер анықтамалық қосымша материал болуы керек. Қосымша файлдар әр үзіндінің негізгі атауын бөліседі: `clip01.txt` сияқты сипаттама және `ref_1`–`ref_4` аралығындағы реттелген анықтамалар, атаулары `clip01.ref_1.<ext>`–`clip01.ref_4.<ext>`; анықтамалық қосымша материал болмаса, үзіндідегі кадр оның өз анықтамасы болады. `<ext>` анықтама модальділігін анықтайды: кескіндер (.png/.jpg/.jpeg), аудио (.wav/.mp3/.flac/.m4a/.ogg/.aac) немесе бейнелер (.mp4/.mov/.avi/.mkv/.webm), олардың саундтректері де аудио анықтамасына айналады. Тренинг үзінділері .mp4, .mov, .avi және .mkv форматтарын қолдайды; кемінде 10 үзінді, мүмкіндігінше көбірек пайдаланыңыз. |
| `rank` |  | enum (integer) | no | `32` | `8`, `16`, `32`, `64`, `128` | LoRA бейімделу рангі; мән артқан сайын жад тұтынуы өсіп, сыйымдылығы артады. |
| `number_of_steps` |  | integer | no | `2000` | 1 – 15,000 | Оқыту қадамдарының жалпы саны. |
| `learning_rate` |  | number | no | `0.0002` | 0.000001 – 1 | Оңтайландырудың оқу жылдамдығы; арттырылған кезде оқу жылдамдығының ықтимал өсуі мен артық үйретілу қаупі арасындағы теңгерімді реттейді. |
| `number_of_frames` |  | integer | no | `73` | 22 – 124 | Әр тренинг үлгісіндегі кадр саны; оны 17-ге бөлгенде қалдық 5 болуы керек. Мысалдар: 22, 39, 56, 73, 90, 107 және 124. |
| `frame_rate` |  | integer | no | `24` | 8 – 60 | Кадр/секундпен өлшенетін мақсатты бейне кадр жиілігі. |
| `resolution` |  | enum (string) | no | `medium` | `low`, `medium`, `high` | Оқыту ажыратымдылығы. Ажыратымдылықты арттыру жад талаптарын көбейтеді. |
| `aspect_ratio` |  | enum (string) | no | `16:9` | `21:9`, `16:9`, `4:3`, `1:1`, `3:4`, `9:16` | Тренинг арақатынасын MiniMax H3 API арқылы қолжетімді сол жиыннан таңдаңыз. |
| `trigger_phrase` |  | string | no | `` |  | LoRA стилін іске қосу тіркесі; оқыту кезінде тақырыптамалардың басына енгізіледі. |
| `reference_conditioning_p` |  | number | no | `0.9` | 0 – 1 | Тренингте анықтамалық кескінмен шарттау мен шартталмаған мәтіннен бейне-аудиоға тренингінің қаншалықты жиі қолданылатынын белгілеңіз. Қалған ықтималдық prompt-only генерациясының тұрақтылығын сақтау үшін шартталмаған мақсатқа беріледі. |
| `resume_from_lora_url` |  | string \| null | no |  |  | Осы тренер бұрын жасаған .safetensors LoRA көмегімен warm-start тренингіне арналған URL, одан кейінгі number_of_steps қосымша тренинг қадамдарының саны. Адаптер салмақтарынан басқа ештеңе қалпына келтірілмейді: оңтайландыру мен learning-rate жоспарлауы қайта басталады. |
| `auto_scale_input` |  | boolean | no | `false` |  | Мақсатты fps пен кадр саны автоматты бейне масштабтауы арқылы сәйкестендірілетінін көрсетеді; true бұл түзетуді қосады. |
| `split_input_into_scenes` |  | boolean | no | `true` |  | Ұзақтық шегінен асатын бейнелер үшін көріністі бөлуді қосу; бөлінген үзінділердің анықтамалық қосымша материалдарын жою. |
| `split_input_duration_threshold` |  | number | no | `30` | 1 – 60 | Секундпен көрсетілетін көріністі бөлу шегі: тек шектен ұзын бейнелер бөлінеді. |
| `debug_dataset` |  | boolean | no | `false` |  | Толық тренингті бастамас бұрын алдын ала өңдеуді тексеру үшін архив жүктеп алу мүмкіндігі. Қосылса, тренер өңделген деректер жиынын орап, сипаттамаларды, анықтамалық кескіндерді, бейнелерді және кескіндерді қолмен тексеруге мүмкіндік береді. |
| `strict_dataset` |  | boolean | no | `false` |  | Әйтпесе журналға жазылып, құжатталған қосалқы тәсілмен өңделетін алдын ала өңдеу мәселелерін қатаң өңдеу. Қосылса, бос нұсқауды қажет ететін сипаттамалар, жетіспейтін анықтамалық қосымша материалдар және оқылмайтын аудиосы бар бейнелер қосалқы тәсілдерге жол бермей қабылданбайды. |

## 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/ref2va/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/ref2va/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/ref2va/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/ref2va/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/ref2va/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": 30000,
    "usd": "30.00",
    "charged": 30000,
    "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} | .safetensors форматындағы оқытылған LoRA салмақтарына арналған URL. |
| `config_file` | object {url, content_type, file_name, file_size} | Inference соңғы нүктесін орнату конфигурациясы. |
| `debug_dataset` | object {url, content_type, file_name, file_size} \| null | Тек `debug_dataset` қосылған сұрауларда қолжетімді бұл жүктеп алынатын архивте алдын ала өңдеуден кейінгі тренинг деректері сақталады. |

## 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 Image to Video Audio LoRA Trainer](https://doitong.com/developers/models/minimax/h3/i2v/trainer.md) (`minimax/h3/i2v/trainer`): $0.01 / 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/ref2va/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/ref2va/trainer
- Errors: https://doitong.com/developers/docs/errors
- Model details as JSON: https://api.doitong.com/v1/models/minimax/h3/ref2va/trainer
