# Krea 2 Trainer API

> Ka whakangungu i tētahi LoRA Krea 2 ritenga mai i tētahi zip whakaahua, me te tapanga-aunoa kōwhiringa

Ka whakatikatika matatau i tētahi LoRA mā tētahi .zip atahanga i `images_data_url`, me ngā tapanga .txt ingoa ōrite me tētahi `trigger_phrase` hei kōwhiringa. Ko ngā aratau `auto_captioning` he Off, Object/Character, Style me Custom. Ko te `steps` he 50 ki te 10000 (taunoa 100), ko te `resolution` he 768, he 1024 rānei. Ka whakaputa i ngā taumaha LoRA me tētahi kōnae whirihoranga.

- 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/mi/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 mō tētahi .zip atahanga whakangungu kei roto ngā kōnae PNG/JPG/JPEG/WebP; ka rahua te tono me te 422 mēnā he atahanga kāore ōna kōnae tapanga, kāore hoki he `trigger_phrase` whai ihirangi. He kōwhiringa ngā tapanga ina tukuna e `trigger_phrase` te kupu whakakapi; ki te kore, whakamahia ngā pūtake ingoa kōnae ōrite: ka takirua a ROOT.EXT ki ROOT.txt, hei tauira ko 001.jpg ki 001.txt. |
| `trigger_phrase` |  | string | no | `` |  | Kīanga tūemi kāhua DreamBooth e hiahiatia ana mēnā he Off a `auto_captioning`, ā, he atahanga kāore ōna kōnae tapanga. Ka whakarato tapanga ina ngaro ngā kōnae .txt, ka whakarato hoki i te kuputuhi tīmatanga mō ngā tohutohu whakamana taunoa. |
| `auto_captioning` |  | enum (string) | no | `Off` | `Off`, `Object/Character`, `Style`, `Custom` | Aratau tapanga kōwhiringa: Mātauranga/Tangata, Kāhua, me Ritenga ka whakamahi i te dataset-captioner me google/gemma-4-31B-it, engari mā Off e pupuri te whakaritenga o mua kia whai tapanga .txt tōrite te pūtake o ia atahanga, kia whakamahia rānei a trigger_phrase hei whiringa whakakapi. Mō ngā tapanga whakaputaina, ka uru a trigger_phrase ki te tohutohu tapanga, ā, ka whakaritea ki ngā sidecar ka puta, e ai ki te tikanga tapanga LoRA kua tīpakohia. |
| `steps` |  | integer | no | `100` | 50 – 10,000 | Tatau hīkoi mō te whakangungu LoRA. |
| `learning_rate` |  | number | no | `0.0005` | 0.000001 – 0.01 | Te tere ako B-factor o LoRA, ka whakamahia hoki ki A ina `lora_a_lr_multiplier=1`; i raro i te muon, ko te tere rite ki AdamW kua whakarahia e match_rms_adamw. Mō te wātaka pūmau, e taunaki ana a Krea i te awhe 3e-4–7e-4. |
| `resolution` |  | enum (integer) | no | `768` | `768`, `1024` | Taumira whakangungu; ko 1024 te mea pai mō te taipitopito tino nui, ko 768 he 1.7x tere ake, he iti ake te whakamahinga VRAM, ā, he ōrite tata te kounga kāhua. Ka whakarahi ngā atahanga kia kapi ai te tapawhā whāia, kātahi ka poroa ki waenganui. |
| `debug_dataset` |  | boolean | no | `false` |  | Kōwhiringa tikiake huingararaunga e whakaatu ana i ngā mea i whakamahia e te whakangungu, ka pōkai hei pūranga i muri i te whakakī tapanga, i te whakaputa tapanga aunoa rānei. |

## 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} | URL tikiake mō ngā taumaha LoRA Krea-2 kua whakangungua, i te hōputu safetensors. |
| `config_file` | object {url, content_type, file_name, file_size} | Hononga ki tētahi kōnae JSON kei roto te whirihoranga whakangungu/LoRA. |
| `prompt_enhancement_system_prompt` | string \| null | Tohutohu pūnaha ka whakahokia ina whakahohea te `auto_captioning`, hei āwhina ki te tuhi, ki te whakapai rānei i ngā tohutohu inference mā te tikanga tapanga kotahi ki ngā raraunga whakangungu kua tapangatia aunoatia. |
| `debug_dataset` | object {url, content_type, file_name, file_size} \| null | Tikiake raraunga whakangungu ina whakahohea a `debug_dataset`: he pūranga kei roto te huingararaunga kua whakaritea me ōna tapanga i whakaputaina aunoatia. |

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