# 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 وزن اور ایک config فائل آؤٹ پٹ کرتا ہے۔

- 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/ur/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 |  |  | تربیتی تصاویر پر مشتمل .zip کے لیے URL، جس میں PNG/JPG/JPEG/WebP فائلیں ہوں؛ اگر کسی تصویر میں caption فائل نہ ہو اور غیر خالی `trigger_phrase` بھی نہ ہو تو درخواست 422 کے ساتھ ناکام ہو جاتی ہے۔ جب `trigger_phrase` fallback فراہم کرے تو captions اختیاری ہیں، ورنہ matching filename stems استعمال کریں: ROOT.EXT، ROOT.txt کے ساتھ جوڑا بنتا ہے، مثلاً 001.jpg کے ساتھ 001.txt۔ |
| `trigger_phrase` |  | string | no | `` |  | DreamBooth-style instance phrase، جب `auto_captioning` Off ہو اور کسی تصویر میں caption فائل موجود نہ ہو تو لازمی ہے۔ یہ missing .txt فائلوں کے لیے captions فراہم کرتا ہے اور ڈیفالٹ validation پرامپٹ کے لیے ابتدائی متن فراہم کرتا ہے۔ |
| `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 کیپشننگ کنونشن کے مطابق نتیجے کے سائیڈ کارز میں معمول پر لایا جاتا ہے۔ |
| `steps` |  | integer | no | `100` | 50 – 10,000 | LoRA تربیت کے مراحل کی تعداد۔ |
| `learning_rate` |  | number | no | `0.0005` | 0.000001 – 0.01 | LoRA B-factor کی لرننگ ریٹ، جو `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 weights کے لیے 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
