---
title: "Get checkpoint files"
method: GET
path: "/api/apps/{app_id}/app-checkpoints/{checkpoint_id}/file-tree"
---

# Get checkpoint files

`GET /api/apps/{app_id}/app-checkpoints/{checkpoint_id}/file-tree`

## Request

- Base URL: `https://app.base44.com`
- URL: `https://app.base44.com/api/apps/{app_id}/app-checkpoints/{checkpoint_id}/file-tree`
- Auth: HTTP bearer

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

Returns the source files saved in a [checkpoint](/developers/references/app-management/get-started/concepts#checkpoints), so you can read the app's code as it was at that version or compare two versions.

The files are the app's editable source, such as its pages, components, backend functions and entity schemas, rather than every file in its repository. They come from the commit the checkpoint saved. A checkpoint saved before the app's code was kept in git is rebuilt from the copy it stored, which holds fewer files. That copy is also used when a newer checkpoint's commit can't be read and the checkpoint stored one.

Every file comes back in one response, so expect a large response for a big app.

This is limited to 120 requests per minute per app for each workspace's personal API keys, so every key in a workspace shares one allowance. Some workspaces have a different limit.

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

<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>

## Path parameters

- `checkpoint_id` string, required: ID of the checkpoint, as returned in `id` by [List checkpoints](/api-reference/list-checkpoints).
- `app_id` string, required: ID of the app.

## Response `200`

The checkpoint's source files.

- CheckpointFiles: The source files saved in a checkpoint.
  - `files` object, required: The checkpoint's source files, keyed by path. Pages, components, backend functions, entities and agents are keyed by kind and name with no file extension, such as `pages/Home` or `functions/sendWelcomeEmail`. A few files use a fixed name, such as `layout`. Entity, agent and workflow definitions come back as JSON objects, and source files as text.

## Other responses

- `401`: Missing or invalid credentials.
- `403`: You don't have editor access to this app, the app is blocked, or you used a workspace API key.
- `404`: App not found, or the app has no checkpoint with this ID.
- `429`: Rate limit exceeded.

## Changes

> 58 revisions in range; 1 not diffed.

- **2026-10-13** `b92cc2f13639`: 2 info
  - the security scope `read_only` was added to the endpoint's security scheme `PersonalAccessTokenAuth`
  - the security scope `full_access` was removed from the endpoint's security scheme `PersonalAccessTokenAuth`
- **2026-10-12** `5e139db2e643`: 1 info
  - the endpoint scheme security `PersonalAccessTokenAuth` was added to the API
- **2026-10-06** `9a0e9d0827a1`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/adexad/apis/base44-app-management-api/changes/api/apps/:app_id/app-checkpoints/:checkpoint_id/file-tree/get.md)

---

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