# Krea 2 Trainer API

> Apmāca pielāgotu Krea 2 LoRA no attēlu zip arhīva ar neobligātu automātisku parakstu ģenerēšanu

Precizē LoRA modeli ar .zip attēlu arhīvu laukā `images_data_url`, pēc izvēles izmantojot tāda paša nosaukuma .txt parakstus un `trigger_phrase`. `auto_captioning` režīmi ir Off, Object/Character, Style un Custom. `steps` ir no 50 līdz 10000 (noklusējums 100), bet `resolution` — 768 vai 1024. Izvada LoRA svarus un konfigurācijas failu.

- 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/lv/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 |  |  | URL apmācības attēlu .zip failam, kurā ir PNG/JPG/JPEG/WebP faili; pieprasījums neizdodas ar 422, ja kādam attēlam nav ne paraksta faila, ne neaizpildīta `trigger_phrase`. Paraksti nav obligāti, ja `trigger_phrase` nodrošina rezerves variantu; pretējā gadījumā izmantojiet atbilstošus failu nosaukumu celmus: ROOT.EXT atbilst ROOT.txt, piemēram, 001.jpg — 001.txt. |
| `trigger_phrase` |  | string | no | `` |  | Nepieciešama DreamBooth stila instances frāze, ja `auto_captioning` ir Off un kādam attēlam trūkst paraksta faila. Tā nodrošina parakstus, ja .txt faili trūkst, un sākuma tekstu noklusējuma validācijas uzvednēm. |
| `auto_captioning` |  | enum (string) | no | `Off` | `Off`, `Object/Character`, `Style`, `Custom` | Neobligāts parakstu režīms: Object/Character, Style un Custom izsauc dataset-captioner ar google/gemma-4-31B-it, savukārt Off saglabā esošo prasību, lai katram attēlam būtu atbilstošs .txt paraksts ar tādu pašu pamatnosaukumu vai kā rezerves variants tiktu izmantots trigger_phrase. Ģenerētajiem parakstiem trigger_phrase tiek ievietots parakstu uzvednē un normalizēts iegūtajos blakusfailos atbilstoši atlasītajai LoRA parakstu konvencijai. |
| `steps` |  | integer | no | `100` | 50 – 10,000 | LoRA apmācības soļu skaits. |
| `learning_rate` |  | number | no | `0.0005` | 0.000001 – 0.01 | LoRA B koeficienta mācīšanās ātrums, kas tiek piemērots arī A, ja `lora_a_lr_multiplier=1`; muon režīmā tas apzīmē AdamW ekvivalentu ātrumu, kas mērogots ar match_rms_adamw. Konstanta grafika gadījumā Krea iesaka diapazonu 3e-4–7e-4. |
| `resolution` |  | enum (integer) | no | `768` | `768`, `1024` | Mācīšanās izšķirtspēja: 1024 nodrošina maksimālu smalko detaļu līmeni, bet 768 piedāvā aptuveni 1.7x ātrāku mācīšanos, mazāku VRAM lietojumu un gandrīz identisku stila kvalitāti. Attēli tiek mērogoti, lai aizpildītu mērķa kvadrātu, un pēc tam apgriezti centrā. |
| `debug_dataset` |  | boolean | no | `false` |  | Datu kopas lejupielādes opcija, kas atklāj tieši to, kas tika izmantots mācīšanai, pēc parakstu papildināšanas vai automātiskas parakstu ģenerēšanas iesaiņojot to arhīvā. |

## 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} | Apmācīto Krea-2 LoRA svaru lejupielādes URL safetensors formātā. |
| `config_file` | object {url, content_type, file_name, file_size} | Saite uz JSON failu, kurā ietverta mācīšanās/LoRA konfigurācija. |
| `prompt_enhancement_system_prompt` | string \| null | Sistēmas uzvedne, kas tiek atgriezta ar iespējotu `auto_captioning`, lai palīdzētu rakstīt vai pilnveidot secināšanas uzvednes, izmantojot tādu pašu parakstu konvenciju kā automātiski parakstītajiem mācīšanās datiem. |
| `debug_dataset` | object {url, content_type, file_name, file_size} \| null | Mācīšanās datu lejupielāde, kas tiek nodrošināta, ja ir iespējots `debug_dataset`: arhīvs ar sagatavoto datu kopu un tās automātiski ģenerētajiem parakstiem. |

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