curl --request POST \
--url https://geoff.ai/api/v1/training/lora/music \
--header 'Authorization: Bearer <token>' \
--header 'X-Stack-Id: stk_jmqog66ha0mugmro' \
--header 'Content-Type: application/json' \
--data '{
"dataset": "https://files.geoff.ai/datasets/lofi_pack.zip",
"name": "lofi_2026"
}'
{
"data": {
"task_id": "trn_mus_abc123",
"name": "lofi_2026",
"status": "queued"
},
"trace_id": "04ede0ab069fb1ba8be5156a24b1e081"
}
LoRA Training
Train Music LoRA
Train a LoRA adapter on a music dataset to capture a genre, instrumentation, or production treatment.
POST
/
v1
/
training
/
lora
/
music
curl --request POST \
--url https://geoff.ai/api/v1/training/lora/music \
--header 'Authorization: Bearer <token>' \
--header 'X-Stack-Id: stk_jmqog66ha0mugmro' \
--header 'Content-Type: application/json' \
--data '{
"dataset": "https://files.geoff.ai/datasets/lofi_pack.zip",
"name": "lofi_2026"
}'
{
"data": {
"task_id": "trn_mus_abc123",
"name": "lofi_2026",
"status": "queued"
},
"trace_id": "04ede0ab069fb1ba8be5156a24b1e081"
}
Train a LoRA adapter on a corpus of reference tracks. Captures
genre conventions, instrumentation choices, or production
characteristics that the base music model doesn’t expose as a
prompt-able style.
Authorization
string
required
Bearer token.
Bearer API_key.Request Body
string
required
Reference to the training dataset. Accepts either:
- A URL to a zip archive of reference tracks (mp3 / wav)
- A file id returned from file upload
string
required
Stable snake-case identifier for the trained adapter. Passed as
lora_name on music generation calls.curl --request POST \
--url https://geoff.ai/api/v1/training/lora/music \
--header 'Authorization: Bearer <token>' \
--header 'X-Stack-Id: stk_jmqog66ha0mugmro' \
--header 'Content-Type: application/json' \
--data '{
"dataset": "https://files.geoff.ai/datasets/lofi_pack.zip",
"name": "lofi_2026"
}'
{
"data": {
"task_id": "trn_mus_abc123",
"name": "lofi_2026",
"status": "queued"
},
"trace_id": "04ede0ab069fb1ba8be5156a24b1e081"
}
Tips
- Dataset size: 10–25 tracks for genre adapters; smaller curated sets often outperform large noisy ones.
- Length: 30–120 second clips are the sweet spot. Full songs are automatically segmented.
- Vocals vs instrumental: if the goal is the instrumentation
treatment, pre-process the dataset with
voice isolate and use the
return_instrumentalflag to keep only the no-vocals stems. - Status: poll Training Status.
string
default:"stk_jmqog66ha0mugmro"
required
Supplied automatically by the documentation playground.