List branches

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

Returns the app's branches, newest first. Branches imported with Import a GitHub branch are included. While main branch protection is on, changes to main go through a branch.

By default only active branches are returned. Set include_merged to true to also get the ones already merged into main. Deleted branches are never listed, but Get branch still returns them. The list isn't paginated.

This is limited to 300 requests per minute per app for each workspace's personal API keys, so every key in a workspace shares one allowance. List branches and Get branch share it. 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>

get/api/apps/{app_id}/branches

Path parameters

app_idstring required

ID of the app whose branches to read.

ID of the app whose branches to read.

Query parameters

include_mergedboolean

Set to true to also return branches already merged into main.

Set to true to also return branches already merged into main.

Response

The app's branches, newest first.

idstring required

ID of the branch.

app_idstring required

ID of the app the branch belongs to.

branch_namestring required

Name of the branch.

status'active' | 'merged' | 'deleted' required

active while the branch can still be worked on, merged once it was merged into main, and deleted once it was deleted.

code_state'unchanged' | 'changed' required

unchanged when the branch has no code changes of its own to merge into main. changed otherwise, including when Base44 can't tell yet.

base_checkpoint_idstring nullable required

ID of the main checkpoint the branch started from, or null if the app had no checkpoint yet.

created_by_idstring required

ID of the user who created the branch.

created_by_namestring nullable required

Display name of the user who created the branch, or the part of their email before the @ when they have no name. null when Base44 can't name them, for example when their account no longer exists.

created_datestring date-time required

When the branch was created, as a UTC timestamp in ISO 8601 format.

merged_atstring date-time nullable required

When the branch was merged into main, as a UTC timestamp in ISO 8601 format, or null if it wasn't.

merged_by_idstring nullable required

ID of the user who merged the branch, or null if it wasn't merged or Base44 doesn't know who did, as for a branch whose pull request was merged on GitHub.

static_preview_urlstring required

URL of the branch's preview. It shows the branch only while it's active and once it has been built.

Example response

[
  {
    "id": "68f1a2b3c4d5e6f708192a3b",
    "app_id": "6820f3a4e7b91d003c45a1f2",
    "branch_name": "add-contact-form",
    "status": "active",
    "run_state": {
      "state": "ready",
      "details": "Restoring checkpoint",
      "last_updated_date": "2026-09-28T10:18:40"
    },
    "code_state": "changed",
    "base_checkpoint_id": "6886b8d390dc7e2f4a2c91b3",
    "created_by_id": "68a0c1d2e3f4a5b6c7d8e9f0",
    "created_by_name": "Jane Doe",
    "created_date": "2026-09-28T10:15:00",
    "merged_at": "2026-09-29T08:02:11",
    "merged_by_id": "68a0c1d2e3f4a5b6c7d8e9f0",
    "static_preview_url": "https://preview--6820f3a4e7b91d003c45a1f2--b-d8c647b.base44.app"
  }
]

Changes

Changed in 1 of the 26 revisions of this API.1

Of the 26 revisions, 1 has no diff computed.