---
title: "Deploy history"
method: GET
path: "/client/services/{id}/deployments"
tags: ["Apps"]
---

# Deploy history

`GET /client/services/{id}/deployments`

## Request

- Base URL: `https://api.roar-ai.com`
- URL: `https://api.roar-ai.com/client/services/{id}/deployments`
- Auth: HTTP bearer

The last 20 deploys of one app service, newest first. Each carries `timings` — where that deploy spent its time, phase by phase, and how big the image it produced is. `timings` is null for a deploy nothing measured (an older host), which is not the same as one whose phases were all instant.

## Path parameters

- `id` string, uuid, required

## Response `200`

Recent deploys, newest first

- AppDeploymentList
  - `data` AppDeploymentView[], required
    - `id` string, uuid, required
    - `serviceId` string, uuid, required
    - `status` string, required
    - `commitSha` string, nullable, required
    - `errorSummary` string, nullable, required
    - `failureLabel` string, nullable
    - `createdAt` string, date-time, required
    - `finishedAt` string, date-time, nullable, required
    - `trigger` 'first_deploy' | 'push' | 'redeploy' | 'restore' | 'settings' | 'database' | 'autofix' | 'retry' | 'maintenance', nullable
    - `triggeredVia` 'console' | 'api_key' | 'mcp' | 'github' | 'platform', nullable
    - `triggeredBy` string, nullable
    - `branch` string, nullable
    - `commitMessage` string, nullable
    - `restoredFromId` string, uuid, nullable
    - `timings` DeployTimings, nullable, required
      - `v` integer, required: Shape version. 1 today.
      - `phases` object[], required: In the order they happened. A phase that did not run is ABSENT rather than zero — a deploy that reused an existing image did not build in 0ms.
        - `name` 'queue' | 'clone' | 'pull' | 'build' | 'migrate' | 'start' | 'health', required
        - `ms` integer, required: Wall clock for this phase.
      - `imageBytes` integer, nullable, required: Size of the image this deploy runs, or null if unknown.
      - `source` 'built' | 'pulled', required: Whether this deploy built the app or reused the image already built from this commit.

## Other responses

- `404`: No such app service

---

[API](https://skmtc.dev/roar-ai/apis/roar-ai-api.md) · [All operations](https://skmtc.dev/roar-ai/apis/roar-ai-api/llms.txt) · [OpenAPI document](https://skmtc.dev/roar-ai/apis/roar-ai-api/revisions/37e4d0d5a7fe?raw)
