# Krea 2 Trainer API

> Қосымша автоматты субтитрлеуі бар кескіндер zip архивінен теңшелетін Krea 2 LoRA моделін үйретеді

`images_data_url` мекенжайындағы кескіндердің .zip архивінде LoRA моделін қосымша аттас .txt субтитрлерімен және `trigger_phrase` мәнімен нақтылайды. `auto_captioning` режимдері: Off, Object/Character, Style және Custom. `steps` 50-10000 аралығында (әдепкі 100), `resolution` 768 немесе 1024 болады. LoRA салмақтары мен конфигурация файлын шығарады.

- Model id: `krea-2-trainer`
- Made by: Krea
- Category: Training
- Output: file
- Price per run: from $0.30 / run (cheapest run $0.30 (300 API credits))
- Run: `POST https://api.doitong.com/v1/run/krea-2-trainer`
- Quote: `POST https://api.doitong.com/v1/quote/krea-2-trainer`
- Docs page: https://doitong.com/kk/developers/models/krea-2-trainer

## Pricing

Price: **from $0.30 / run** (the lowest tier; the quote prices your exact input). Price per run: the input files are measured before the run (length, resolution, frame rate). The quote measures the same files and is exactly what the run charges.

The full example input below costs $0.30 = 300 API credits (1 run × $0.30).

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/krea-2-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 |
|---|---|---|---|---|---|---|
| `images_data_url` |  | string | yes |  |  | PNG/JPG/JPEG/WebP файлдары бар оқыту кескіндерінің .zip файлына арналған URL; кез келген кескінде caption файлы да, бос емес `trigger_phrase` мәні де болмаса, сұрау 422 қатесімен сәтсіз аяқталады. `trigger_phrase` қосалқы мәнді берсе, caption файлдары міндетті емес, әйтпесе сәйкес файл атауларының түбірлері пайдаланылады: ROOT.EXT жұбы ROOT.txt файлымен сәйкеседі, мысалы 001.jpg және 001.txt. |
| `trigger_phrase` |  | string | no | `` |  | `auto_captioning` мәні Off болғанда және кез келген кескінде caption файлы болмаған кезде қажет DreamBooth стиліндегі даналық фраза. Ол .txt файлдары жоқ кескіндерге caption береді және әдепкі тексеру нұсқауларының бастапқы мәтінін ұсынады. |
| `auto_captioning` |  | enum (string) | no | `Off` | `Off`, `Object/Character`, `Style`, `Custom` | Қосымша сипаттама жазу режимі: Object/Character, Style және Custom режимдері google/gemma-4-31B-it көмегімен dataset-captioner іске қосады, ал Off режимі әр кескінге сәйкес stem-і бар .txt сипаттама файлының болуын немесе қосалқы нұсқа ретінде trigger_phrase пайдалануды талап етеді. Генерацияланған сипаттамалар үшін trigger_phrase сипаттама нұсқауына енгізіледі және таңдалған LoRA сипаттама жазу конвенциясына сәйкес алынған sidecar файлдарында қалыпқа келтіріледі. |
| `steps` |  | integer | no | `100` | 50 – 10,000 | LoRA үйрету қадамдарының саны. |
| `learning_rate` |  | number | no | `0.0005` | 0.000001 – 0.01 | LoRA B-факторының оқыту жылдамдығы, `lora_a_lr_multiplier=1` болса, A факторына да қолданылады; muon кезінде ол match_rms_adamw арқылы масштабталған AdamW баламалы жылдамдығын білдіреді. Тұрақты жоспар үшін Krea 3e-4–7e-4 ауқымын ұсынады. |
| `resolution` |  | enum (integer) | no | `768` | `768`, `1024` | Оқыту ажыратымдылығы: 1024 ең жоғары ұсақ бөлшектерді қамтамасыз етеді, ал 768 шамамен 1.7x жылдамырақ оқытуды, VRAM аз жұмсалуын және стиль сапасының дерлік бірдей болуын береді. Кескіндер мақсатты шаршыны жабатындай масштабталады да, ортасынан қиылады. |
| `debug_dataset` |  | boolean | no | `false` |  | Оқытуда нақты пайдаланылған деректерді көрсететін деректер жиынын жүктеп алу параметрі; сипаттамалар толықтырылғаннан немесе автоматты түрде жасалғаннан кейін архив түрінде беріледі. |

## Example input

Required parameters only:

```json
{
  "images_data_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
}
```

A fuller example:

```json
{
  "images_data_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
}
```

## 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/krea-2-trainer?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "images_data_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
  }'

# 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/krea-2-trainer?wait=20", {
  method: "POST",
  headers,
  body: JSON.stringify({
    "images_data_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
  }),
});
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 = {
    "images_data_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg",
}

# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/krea-2-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": "krea-2-trainer",
      "input": {
        "images_data_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
      },
      "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": "krea-2-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": 300,
    "usd": "0.30",
    "charged": 300,
    "refunded": 0
  },
  "input": {
    "images_data_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
  },
  "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
    },
    "prompt_enhancement_system_prompt": "string",
    "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} | Оқытылған Krea-2 LoRA салмақтарын safetensors пішімінде жүктеп алу URL мекенжайы. |
| `config_file` | object {url, content_type, file_name, file_size} | Оқыту/LoRA конфигурациясы бар JSON файлына сілтеме. |
| `prompt_enhancement_system_prompt` | string \| null | `auto_captioning` қосулы кезде қайтарылатын жүйелік нұсқау; ол автоматты түрде сипатталған оқыту деректеріндегідей сипаттама конвенциясын пайдаланып, inference нұсқауларын жазуға немесе нақтылауға көмектеседі. |
| `debug_dataset` | object {url, content_type, file_name, file_size} \| null | `debug_dataset` қосулы кезде берілетін оқыту деректерін жүктеп алу: дайындалған деректер жиыны мен автоматты түрде жасалған сипаттамалары бар архив. |

## Related models

- [Krea 2 Text to Image Turbo LoRA](https://doitong.com/developers/models/krea-2/turbo/lora.md) (`krea-2/turbo/lora`): $0.01 / megapixel
- [Krea 2 Turbo](https://doitong.com/developers/models/krea-2/turbo.md) (`krea-2/turbo`): $0.008 / megapixel
- [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
- [FLUX 2 Trainer V2](https://doitong.com/developers/models/flux-2-trainer-v2.md) (`flux-2-trainer-v2`): $0.0064 / step

## Links

- HTML page: https://doitong.com/developers/models/krea-2-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=krea-2-trainer
- Errors: https://doitong.com/developers/docs/errors
- Model details as JSON: https://api.doitong.com/v1/models/krea-2-trainer
