Skip to main content
POST
Start a family

Authorizations

Authorization
string
header
required

Create an API key in the console.

Headers

idempotency-key
string | null

Reuse the same key and body after a lost response. A replay returns the job that key queued, with Idempotency-Replayed: true. A changed body conflicts.

Body

application/json

A new family's first fine-tune, from a base or one of your models.

dataset_id
string
required
Pattern: ^ds_[a-f0-9]{24}$
family
string
required

The new family's name: lowercase letters and digits, with single hyphens between them, 2 to 63 characters. A name already taken is refused with family_exists.

Maximum string length: 63
Pattern: ^[a-z](?:-?[a-z0-9]){1,62}$
from
string
default:kettei-core

Where the family starts: a base model that can be fine-tuned, or one of your models as family@N, which it trains from on that model's base. Left out, core.

Required string length: 1 - 140
method
enum<string>
default:sft
Available options:
sft,
reward
hyperparameters
Hyperparameters · object
dataset_version
integer | null

The version of the dataset to train on, its newest when left out. The family trains on every training row of that version, and continues from it.

Required range: x >= 1
max_price_usd
string | null

The most you agree to pay for this job, in USD, such as the price you were shown. It is a decimal string, such as "2.500000000", never a JSON number, so no precision is lost: a number is refused with invalid_request, naming this field. If it costs more when it is admitted, it is refused with price_changed and nothing is held.

Pattern: ^\d{1,9}(\.\d{1,9})?$

Response

Successful Response

id
string
required
dataset_id
string
required
model
string
required
method
enum<string>
required
Available options:
sft,
reward
hyperparameters
ResolvedHyperparameters · object
required

What a job trains with, as its owner chose or the defaults gave it. The trainer's own settings stay on the server.

family
string | null
required

The family the job adds a model to.

family_deleted
boolean
required

True once you deleted that family. The job and its charge stay.

parent
string | null
required

The id of the model it trains from, or null from a base.

dataset_version
integer
required

The version of its dataset it trains on.

status
enum<string>
required
Available options:
queued,
running,
cancelling,
succeeded,
failed,
cancelled
outcome
enum<string> | null
required

How it ended for its family: its model joined the family with the next number, or failed its gate and is not kept for you, or the run failed or was cancelled, or a rollback discarded the model that joined. Only a failed run or a cancellation is free and leaves the data for another try. Null while it runs.

Available options:
joined,
gate_failed,
failed,
cancelled,
rolled_back
created_at
number
required
updated_at
number
required
output_model
string | null
required
metrics
Metrics · object | null
required

Evaluation groups and the gate, when complete.

error
required
progress
Progress · object | null
required
limits
Limits · object
required

max_questions: the most decisions a row of it may ask.

split
Split · object
required

train_rows and validation_rows, and trained_tokens: the training tokens the job trains, each decision of a row with the row's whole text, tokenized as input tokens are (an outcome at least 8, a row of n decisions at least 24 × n for each), each time a step takes the row. A priced fine-tune's fee is fine_tune_million_tokens_usd for them, at least fine_tune_minimum_usd.

lineage
Lineage · object | null
required
price_usd
string
required

The fee held for this job, as exact USD.

charge
enum<string>
required

What the fee is doing: held while the job runs, charged if it succeeds, released if it fails or is cancelled.

Available options:
free,
reserved,
charged,
released
dataset_evaluation
Evaluation · object | null
curve
CurvePoint · object[] | null

The training loss over steps, at most 300 points, each the means of a run of consecutive steps. Null until the job succeeds, or when its trainer kept none. Lists of jobs leave it out.

rows_deleted
boolean

True once a dataset whose rows its specification held was deleted: the job, its model and its metrics stay, but its held-out records are gone.