# MiniMax H3 Image to Video Audio LoRA Trainer API

> Video kliplerinden sesli ilk kare görüntüden videoya üretimini öğreten LoRA eğiticisi

Sabit bir görüntünün videoya canlandırılabilmesi için ilk kare koşullandırmasını kullanarak `training_data_url` içindeki video kliplerinden oluşan bir zip dosyasından LoRA eğitir. Veri kümesi yalnızca videolar içermelidir. Ayarlar arasında 8 ile 128 arası `rank`, 15000'e kadar `number_of_steps`, 22 ile 124 arası `number_of_frames`, 8 ile 60 arası `frame_rate` ve bir `trigger_phrase` bulunur. LoRA ağırlıklarını ve bir yapılandırma dosyasını verir.

- 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/tr/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 |  |  | .mp4, .mov, .avi veya .mkv biçiminde eğitim videoları içeren bir ZIP URL'si; en az 10 klip önerilir ve daha büyük koleksiyonlar tercih edilir. Görseller eğitim medyası olamaz: yalnızca görsel içeren veri kümeleri ve eğitim görsellerini videolarla karıştıran arşivler reddedilir, ancak bazı uç noktalar görsellerin koşullandırma yan dosyaları olarak kullanılmasına izin verir. İsteğe bağlı açıklama dosyaları kliplere eşlik edebilir; her metin dosyası kendi videosunun temel adını paylaşır. |
| `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. |
| `first_frame_conditioning_p` |  | number | no | `0.5` | 0 – 1 | Eğitimin ilk kare koşullandırmasını kullanma sıklığını artırarak görselden videoya performansını iyileştirir; bu değer olasılığı belirler. |
| `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ğini aşan videolar için sahne bölme; true olduğunda etkinleştirilir. |
| `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ğitim çalıştırmasından önce videoları, görselleri ve açıklamaları denetlemek için ön işleme inceleme modu. Etkinleştirildiğinde eğitici, işlenmiş eğitim veri kümesini manuel inceleme için indirilebilir bir arşivde döndürür. |
| `strict_dataset` |  | boolean | no | `false` |  | Aksi halde günlüğe kaydedilip belgelenen geri dönüşlerle çözülecek ön işleme sorunlarının katı biçimde ele alınması. Etkinleştirilmesi, boş istem gerektiren açıklamaları, eksik yan dosya ana karelerini ve okunamayan ses içeren videoları sırasıyla boş istem, klip karesi veya sessizlikle değiştirmek 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/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} | .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 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
