List checkpoints

Changed on

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

Returns the specified app's checkpoints, newest first. A checkpoint is a saved version of the app, captured as you build.

To deploy a specific checkpoint, pass its id as the checkpoint_id to Deploy an app.

Set branch_id to work with a branch's checkpoints instead of main's. A branch has its own checkpoints and starts with none, so main's checkpoints from before the branch was created aren't included. A branch's checkpoints can't be deployed: Deploy an app works from main only.

<Warning>The response includes fields beyond the ones documented here. Don't rely on undocumented response fields, as they can change at any time.</Warning>

<Note>This endpoint accepts a personal API key. A read-only key is refused, and workspace API keys are not accepted.</Note>

get/api/apps/{app_id}/app-checkpoints

Request

  • Base URL: https://app.base44.com
  • URL: https://app.base44.com/api/apps/{app_id}/app-checkpoints
  • Auth: HTTP bearer

Path parameters

app_idstring required

ID of the app.

Query parameters

limitinteger

Maximum number of checkpoints to return, between 1 and 10000. Omit to return all of them.

skipinteger

Number of checkpoints to skip before the page starts, 0 or greater. Combine with limit to page through results.

branch_idstring

ID of the branch to work on, as returned by List branches. Omit it to work on the app's main branch.

Response

Successful Response

idstring nullable

ID of the checkpoint. Pass it as checkpoint_id to Deploy an app to deploy this saved version. A branch's checkpoints can't be deployed.

namestring nullable

Name of the checkpoint.

changesstring nullable

Summary of what changed in this checkpoint, or null if none was recorded.

preview_status'pending' | 'building' | 'ready' | 'failed' nullable

Build status of this checkpoint's preview. Either pending, building, ready, or failed, or null if no preview build was attempted. A failed build can be retried with Retry checkpoint build.

created_bystring nullable

Email of the user who created the checkpoint.

created_datestring date-time nullable

Time the checkpoint was created, as a UTC timestamp in ISO 8601 format.

last_deployed_atstring date-time nullable

Time this checkpoint was last deployed to production, as a UTC timestamp in ISO 8601 format, or null if it has never been deployed.

git_commit_hashstring nullable

Git commit hash of the code captured in this checkpoint, or null if it has no commit.

preview_urlstring nullable

URL to preview this checkpoint's build, or null if the checkpoint has no build.

is_github_syncboolean nullable

Whether the checkpoint came from a GitHub sync (true) or an in-app change (false).

Example response

[
  {
    "id": "6886b8d390dc7e2f4a2c91b3",
    "name": "Add contact form",
    "changes": "Added a contact form to the home page",
    "preview_status": "ready",
    "build_error": {
      "message": "Timed out waiting for another build of this commit to finish"
    },
    "created_by": "developer@example.com",
    "created_date": "2026-08-01T09:15:00",
    "last_deployed_at": "2026-08-02T14:30:00",
    "git_commit_hash": "a1b2c3d4e5f67890abcdef1234567890abcdef12",
    "preview_url": "https://preview.base44.app/6886b8d390dc7e2f4a2c91b3"
  }
]

Changes

    • breaking

      query request parameter branch_id list-of-types was narrowed by removing types null

    • breaking

      query request parameter limit list-of-types was narrowed by removing types null

    • breaking

      query request parameter skip list-of-types was narrowed by removing types null

    • breaking

      for the query request parameter limit, the type changed from no type to integer

    • breaking

      for the query request parameter skip, the type changed from no type to integer

    • info

      for the query request parameter branch_id, the type was generalized from no type to string

    • info

      added the new optional query request parameter branch_id