# 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/ur/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 adaptation rank، setting بڑھنے کے ساتھ memory consumption کے بدلے زیادہ capacity فراہم کرتا ہے۔ |
| `number_of_steps` |  | integer | no | `2000` | 1 – 15,000 | Training steps کی کل count۔ |
| `learning_rate` |  | number | no | `0.0002` | 0.000001 – 1 | Optimization learning rate، جو training میں ممکنہ رفتار اور اسے بڑھانے پر overfitting کے خطرے کے درمیان توازن قائم کرتا ہے۔ |
| `number_of_frames` |  | integer | no | `73` | 22 – 124 | ہر training sample کے لیے فریم count؛ اسے 17 سے تقسیم کرنے پر remainder 5 ہونا چاہیے۔ مثالیں 22، 39، 56، 73، 90، 107 اور 124 ہیں۔ |
| `frame_rate` |  | integer | no | `24` | 8 – 60 | مطلوبہ ویڈیو فریم ریٹ، جس کی پیمائش فریم فی سیکنڈ میں کی جاتی ہے۔ |
| `resolution` |  | enum (string) | no | `medium` | `low`, `medium`, `high` | Training ریزولوشن۔ ریزولوشن بڑھانے سے memory requirements بڑھتی ہیں۔ |
| `aspect_ratio` |  | enum (string) | no | `16:9` | `21:9`, `16:9`, `4:3`, `1:1`, `3:4`, `9:16` | Training aspect ratio اسی set سے منتخب کریں جو MiniMax H3 API کے ذریعے دستیاب ہے۔ |
| `trigger_phrase` |  | string | no | `` |  | LoRA style activation phrase، training کے دوران captions کے آغاز میں داخل کیا جاتا ہے۔ |
| `reference_conditioning_p` |  | number | no | `0.9` | 0 – 1 | یہ متعین کریں کہ training میں reference-image conditioning اور unconditioned text-to-video-audio training کتنی بار استعمال ہوں۔ باقی تمام probability unconditioned objective کو جاتی ہے تاکہ stable prompt-only تخلیق برقرار رہے۔ |
| `resume_from_lora_url` |  | string \| null | no |  |  | اس trainer سے پہلے بنائی گئی .safetensors LoRA کے ساتھ warm-start training کا URL، اس کے بعد number_of_steps اضافی training steps۔ Adapter weights کے علاوہ کچھ restore نہیں کیا جاتا: optimization اور learning-rate scheduling دونوں نئے سرے سے شروع ہوتے ہیں۔ |
| `auto_scale_input` |  | boolean | no | `false` |  | کیا target fps اور فریم count automatic ویڈیو scaling کے ذریعے match کیے جائیں؛ true یہ adjustment enabled کرتا ہے۔ |
| `split_input_into_scenes` |  | boolean | no | `true` |  | threshold سے زیادہ لمبی ویڈیوز کے لیے scene splitting enabled کریں؛ split کیے گئے clips کے reference sidecars discard کر دیے جاتے ہیں۔ |
| `split_input_duration_threshold` |  | number | no | `30` | 1 – 60 | Scene-splitting trigger، سیکنڈ میں duration کے طور پر؛ صرف threshold سے لمبی ویڈیوز split ہوتی ہیں۔ |
| `debug_dataset` |  | boolean | no | `false` |  | مکمل training شروع کرنے سے پہلے preprocessing چیک کرنے کے لیے archive download کرنے کا option۔ enabled ہونے پر trainer processed dataset package کرتا ہے تاکہ آپ captions، reference تصاویر، ویڈیوز اور تصاویر کی درستگی دستی طور پر جانچ سکیں۔ |
| `strict_dataset` |  | boolean | no | `false` |  | Preprocessing کے مسائل کا strict handling جو بصورت دیگر log ہو کر documented fallback سے حل ہوتے۔ enabled ہونے پر blank پرامپٹس کی ضرورت والے captions، missing reference sidecars اور unreadable آڈیو والی ویڈیوز مسترد کی جاتی ہیں، بجائے ان fallbacks کی اجازت دینے کے۔ |

## 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} | trained LoRA weights کے لیے `.safetensors` format میں URL۔ |
| `config_file` | object {url, content_type, file_name, file_size} | Configuration for inference اینڈ پوائنٹ setup۔ |
| `debug_dataset` | object {url, content_type, file_name, file_size} \| null | صرف `debug_dataset` enabled والی درخواستوں کے لیے دستیاب؛ یہ downloadable archive preprocessing کے بعد training data رکھتا ہے۔ |

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