# MiniMax H3 Reference to Video LoRA Trainer API

> Önceki bir LoRA'dan sıcak başlangıç destekli, referans koşullandırmalı video için LoRA eğiticisi

Referans girdilerinin video oluşturmayı yönlendirebilmesi için özne video kliplerinden oluşan bir zip dosyası üzerinde LoRA eğitir. `reference_conditioning_p`, eğitim sırasında referansların ne sıklıkla kullanılacağını belirler; `resume_from_lora_url` ise daha önce eğitilmiş bir LoRA'dan devam eder. Ayrıca `rank`, `number_of_steps`, `number_of_frames`, `frame_rate` ve `aspect_ratio` yapılandırılabilir. Ağırlıkları ve bir yapılandırma dosyasını döndürür.

- 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/tr/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 |  |  | Konu eğitim videolarından oluşan ZIP URL'si; yalnızca görsel içeren veri kümeleri ve karma görsel/video eğitim arşivleri reddedilir, bu nedenle görseller bunun yerine referans yan dosyaları olmalıdır. İsteğe bağlı ekler her klibin temel adını paylaşır: `clip01.txt` gibi bir açıklama ve `ref_1` ile `ref_4` arasındaki sıralı referanslar `clip01.ref_1.<ext>` ile `clip01.ref_4.<ext>` adlarını taşır; referans yan dosyaları yoksa klipten bir kare kendi referansını sağlar. `<ext>` referans modunu belirler: görseller (.png/.jpg/.jpeg), ses (.wav/.mp3/.flac/.m4a/.ogg/.aac) veya videolar (.mp4/.mov/.avi/.mkv/.webm); bunların ses parçaları da ses referansına dönüşür. Eğitim klipleri .mp4, .mov, .avi ve .mkv biçimlerini destekler; en az 10 klip hedefleyin, daha fazlası tercih edilir. |
| `rank` |  | enum (integer) | no | `32` | `8`, `16`, `32`, `64`, `128` | LoRA uyarlama derecesi; değer yükseldikçe artan bellek tüketimi karşılığında daha yüksek kapasite sağlar. |
| `number_of_steps` |  | integer | no | `2000` | 1 – 15,000 | Toplam eğitim adımı sayısı. |
| `learning_rate` |  | number | no | `0.0002` | 0.000001 – 1 | Artırıldığında eğitimde olası hızlanma ile aşırı uyum riskini dengeleyen optimizasyon öğrenme hızı. |
| `number_of_frames` |  | integer | no | `73` | 22 – 124 | Her eğitim örneğinin kare sayısı; 17'ye bölündüğünde kalan 5 olmalıdır. Örnekler: 22, 39, 56, 73, 90, 107 ve 124. |
| `frame_rate` |  | integer | no | `24` | 8 – 60 | Saniye başına kare cinsinden ölçülen hedef video kare hızı. |
| `resolution` |  | enum (string) | no | `medium` | `low`, `medium`, `high` | Eğitim çözünürlüğü. Çözünürlüğün artırılması bellek gereksinimlerini yükseltir. |
| `aspect_ratio` |  | enum (string) | no | `16:9` | `21:9`, `16:9`, `4:3`, `1:1`, `3:4`, `9:16` | Eğitim en-boy oranını MiniMax H3 API üzerinden kullanılabilen aynı kümeden seçin. |
| `trigger_phrase` |  | string | no | `` |  | Eğitim sırasında açıklamaların başına eklenen LoRA stil etkinleştirme ifadesi. |
| `reference_conditioning_p` |  | number | no | `0.9` | 0 – 1 | Eğitimin referans görseli koşullandırmasını koşullandırılmamış metinden videoya-ses eğitimine kıyasla ne sıklıkta kullanacağını ayarlayın. Kalan olasılık, yalnızca istemle kararlı üretimi sürdürmek için koşullandırılmamış amaca gider. |
| `resume_from_lora_url` |  | string \| null | no |  |  | Bu eğitici tarafından daha önce oluşturulan bir .safetensors LoRA ile sıcak başlangıç eğitimi için URL'nin ardından number_of_steps ek eğitim adımı sayısını sağlayın. Bağdaştırıcı ağırlıkları dışında hiçbir şey geri yüklenmez: hem optimizasyon hem de öğrenme hızı zamanlaması yeniden başlar. |
| `auto_scale_input` |  | boolean | no | `false` |  | Hedef fps ve kare sayısının otomatik video ölçekleme yoluyla eşleştirilip eşleştirilmeyeceği; true bu ayarı etkinleştirir. |
| `split_input_into_scenes` |  | boolean | no | `true` |  | Süre eşiğinden uzun videolar için sahne bölmeyi etkinleştirin; bölünen kliplerdeki referans yan dosyaları atılır. |
| `split_input_duration_threshold` |  | number | no | `30` | 1 – 60 | Saniye cinsinden süre olarak ifade edilen sahne bölme tetikleyicisi: yalnızca eşikten uzun videolar bölünür. |
| `debug_dataset` |  | boolean | no | `false` |  | Tam eğitime başlamadan önce ön işlemeyi kontrol etmek için arşiv indirme seçeneği. Etkinleştirildiğinde eğitici, işlenmiş veri kümesini paketler; böylece açıklamaları, referans görsellerini, videoları ve görselleri doğruluk açısından elle inceleyebilirsiniz. |
| `strict_dataset` |  | boolean | no | `false` |  | Aksi halde günlüğe kaydedilip belgelenen geri dönüşle çözülecek ön işleme sorunlarının katı biçimde ele alınması. Etkinleştirilmesi, boş istem gerektiren açıklamaları, eksik referans yan dosyalarını ve okunamayan ses içeren videoları bu geri dönüşlere izin vermek yerine reddeder. |

## 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 biçimindeki eğitilmiş LoRA ağırlıkları için URL. |
| `config_file` | object {url, content_type, file_name, file_size} | Çıkarım uç noktası kurulumu için yapılandırma. |
| `debug_dataset` | object {url, content_type, file_name, file_size} \| null | Yalnızca `debug_dataset` etkinleştirilmiş isteklerde kullanılabilir; bu indirilebilir arşiv, ön işleme sonrasındaki eğitim verilerini içerir. |

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