# MiniMax H3 Reference to Video LoRA Trainer API

> آموزش‌دهنده LoRA برای ویدئوی شرطی‌شده با مرجع، با شروع گرم از LoRA قبلی

یک LoRA را روی فایل zip کلیپ‌های ویدئویی سوژه آموزش می‌دهد تا ورودی‌های مرجع تولید ویدئو را هدایت کنند. `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/fa/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 |  |  | URL یک ZIP از ویدیوهای آموزشی سوژه؛ مجموعه‌های فقط تصویری و بایگانی‌های آموزشی ترکیبی تصویر/ویدیو رد می‌شوند، بنابراین تصاویر باید به‌صورت sidecar ارجاع ارائه شوند. موارد اضافی اختیاری نام پایهٔ هر کلیپ را به اشتراک می‌گذارند: شرحی مانند `clip01.txt` و ارجاع‌های مرتب از `ref_1` تا `ref_4` با نام‌های `clip01.ref_1.<ext>` تا `clip01.ref_4.<ext>`؛ بدون sidecarهای ارجاع، یک فریم از کلیپ مرجع خودش را فراهم می‌کند. `<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 | تعیین کنید آموزش با چه تناوبی از شرطی‌سازی تصویر مرجع در برابر آموزش متن‌به‌ویدیو-صوت بدون شرطی‌سازی استفاده کند. هر احتمال باقی‌مانده به هدف بدون شرطی‌سازی اختصاص می‌یابد تا تولید پایدار فقط از پرامپت حفظ شود. |
| `resume_from_lora_url` |  | string \| null | no |  |  | URL آموزش warm-start با یک LoRA در قالب .safetensors که پیش‌تر توسط این آموزشگر ایجاد شده، به‌همراه تعداد number_of_steps گام آموزشی اضافی. چیزی جز وزن‌های آداپتور بازیابی نمی‌شود؛ بهینه‌سازی و زمان‌بندی نرخ یادگیری هر دو از نو آغاز می‌شوند. |
| `auto_scale_input` |  | boolean | no | `false` |  | مشخص می‌کند هدف fps و تعداد فریم از طریق مقیاس‌بندی خودکار ویدیو تطبیق داده شوند یا نه؛ true این تنظیم را فعال می‌کند. |
| `split_input_into_scenes` |  | boolean | no | `true` |  | تقسیم صحنه را برای ویدیوهای طولانی‌تر از آستانهٔ مدت فعال کنید؛ sidecarهای ارجاع کلیپ‌های تقسیم‌شده حذف می‌شوند. |
| `split_input_duration_threshold` |  | number | no | `30` | 1 – 60 | محرک تقسیم صحنه که به‌صورت مدت برحسب ثانیه بیان می‌شود: فقط ویدیوهای طولانی‌تر از آستانه تقسیم می‌شوند. |
| `debug_dataset` |  | boolean | no | `false` |  | گزینهٔ دانلود بایگانی برای بررسی پیش‌پردازش پیش از شروع آموزش کامل. با فعال‌سازی، آموزشگر مجموعه‌دادهٔ پردازش‌شده را بسته‌بندی می‌کند تا بتوانید شرح‌گذاری‌ها، تصاویر مرجع، ویدیوها و تصاویر را به‌صورت دستی بررسی کنید. |
| `strict_dataset` |  | boolean | no | `false` |  | مدیریت سخت‌گیرانهٔ مشکلات پیش‌پردازش که در غیر این صورت ثبت و با fallback مستند حل می‌شوند. فعال‌سازی آن شرح‌گذاری‌های نیازمند پرامپت خالی، sidecarهای ارجاع مفقود و ویدیوهای دارای صوت ناخوانا را رد می‌کند، نه اینکه اجازهٔ استفاده از آن fallbackها را بدهد. |

## 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} | URL وزن‌های آموزش‌دیده LoRA در قالب .safetensors. |
| `config_file` | object {url, content_type, file_name, file_size} | پیکربندی راه‌اندازی نقطه پایانی استنتاج. |
| `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
