---
title: "Import a GitHub branch"
method: POST
path: "/api/apps/{app_id}/github/branches/import"
---

# Import a GitHub branch

`POST /api/apps/{app_id}/github/branches/import`

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

Adopts a branch that already exists in the connected repository as a Base44 branch.

The new branch works on that GitHub ref as it is: its turns commit to the same branch name, and Base44 never creates a separate ref for it. Its starting files, routes and entity schemas come from the ref's tree at the head commit this call resolves, so an entity that only the branch declares is live in its preview right away.

Send a branch that exists in the repository and isn't its default branch, which is already the app's main chat. The name has to be free among the app's active and merged branches, so a branch can be imported once.

If the call can't read the branch's files it changes nothing, so retry it.

<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. Workspace API keys are not authorized for it and are rejected with a 403.</Note>

## Path parameters

- `app_id` string, required — ID of the app to import the branch into.

## Request body

- ImportBranchRequest — Request to import a branch that already exists in the connected repo.
  - `branch_name` string, required — Name of the branch to import, as it exists in the connected repository. Can't be the repository's default branch.

## Response `200`

The imported branch.

- ImportedBranchSummary — The Base44 branch created from an existing GitHub branch.
  - `id` string, required — ID of the new Base44 branch.
  - `branch_name` string, required — The GitHub branch name, stored exactly as you sent it. Base44's own commits go to this same branch.
  - `conversation_id` string, required — ID of the branch's own builder conversation. The branch's chat history is separate from the app's main chat.
  - `base_git_commit_hash` string, required — Commit where the branch forked off the repository's default branch.
  - `last_git_commit_hash` string, required — Head commit of the GitHub branch at the moment it was imported.
  - `created_date` string, required — When the branch was created, in ISO 8601 with a UTC offset.

## Other responses

- `400` — `branch_name` is the repository's default branch, doesn't exist in the repository, or isn't a name Base44 can build on.
- `401` — Missing or invalid credentials.
- `403` — You don't have access to this app, or you used a workspace API key. These endpoints take a personal API key.
- `404` — App not found, or the app has no active GitHub connection.
- `409` — The app is generating, a branch with this name already exists, or the app needs one edit on its main chat before it can use branches.
- `422` — Validation Error

---

[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-service-production.skmtc.workers.dev/v1/apis/idealspot/base44-app-management-api/revisions/31ef75eb64ab/schema)
