> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fastino.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Training jobs API

> Create and manage Fastino training jobs from submission through artifact delivery.

The Training Jobs API manages the full lifecycle of a fine-tuning job. All endpoints use the `/v1/training-jobs` route family and require an API key in the `X-API-Key` header.

**API base URL:** `https://api.fastino.ai`

```bash theme={null}
export FASTINO_API_KEY="fast_sk_..."
```

Send the key on every training request:

```http theme={null}
X-API-Key: $FASTINO_API_KEY
```

Use `GET /v1/base-models?supports_training=true` immediately before creating a job. It is the live source of truth for trainable model IDs.

<Warning>
  The legacy `/felix/training-jobs` route family is retired. Use `/v1/training-jobs`
  for new and migrated integrations.
</Warning>

## Status lifecycle

Training-job responses include:

* `status`: persisted job status.
* `normalized_status`: stable status intended for client polling.
* `is_terminal_status`: whether polling can stop.
* `error_message`: failure information when available.
* `is_deployable`: whether the completed artifact passes deployment validation.
* `deployability_reason`: why the artifact is not deployable.

Prefer `normalized_status` and `is_terminal_status` in polling clients.

| Persisted status | Description                                                         |
| ---------------- | ------------------------------------------------------------------- |
| `requested`      | Job was accepted and is awaiting dispatch or provisioning.          |
| `running`        | Training is actively running.                                       |
| `complete`       | Training completed successfully. Artifact preparation may continue. |
| `normalizing`    | Fastino is preparing the trained artifact.                          |
| `artifact_ready` | The trained artifact is ready.                                      |
| `deployed`       | The artifact has been deployed.                                     |
| `paused`         | The job or its pipeline is paused.                                  |
| `errored`        | Training, dispatch, or artifact preparation failed.                 |
| `stopped`        | The job was stopped while preserving existing checkpoints.          |
| `terminated`     | The job was terminated and its checkpoints were deleted.            |

## Endpoints

| Method   | Endpoint                                                                                                          | Purpose                                         |
| -------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------- |
| `POST`   | [`/v1/training-jobs`](/api-reference/training-jobs/create)                                                        | Create a training job                           |
| `GET`    | [`/v1/training-jobs`](/api-reference/training-jobs/list)                                                          | List training jobs                              |
| `GET`    | [`/v1/training-jobs/{job_id}`](/api-reference/training-jobs/get)                                                  | Get status, configuration, and metrics          |
| `PATCH`  | [`/v1/training-jobs/{job_id}`](/api-reference/training-jobs/update-project)                                       | Assign or unassign a project                    |
| `PATCH`  | [`/v1/training-jobs/{job_id}/model-name`](/api-reference/training-jobs/update-model-name)                         | Rename the trained model                        |
| `GET`    | [`/v1/training-jobs/{job_id}/logs`](/api-reference/training-jobs/logs)                                            | Get a snapshot of training logs                 |
| `GET`    | [`/v1/training-jobs/{job_id}/billing`](/api-reference/training-jobs/billing)                                      | Get the billing outcome                         |
| `GET`    | `/v1/training-jobs/{job_id}/deployments`                                                                          | List deployments created from the job           |
| `POST`   | [`/v1/training-jobs/{job_id}/stop`](/api-reference/training-jobs/stop)                                            | Stop a job and preserve checkpoints             |
| `POST`   | [`/v1/training-jobs/{job_id}/terminate`](/api-reference/training-jobs/terminate)                                  | Stop a job and delete checkpoints               |
| `POST`   | `/v1/training-jobs/{job_id}/sync`                                                                                 | Refresh status from the training provider       |
| `POST`   | `/v1/training-jobs/{job_id}/push-to-hub`                                                                          | Push the completed artifact to Hugging Face Hub |
| `GET`    | [`/v1/training-jobs/{job_id}/checkpoints`](/api-reference/training-jobs/checkpoints)                              | List checkpoints                                |
| `POST`   | [`/v1/training-jobs/{job_id}/checkpoints/{checkpoint_id}/deploy`](/api-reference/training-jobs/deploy-checkpoint) | Deploy a checkpoint                             |
| `GET`    | [`/v1/training-jobs/{job_id}/download`](/api-reference/training-jobs/download)                                    | Get a temporary weights download URL            |
| `DELETE` | [`/v1/training-jobs/{job_id}`](/api-reference/training-jobs/delete)                                               | Delete a job and its checkpoints                |
