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

---

[API](https://skmtc.net/krea/apis/krea-api.md) · [All operations](https://skmtc.net/krea/apis/krea-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/krea/krea-api/versions/01eead867917/schema)
