---
title: "List serverless endpoint releases"
method: GET
path: "/v2/serverless/{id}/releases"
tags: ["Serverless"]
---

# List serverless endpoint releases

`GET /v2/serverless/{id}/releases`

Returns the endpoint's release history (newest first) plus a rollout
summary of how many workers are running the current version. Each
release is a versioned configuration snapshot with a `diff` of what
changed; build-driven releases carry a `buildId` (fetch build detail via
the builds sub-routes).

## Response `200`

OK

- ListEndpointReleasesResponse
  - `endpointVersion` integer, nullable — The endpoint's current configuration version. Null if unknown.
  - `rollout` RolloutSummary, required
    - `inProgress` boolean, required — True while any worker is still running an older version.
    - `workersOnLatest` integer, required — Workers running the endpoint's current version.
    - `workersTotal` integer, required — All workers currently allocated to the endpoint.
    - `percentOnLatest` integer, required — Percentage of workers on the current version (0 when there are no workers).
  - `releases` Release[], required — Release history, newest first.
    - `id` string, required
    - `version` integer, nullable — The endpoint configuration version this release produced.
    - `source` 'GIT_BUILD' | 'MANUAL', required — What produced the release. - `GIT_BUILD` — a completed GitHub build (see `buildId`) - `MANUAL` — a manual configuration change
    - `buildId` string, nullable — The GitHub build that produced this release. Set when `source` is `GIT_BUILD`; null for `MANUAL` releases. Fetch build detail/logs via `/v2/serverless/{id}/builds/{buildId}`.
    - `createdByUserId` string, nullable — ID of the user who created the release.
    - `workerCount` integer, required — Workers currently running this release's version.
    - `createdAt` string, date-time, required
    - `diff` ReleaseDiffEntry[], required — Configuration fields that changed in this release.
      - `field` string, required — The changed configuration field. Top-level (e.g. `gpuCount`, `locations`) or template-scoped (e.g. `template.imageName`, `template.env`).
      - `old` unknown, required
      - `new` unknown, required

## Other responses

- `401` — Authentication failed because the bearer token is missing, malformed, expired, or invalid.
- `403` — The bearer token is valid, but it does not grant access to the requested resource or action.
- `404` — The requested resource was not found or is not accessible to the caller.
- `429` — The caller exceeded its per-user rate limit. The response identifies the window that was exceeded and how long to wait. The `RateLimit` and `RateLimit-Policy` headers (per the IETF ratelimit-headers draft) also accompany successful responses, so clients can track quota before a 429.
- `default` — Error

---

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