> ## 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.

> ## Agent Instructions
> Use https://docs.fastino.ai/llms.txt to discover and navigate pages. Use https://docs.fastino.ai/llms-full.txt when you need the complete documentation corpus. Use https://docs.fastino.ai/openapi.json as the source of truth for customer-facing routes. For GLiDE decision inference, call POST https://api.fastino.ai/v1/systemone with model fastino/GLiDE. Create managed config jobs with POST /v1/training/jobs using base_model. For custom training loops, native JSON clients use the public operations under /v1/training/jobs and /v1/training/usage. Existing Tinker clients use tinker==0.32.0 with TINKER_BASE_URL=https://api.fastino.ai/v1/training/compat/tinker and TINKER_CREDENTIAL_CMD. Compatibility child routes are private and absent from OpenAPI. Auto Train is private access and has no public route; direct interested users to sales@fastino.ai. Do not infer undocumented routes. Read API keys from FASTINO_API_KEY and never embed credentials in code, logs, or reports.

# Deploy an interactive-job checkpoint

> Call POST /v1/training/jobs/{job_id}/checkpoints/sampler_weights/{name}/deploy to serve a sampler checkpoint as a trained model.

`POST /v1/training/jobs/{job_id}/checkpoints/sampler_weights/{name}/deploy`

Serves one of the job's sampler checkpoints as a trained model. Call it with
[`POST /v1/chat/completions`](/api-reference/inference/chat-completions) and
`"model": "<model_id>"`. Deployment is available for supported base models;
other bases return `400`.

The model's `status` is `deploying` until the serving engine has loaded it, then
`deployed`. Deploying the same checkpoint again returns the same model and its
current status, so you can repeat the call to check progress. If an earlier
attempt failed, the repeat call retries it.

## Request

<ParamField header="X-API-Key" type="string" required>
  Your Fastino API key.
</ParamField>

<ParamField path="job_id" type="string" required>
  Interactive job ID.
</ParamField>

<ParamField path="name" type="string" required>
  Name of a sampler checkpoint saved with
  [`save-weights-for-sampler`](/api-reference/training-jobs/interactive/save-weights-for-sampler).
</ParamField>

<ParamField body="model_name" type="string">
  Up to 64 letters, digits, hyphens, and underscores, starting and ending with a
  letter or digit. Derived from the checkpoint name when omitted. The body is
  optional.
</ParamField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST "https://api.fastino.ai/v1/training/jobs/$TRAINING_JOB_ID/checkpoints/sampler_weights/step-000100/deploy" \
    -H "X-API-Key: $FASTINO_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{"model_name": "support-replies-v1"}'
  ```
</RequestExample>

## Response

<ResponseField name="model_id" type="string">
  The trained model's ID. Pass it as `model` for inference.
</ResponseField>

<ResponseField name="job_id" type="string">
  The interactive job that saved the checkpoint.
</ResponseField>

<ResponseField name="checkpoint_id" type="string">
  `sampler_weights/<name>`.
</ResponseField>

<ResponseField name="base_model" type="string">
  The model's base model.
</ResponseField>

<ResponseField name="project_id" type="string | null">
  The job's project, if it has one.
</ResponseField>

<ResponseField name="status" type="string">
  `deploying` or `deployed`.
</ResponseField>

<ResponseExample>
  ```json Response theme={null}
  {
    "model_id": "MODEL_ID",
    "job_id": "SESSION_ID:train:0",
    "checkpoint_id": "sampler_weights/step-000100",
    "base_model": "nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16",
    "project_id": null,
    "status": "deploying"
  }
  ```
</ResponseExample>

| Status | Meaning |
| - | - |
| `400` | Serving isn't available yet for the job's base model, or the checkpoint isn't a PEFT adapter the serving engine accepts. |
| `404` | The job or sampler checkpoint doesn't exist, belongs to another team, or has no files. |
| `409` | Another model already uses `model_name`, or the model served from this checkpoint was deleted. Save the weights under a new name to deploy them again. |
| `422` | `model_name` is invalid or the body has an unknown field. |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.