---
title: "List data checkpoints"
method: GET
path: "/api/apps/{app_id}/entities/versions/checkpoints"
---

# List data checkpoints

`GET /api/apps/{app_id}/entities/versions/checkpoints`

<Info>This API is in beta. Endpoints, fields, and behavior may still change, so avoid depending on it in production.</Info>

Returns the points in the app's entity data history that you can download or restore to, newest first.

Base44 adds one when an entity's records change (at most one every 5 minutes for each entity), when its schema changes, and just before a restore rewrites it. The list covers every entity in the app unless you name some with `entity_name`, and only reaches back as far as `retention_days` from [Get data version history status](/api-reference/get-data-version-history-status).

Results use cursor-based pagination. Pass `next_cursor` from one response as `cursor` on the next request, and keep the same filters.

<Note>This endpoint accepts a personal API key belonging to a user with editor access to the app. A read-only key is refused, and workspace API keys are not accepted.</Note>

## Path parameters

- `app_id` string, required — ID of the app.

## Query parameters

- `entity_name` string[], nullable — Entity to list checkpoints for. Repeat it to list several, as in `?entity_name=Invoice&entity_name=Customer`, up to 200. Leave it out to list every entity's checkpoints. A name the app has no entity for matches nothing rather than failing.
- `cursor` string, nullable — Pagination cursor from previous response.
- `limit` integer — Items per page. Max 200. Defaults to 50, and a larger value is treated as 200.
- `from` string, nullable — Earliest `data_as_of` to include, as an ISO 8601 timestamp such as `2026-06-01T00:00:00Z`. A timestamp with no offset is read as UTC.
- `to` string, nullable — Only include checkpoints whose `data_as_of` is before this moment, as an ISO 8601 timestamp such as `2026-06-08T00:00:00Z`. A timestamp with no offset is read as UTC.

## Response `200`

One page of checkpoints.

- CheckpointListPage — One page of an app's version-history checkpoints, newest first.
  - `items` CheckpointListItem[], required — The page's checkpoints, newest first.
    - `checkpoint_id` string, required — ID of the checkpoint. Pass it to [Download data checkpoint](/api-reference/download-data-checkpoint) or [Restore data to checkpoint](/api-reference/restore-data-to-checkpoint).
    - `entity_name` string, required — Entity the checkpoint belongs to.
    - `data_as_of` string, required — The moment the checkpoint marks, as a UTC timestamp in ISO 8601 format with a `Z` suffix. The checkpoint holds the entity's data as it was just before this moment, so it leaves out the change that created it.
    - `trigger_type` 'crud' | 'schema_change' | 'restore', required — What created the checkpoint. `crud` means a change to a record, `schema_change` means a change to the entity's schema, and `restore` means the backup Base44 saves just before a restore rewrites the entity.
    - `restore_batch_id` string, nullable — ID of the restore that saved this backup, as `batch_id` from [Restore data to checkpoint](/api-reference/restore-data-to-checkpoint). It is `null` on every checkpoint that isn't a restore backup, and on backups saved before Base44 started recording it.
  - `next_cursor` string, nullable — Cursor for fetching the next page. The value is `null` if there are no more pages. A full page always carries one, so the page after it can come back empty.

## Other responses

- `400` — The cursor is malformed or was issued for different filters, `from` or `to` isn't an ISO 8601 timestamp, or you named more than 200 entities.
- `401` — Missing or invalid credentials.
- `403` — You don't have editor access to this app, your API key is read-only, or version history isn't on for the app. Read `state` from [Get data version history status](/api-reference/get-data-version-history-status) to see why.
- `404` — App not found.
- `422` — `limit` isn't a whole number.
- `429` — Rate limit exceeded. The base limit is 70 requests per minute. See [Rate limits](/developers/references/apps-api/get-started/rate-limits) for the multiplier your plan gets.

## Changes

- **2026-09-29** `347e2afcf94a` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/idealspot/apis/base44-app-management-api/changes/api/apps/:app_id/entities/versions/checkpoints/get.md)

---

[API](https://skmtc.dev/idealspot/apis/base44-app-management-api.md) · [All operations](https://skmtc.dev/idealspot/apis/base44-app-management-api/llms.txt) · [OpenAPI document](https://skmtc.dev/idealspot/apis/base44-app-management-api/revisions/e2a6a9f1fe4c?raw)
