---
title: "Get the preview status of one fine-tuned version"
method: GET
path: "/projects/{project_id}/preview-deployments/{training_job_id}"
tags: ["preview-deployments"]
---

# Get the preview status of one fine-tuned version

`GET /projects/{project_id}/preview-deployments/{training_job_id}`

Report whether one exact version can answer test requests right now.

Args:
    project_id: Project the version belongs to.
    training_job_id: The exact fine-tuned version.
    auth: Authenticated caller.

Returns:
    The version's state, the caller's authority over it, and a poll hint.

## Path parameters

- `project_id` string, uuid, required
- `training_job_id` string, uuid, required

## Response `200`

Successful Response

- PreviewDeploymentResponse — What a caller can currently do with one exact fine-tuned version.
  - `training_job_id` string, required — The exact version this status describes.
  - `state` 'ready' | 'warming' | 'provisioning' | 'inactive' | 'failed' | 'unavailable', required — What a caller can do with an exact fine-tuned version right now.
  - `detail` string, required — Customer-safe explanation of the state.
  - `can_send_requests` boolean, required — Whether an inference request against this version will be answered now. True for ready and warming -- a warming version is routable and the request itself brings the replica up, so the pane should send rather than wait for a state that only a request can advance.
  - `reason` 'project_mismatch' | 'job_deleted' | 'job_incomplete' | 'job_failed' | 'job_cancelled' | 'missing_artifact' | 'provider_incompatible' — Why a training job may not be promoted to serve traffic.
  - `retry_after_seconds` integer, nullable — How long to wait before polling again; set only for transient states.
  - `can_activate` boolean, required — Whether this caller may trigger provisioning. False for members without the deploy permission, so the UI shows a truthful unavailable state instead of a button the server would reject.
  - `attempt_count` integer, required — How many activations have been requested for this version.
  - `retry_exhausted` boolean — Whether repeated failures have used up this version's retry budget. When true the state is failed but activation will be refused, so the UI should stop offering a retry and point at the version instead.

## Other responses

- `403` — The caller may not access this project.
- `404` — The project or version does not exist.
- `422` — Validation Error

---

[API](https://skmtc.net/pioneer/apis/brain-api.md) · [All operations](https://skmtc.net/pioneer/apis/brain-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/pioneer/brain-api/revisions/b92f75fd3b61/schema)
