---
title: "Train a custom style (LoRA)"
method: POST
path: "/styles/train"
tags: ["Styles"]
---

# Train a custom style (LoRA)

`POST /styles/train`

Train a custom style (LoRA) with simplified parameters. Uses intelligent defaults based on the training type (Default/Style/Object/Character).

## Headers

- `X-Webhook-URL` string, uri

## Request body

- union
  - object
    - `model` 'flux_dev' | 'flux_schnell' | 'wan' | 'wan22'
    - `type` 'Style' | 'Object' | 'Character' | 'Default'
    - `name` string, required
    - `urls` string[], required
    - `trigger_word` string
    - `learning_rate` number
    - `max_train_steps` integer
    - `batch_size` integer
  - object
    - `model` 'qwen' | 'z-image' | 'k2' | 'k2-large', required — LoRA base model to train. `k2` is Krea 2 Medium and `k2-large` is Krea 2 Large.
    - `type` 'Style' | 'Object' | 'Character'
    - `name` string, required
    - `urls` string[], required
    - `trigger_word` string
    - `max_train_steps` integer

## Response `200`

Training job created successfully. The job will be in a pending state until completed. Use /jobs/{id} to check progress.

- object
  - `job_id` string, uuid, required
  - `status` 'backlogged' | 'queued' | 'scheduled' | 'processing' | 'sampling' | 'intermediate-complete' | 'completed' | 'failed' | 'cancelled', required
  - `created_at` string, date-time, required
  - `completed_at` unknown, required
  - `result` unknown, required
  - `error` object
    - `code` string, required
    - `message` string

## Other responses

- `400` — Invalid request parameters
- `401` — Unauthorized
- `402` — Insufficient credits
- `429` — Maximum number of concurrent jobs reached

## Changes

- **2026-09-05** `27a8a554d4fd` — 1 info
  - the `created_at` response's property pattern was changed from `^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$` to `^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$` for the status `200`

[Change history](https://skmtc.dev/krea/apis/krea-api/changes/styles/train/post.md)

---

[API](https://skmtc.dev/krea/apis/krea-api.md) · [All operations](https://skmtc.dev/krea/apis/krea-api/llms.txt) · [OpenAPI document](https://skmtc.dev/krea/apis/krea-api/revisions/ebf9d95ea4fd?raw)
