# 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.ru/v1/run/krea-2-trainer`
- Quote: `POST https://api.doitong.ru/v1/quote/krea-2-trainer`
- Docs page: https://doitong.com/ko/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.ru/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입니다. 이미지에 캡션 파일도 없고 비어 있지 않은 `trigger_phrase`도 없으면 요청은 422로 실패합니다. `trigger_phrase`가 대체 항목을 제공하면 캡션은 선택 사항이며, 그렇지 않으면 일치하는 파일명 줄기를 사용합니다. 예를 들어 001.jpg는 001.txt와 짝을 이룹니다. |
| `trigger_phrase` |  | string | no | `` |  | `auto_captioning`이 Off이고 캡션 파일이 없는 이미지가 있으면 필요한 DreamBooth 스타일 인스턴스 구문입니다. 누락된 .txt 파일의 캡션을 제공하고 기본 검증 프롬프트의 시작 텍스트로 사용됩니다. |
| `auto_captioning` |  | enum (string) | no | `Off` | `Off`, `Object/Character`, `Style`, `Custom` | 선택적 캡션 모드입니다. Object/Character, Style 및 Custom은 google/gemma-4-31B-it과 함께 dataset-captioner를 호출하고, Off는 각 이미지에 일치하는 파일명 앞부분의 .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.7배 빠른 학습, 낮은 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.ru/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.ru/v1/requests/REQUEST_ID?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY"
```

### JavaScript

```javascript
const API = "https://api.doitong.ru/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.ru/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.ru/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.ru/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t",
    "cancel": "https://api.doitong.ru/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`이 활성화되었을 때 반환되는 시스템 프롬프트입니다. 자동으로 캡션이 지정된 학습 데이터와 동일한 캡션 규칙을 사용하여 추론 프롬프트를 작성하거나 다듬는 데 도움이 됩니다. |
| `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.ru/v1/models/krea-2-trainer
