# MiniMax H3 First Last Frame LoRA Trainer API

> LoRA treneris video ģenerēšanai ar pirmo kadru, pēdējo kadru vai abiem atslēgkadriem

Trenē LoRA no video klipu ZIP arhīva laukā `training_data_url`, lai ģenerēšana varētu sākties ar vienu attēlu un beigties ar citu. Pirmā, pēdējā un abu kadru nosacījumu varbūtības tiek iestatītas atsevišķi. Regulējamie iestatījumi ietver `rank` (8 līdz 128), `number_of_steps` (1 līdz 15000), `learning_rate`, `number_of_frames` (22 līdz 124) un `aspect_ratio`. Atgriež LoRA svarus un konfigurācijas failu.

- Model id: `minimax/h3/flf2v/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/flf2v/trainer`
- Quote: `POST https://api.doitong.com/v1/quote/minimax/h3/flf2v/trainer`
- Docs page: https://doitong.com/lv/developers/models/minimax/h3/flf2v/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/flf2v/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, kurā ir apmācības video .mp4, .mov, .avi vai .mkv formātā; ieteicami vismaz 10 klipi, un priekšroka dodama lielākām kolekcijām. Attēli nevar būt apmācības multivide: tikai attēlu dat kopas un arhīvi, kuros apmācības attēli jaukti ar video, tiek noraidīti, lai gan daži galapunkti atļauj attēlus kā nosacījuma blakusresursus. Klipiem var pievienot neobligātus aprakstu failus, katram teksta failam izmantojot tāda paša pamata nosaukumu kā video failam. |
| `rank` |  | enum (integer) | no | `32` | `8`, `16`, `32`, `64`, `128` | LoRA adaptācijas rangs: lielāka vērtība palielina kapacitāti, taču arī atmiņas patēriņu. |
| `number_of_steps` |  | integer | no | `2000` | 1 – 15,000 | Kopējais apmācības soļu skaits. |
| `learning_rate` |  | number | no | `0.0002` | 0.000001 – 1 | Optimizācijas mācīšanās ātrums, kas līdzsvaro iespējamo apmācības paātrinājumu ar pārmācīšanās risku, to palielinot. |
| `number_of_frames` |  | integer | no | `73` | 22 – 124 | Kadru skaits katram apmācības paraugam; dalot to ar 17, atlikumam jābūt 5. Piemēri: 22, 39, 56, 73, 90, 107 un 124. |
| `frame_rate` |  | integer | no | `24` | 8 – 60 | Mērķa video kadru ātrums, mērīts kadros sekundē. |
| `resolution` |  | enum (string) | no | `medium` | `low`, `medium`, `high` | Apmācības izšķirtspēja. Lielāka izšķirtspēja palielina atmiņas prasības. |
| `aspect_ratio` |  | enum (string) | no | `16:9` | `21:9`, `16:9`, `4:3`, `1:1`, `3:4`, `9:16` | Izvēlieties apmācības malu attiecību no tās pašas kopas, kas pieejama, izmantojot MiniMax H3 API. |
| `trigger_phrase` |  | string | no | `` |  | LoRA stila aktivizēšanas frāze, kas apmācības laikā tiek ievietota aprakstu sākumā. |
| `first_frame_conditioning_p` |  | number | no | `0.2` | 0 – 1 | Varbūtība, ka nosacīšanai tiek izmantots tikai sākuma kadrs. |
| `auto_scale_input` |  | boolean | no | `false` |  | Vai mērķa fps un kadru skaits tiek saskaņoti, izmantojot automātisku video mērogošanu; true iespējo šo pielāgošanu. |
| `split_input_into_scenes` |  | boolean | no | `true` |  | Ainu sadalīšana video, kas pārsniedz ilguma slieksni; iespējota, ja vērtība ir true. |
| `split_input_duration_threshold` |  | number | no | `30` | 1 – 60 | Ainu sadalīšanas slieksnis, kas izteikts kā ilgums sekundēs: tiek sadalīti tikai video, kas ir garāki par slieksni. |
| `debug_dataset` |  | boolean | no | `false` |  | Priekšapstrādes pārbaudes režīms video, attēlu un aprakstu pārbaudei pirms pilna apmācības cikla. Ja iespējots, apmācības rīks atgriež apstrādāto apmācības datu kopu lejupielādējamā arhīvā manuālai pārbaudei. |
| `strict_dataset` |  | boolean | no | `false` |  | Stingra pirmapstrādes problēmu apstrāde, kas citādi tiktu reģistrētas un atrisinātas, izmantojot dokumentētos atkāpšanās risinājumus. Iespējojot šo opciju, tiek noraidīti apraksti, kuriem nepieciešamas tukšas uzvednes, trūkstoši blakusresursu atslēgkadri un video ar nenolasāmu audio, nevis attiecīgi aizstāta uzvedne ar tukšu uzvedni, klipa kadru vai klusumu. |
| `last_frame_conditioning_p` |  | number | no | `0.2` | 0 – 1 | Varbūtība, ka nosacīšanai tiek izmantots tikai beigu kadrs. |
| `first_last_frame_conditioning_p` |  | number | no | `0.4` | 0 – 1 | Apmācības režīma izvēles varbūtība: atlikusī daļa tiek piešķirta nenosacītai teksta pārveidei video un audio, bet norādītā daļa iespējo pirmā–pēdējā atslēgkadra režīmu API, kopīgi izmantojot sākuma un beigu kadrus nosacīšanai. |

## 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/flf2v/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/flf2v/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/flf2v/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/flf2v/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/flf2v/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} | Apmācīto LoRA svaru URL .safetensors formātā. |
| `config_file` | object {url, content_type, file_name, file_size} | Konfigurācija inferenču galapunkta iestatīšanai. |
| `debug_dataset` | object {url, content_type, file_name, file_size} \| null | Pieejams tikai pieprasījumiem ar iespējotu `debug_dataset`; šo lejupielādējamo arhīvu veido apmācības dati pēc pirmapstrādes. |

## Related models

- [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 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/flf2v/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/flf2v/trainer
- Errors: https://doitong.com/developers/docs/errors
- Model details as JSON: https://api.doitong.com/v1/models/minimax/h3/flf2v/trainer
