Skip to content

Lora Training Start

POST
/api/lora-training/start
curl --request POST \
--url https://example.com/api/lora-training/start \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "job_name": "mycharacter_flux2_v1", "trigger_word": "mycharacter", "base_config": "flux2_character", "dataset": "mycharacter_dataset_v1", "model": "flux2_dev", "model_name_or_path": "black-forest-labs/FLUX.2-dev", "lora_rank": 1, "lora_alpha": 1, "steps": 1, "learning_rate": 1, "batch_size": 1, "optimizer": "example", "resolution": [ 1 ], "caption_dropout_rate": 1, "cache_text_embeddings": true, "low_vram": true, "save_every": 1, "sample_every": 1, "sample_prompts": [ "example" ], "sample_width": 1, "sample_height": 1, "sample_steps": 1, "sample_guidance_scale": 1, "sample_seed": 1 }'

Build the training config locally, then enqueue and start via ai-toolkit UI API.

Media typeapplication/json
LoraTrainingStartRequest

A training run. Only the first block is needed.

The recipe (rank, learning rate, resolution, steps, previews) comes from the template named by base_config, taken from that model’s sources. Every field under “Overrides” defaults to the template’s value; set one only to deliberately depart from it.

object
job_name
required
Job Name
string
>= 1 characters /^[a-zA-Z0-9_-]+$/
trigger_word
required
Trigger Word
string
>= 1 characters
base_config
Base Config

Training template name; resolves to _template.yaml in the training dir (shipped: flux2_character, sdxl_character)

string
default: flux2_character
dataset
required
Dataset

Dataset folder name inside the trainer’s DATASETS_FOLDER (see GET /api/lora-training/trainer)

string
>= 1 characters
model
Model

Base model label, stored with the job

string
default: flux2_dev
model_name_or_path
Model Name Or Path

Base checkpoint: a Hugging Face repo id, or for SDXL a single .safetensors path on the trainer

string
default: black-forest-labs/FLUX.2-dev
lora_rank
Any of:
integer
>= 1 <= 256
lora_alpha
Any of:
integer
>= 1 <= 256
steps
Any of:
integer
>= 1
learning_rate
Any of:
number
> 0
batch_size
Any of:
integer
>= 1
optimizer
Any of:
string
resolution
Any of:
Array<integer>
caption_dropout_rate
Any of:
number
<= 1
cache_text_embeddings
Any of:
boolean
low_vram
Any of:
boolean
save_every
Any of:
integer
>= 1
sample_every
Any of:
integer
>= 1
sample_prompts
Any of:
Array<string>
sample_width
Any of:
integer
>= 64
sample_height
Any of:
integer
>= 64
sample_steps
Any of:
integer
>= 1
sample_guidance_scale
Any of:
number
sample_seed
Any of:
integer

Successful Response

Media typeapplication/json
LoraTrainingStartResponse
object
ok
required
Ok
boolean
job_name
required
Job Name
string
status
required
Status
string
config_path
required
Config Path
string
output_dir
required
Output Dir
string
sample_prompts
Sample Prompts

The preview prompts this run renders

Array<string>
error
Any of:
string
Examplegenerated
{
"ok": true,
"job_name": "example",
"status": "example",
"config_path": "example",
"output_dir": "example",
"sample_prompts": [
"example"
],
"error": "example"
}

Validation Error

Media typeapplication/json
HTTPValidationError
object
detail
Detail
Array<object>
ValidationError
object
loc
required
Location
Array
msg
required
Message
string
type
required
Error Type
string
Examplegenerated
{
"detail": [
{
"loc": [
"example"
],
"msg": "example",
"type": "example"
}
]
}