Skip to main content
POST
POST /v1/training/jobs Starts asynchronous managed training (config job) and returns its job record. You provide a dataset and configuration, and Fastino runs the training loop. For interactive training (interactive job), where your application controls each training step, follow the Decoder Quickstart, which creates an interactive job through POST /v1/training/jobs/create-model or the supported Tinker SDK. This endpoint does not create interactive jobs. After creation, both job types use their canonical IDs with the documented /v1/training/jobs/{job_id} lifecycle operations. config jobs train encoder models that are returned by GET /v1/base-models?supports_training=true and have a compatible config job dispatch route. Decoder base models return 400; train decoders with an interactive job instead. This endpoint is limited to 20 requests per minute per user.

Request

string
required
Your Fastino API key.
string
Client-generated retry key, 1–255 characters; a UUID is recommended. Repeating the same key and body returns the original job. Reusing the key with a different body returns 422.
string
required
Display name for the trained model. Length: 1–100 characters.
string
required
A trainable encoder ID returned by GET /v1/base-models?supports_training=true. The selected training_type must have a compatible dispatch route. Checkpoint UUIDs and decoder base models return 400.
object[]
required
One or more uploaded dataset references. Each item requires name and may include version; omitted versions resolve to the latest version.
string
default:"lora"
lora or full. The selected base model must support the requested type.
number
default:"0.2"
Fraction held out for validation, from 0 to 0.9 in increments of 0.01.
integer
default:"100"
Maximum epoch count, from 1 to 10000; early stopping can finish sooner.
number
Peak learning rate from 1e-8 to 1. Omit it to use the selected model’s training recipe.
integer
Per-device batch size from 1 to 256. Omit it to use the model’s default_training_batch_size from GET /v1/base-models?supports_training=true. A value above the model’s max_training_batch_size, when the catalog publishes one, returns 422. A GLiNER batch that doesn’t fit the training GPU is reduced to the largest that fits; the job’s batch_size shows the size it runs with.
integer
Optional reproducibility seed from 0 through 2147483647. Set provider_name to modal when using it. A seed reduces one source of variation but does not guarantee bit-identical GPU runs.
string
Project UUID. When omitted, Fastino associates the job with the caller’s default project.

Response

Returns 200 with the full training-job record, including a UUID id and initial status. The example below is abbreviated; the actual response includes all fields defined by TrainingJobResponse.
Save the id from this response. You will use it to poll status, retrieve metrics and artifacts, and run inference against the trained model. A malformed body returns 422. A valid but unavailable model, dataset, training type, or provider combination returns a request-specific 4xx error. Creation can return these coded conflicts: The same Idempotency-Key and identical body replay the original job instead of creating another. A changed body with the same key returns 422. The 60-second identical-submission check is separate from idempotency-key replay. After that window, sending the same body without reusing the original key creates and bills another job. If the requested model name is already taken, the next job receives a suffix such as <name>_2. A decoder base model returns 400:
To train a decoder, create an interactive job with POST /v1/training/jobs/create-model and follow the Decoder Quickstart.

Authorization

Requires the Owner, Admin, or Editor team role. Other roles receive 403 Forbidden.