---
title: "Get branch"
method: GET
path: "/api/apps/{app_id}/branches/{branch_id}"
---

# Get branch

`GET /api/apps/{app_id}/branches/{branch_id}`

## Request

- Base URL: `https://app.base44.com`
- URL: `https://app.base44.com/api/apps/{app_id}/branches/{branch_id}`
- 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 one of the app's branches, whatever its status, including merged and deleted branches.

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>

## Path parameters

- `branch_id` string, required: ID of the branch, as returned by [List branches](/api-reference/list-branches).
- `app_id` string, required: ID of the app whose branches to read.

## Response `200`

The branch.

- BranchSummary: A branch of an app.
  - `id` string, required: ID of the branch.
  - `app_id` string, required: ID of the app the branch belongs to.
  - `branch_name` string, 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.
  - `run_state` BranchRunState, required
    - `state` 'ready' | 'processing' | 'error', required: `processing` while the AI is working on the branch, `ready` once it's idle, and `error` when the last turn on the branch failed.
    - `details` string, nullable, required: Short note about the state, such as why the last turn failed, or `null` when there's nothing to report.
    - `last_updated_date` string, date-time, required: When the state last changed, as a UTC timestamp in ISO 8601 format.
  - `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_id` string, nullable, required: ID of the main [checkpoint](/api-reference/list-checkpoints) the branch started from, or `null` if the app had no checkpoint yet.
  - `session_id` string, nullable, required: ID of the [session](/api-reference/get-session) this branch belongs to, or `null` for a branch Base44 hasn't put in a session yet.
  - `created_by_id` string, required: ID of the user who created the branch.
  - `created_by_name` string, 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_date` string, date-time, required: When the branch was created, as a UTC timestamp in ISO 8601 format.
  - `merged_at` string, 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_id` string, 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_url` string, required: URL of the branch's preview. It shows the branch only while it's active and once it has been built.

## 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 branch with this ID.
- `429`: Rate limit exceeded. The base limit is 300 requests per minute. See [Rate limits](/developers/references/apps-api/get-started/rate-limits) for the multiplier your plan gets.

## Changes

- **2026-10-28** `77fa614f2e21`: 1 info
  - added the required property `session_id` to the response with the `200` status
- **2026-10-11** `80287813ab84`: 1 info
  - the endpoint scheme security `PersonalAccessTokenAuth` was added to the API
- **2026-10-05** `8a09a50ea8c9`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/base44/apis/base44-app-management-api/changes/api/apps/:app_id/branches/:branch_id/get.md)

---

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