---
title: "List Deployments Route"
method: GET
path: "/api/v1/deploy"
tags: ["deployments"]
---

# List Deployments Route

`GET /api/v1/deploy`

## Query parameters

- `status` 'PENDING' | 'MERGING' | 'DEPLOYING' | 'DEPLOYED' | 'FAILED' — Spanner deployment row status.
- `cursor` string, nullable
- `limit` integer
- `sort` string, nullable
- `order` 'asc' | 'desc'
- `search` string, nullable

## Response `200`

Successful Response

- ListDeploymentsResponse
  - `items` Deployment[], required — Deployments on this page, newest first.
    - `deployment_id` string, required — Deployment row id.
    - `model_slug` string, required — Human-readable slug this deployment serves under.
    - `model_slug_id` string, required — Id of the slug this deployment serves under.
    - `status` 'PENDING' | 'MERGING' | 'DEPLOYING' | 'DEPLOYED' | 'FAILED', required — Spanner deployment row status.
    - `role` 'production' | 'test', required
    - `is_active` boolean, required — True when this deployment currently answers for the slug.
    - `model_id` string, nullable — Merged model backing this deployment; null until the merge lands.
    - `playground_endpoint_url` string, nullable — Per-deployment URL a test checkpoint is reachable at.
    - `base_model_slug` string, nullable — Base model trained from, via models -> checkpoints; null until the merge lands.
    - `checkpoint_step` integer, nullable — Training step of the deployed checkpoint; null until it resolves.
    - `output_speed` 'normal' | 'turbo' — Which GPU tier a deployment runs on: H100 (normal) or B200 (turbo).
    - `expected_concurrency` 'low' | 'medium' | 'high' — Traffic level a deployment is sized for; picks its replica count.
    - `merge_xid` string, nullable — XID of the krun job that is merging the checkpoint weights.
    - `deploy_xid` string, nullable — XID of the krun job that is deploying the merged model.
    - `created_by` string, nullable — Email of the user who requested this deployment.
    - `completed_at` string, date-time, nullable — When the deployment first became DEPLOYED; unlike updated_at, later promote/demote transitions never overwrite this.
    - `created_at` string, date-time, required — When the deployment was requested.
    - `updated_at` string, date-time, nullable — Last lifecycle transition; null until the row first moves.
    - `failure` AsyncFailure
      - `type` string, required — Stable category used for exception mapping.
      - `code` string, required — Stable programmatic reason for the asynchronous failure.
      - `message` string, required — Human-readable explanation for this failure occurrence.
      - `context` object — Machine-readable values specific to this failure code.
  - `next_cursor` string, nullable — Cursor for the next page; null on the last page.
  - `has_more` boolean, required — True when another page is available.

---

[API](https://skmtc.dev/trajectory/apis/trajectory-api.md) · [All operations](https://skmtc.dev/trajectory/apis/trajectory-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/trajectory/trajectory-api/revisions/d930b23b9602/schema)
