---
search:
  tags:
    - Apps
    - GET
seo:
  description: >-
    Requires a personal access token or session cookie and permission to…
    Reference for the GET /api/v1/apps/{appId}/revisions endpoint in the
    Charming API.
sidebar:
  label: List an App’s revisions
  badge: GET
title: List an App’s revisions
type: openapi-operation
---
Requires a personal access token or session cookie and permission to change the App (its owner, a member of its team, or an editor). Lists the App’s History newest first. The first page opens with the desired revision (`current: true`); `live` marks the revision serving visitors; `restorable` marks the revisions POST /api/v1/apps/&#123;appId&#125;/revisions/&#123;revision&#125;/restore accepts. `manifestVersion` names each revision’s contract, so a package revision and a dated module-contract revision are told apart. The list stops at the plan’s History window: `historyLimit` is how many prior revisions the plan keeps. Page with `before` set to `nextBefore`.

`GET /api/v1/apps/{appId}/revisions`

**Responses**

- `200` — A page of the App’s revisions, newest first.
- `400` — Invalid app id, \`before\`, or \`limit\`.
- `401` — Sign-in required.
- `403` — The caller can open the App but cannot change it.
- `404` — App not found, or the caller cannot open it.

Response example, 200:

```json
{
  "ok": true,
  "appId": "28c365d5-df94-4a54-8217-3ce51d068868",
  "currentRevision": 0,
  "activeRevision": 0,
  "historyLimit": 0,
  "items": [
    {
      "revision": 0,
      "createdAt": "2019-08-24T14:15:22Z",
      "manifestVersion": "string",
      "current": true,
      "live": true,
      "restorable": true
    }
  ],
  "nextBefore": 0
}
```

Found a bug or need a feature? [Tell us](/docs/capabilities/feedback) with `submit_feedback` or `POST /app/{id}/feedback`. Your feedback shapes what we build next.
