> ## Documentation Index
> Fetch the complete documentation index at: https://docs.base44.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Import a GitHub branch

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



## OpenAPI

````yaml /developers/references/app-management/app-management-openapi.json post /api/apps/{app_id}/github/branches/import
openapi: 3.1.0
info:
  title: Base44 App Management API
  version: 1.0.0
servers:
  - url: https://app.base44.com
security:
  - ApiKeyAuth: []
paths:
  /api/apps/{app_id}/github/branches/import:
    post:
      summary: Import a GitHub branch
      description: >-
        <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>
      operationId: import_branch_api_apps__app_id__github_branches_import_post
      parameters:
        - name: app_id
          in: path
          required: true
          schema:
            type: string
            description: ID of the app to import the branch into.
            title: App Id
          description: ID of the app to import the branch into.
          example: 6820f3a4e7b91d003c45a1f2
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ImportBranchRequest'
      responses:
        '200':
          description: The imported branch.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ImportedBranchSummary'
        '400':
          description: >-
            `branch_name` is the repository's default branch, doesn't exist in
            the repository, or isn't a name Base44 can build on.
        '401':
          description: Missing or invalid credentials.
        '403':
          description: >-
            You don't have access to this app, or you used a workspace API key.
            These endpoints take a personal API key.
        '404':
          description: App not found, or the app has no active GitHub connection.
        '409':
          description: >-
            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':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    ImportBranchRequest:
      properties:
        branch_name:
          type: string
          maxLength: 255
          minLength: 1
          title: Branch Name
          description: >-
            Name of the branch to import, as it exists in the connected
            repository. Can't be the repository's default branch.
          example: feature/reporting
      type: object
      required:
        - branch_name
      title: ImportBranchRequest
      description: Request to import a branch that already exists in the connected repo.
    ImportedBranchSummary:
      properties:
        id:
          type: string
          title: Id
          description: ID of the new Base44 branch.
          example: 68b1c0d4e7b91d003c45a1f7
        branch_name:
          type: string
          title: Branch Name
          description: >-
            The GitHub branch name, stored exactly as you sent it. Base44's own
            commits go to this same branch.
          example: feature/reporting
        conversation_id:
          type: string
          title: Conversation Id
          description: >-
            ID of the branch's own builder conversation. The branch's chat
            history is separate from the app's main chat.
          example: 68b1c0d4e7b91d003c45a1f8
        base_git_commit_hash:
          type: string
          title: Base Git Commit Hash
          description: Commit where the branch forked off the repository's default branch.
          example: 9f2c1ab7d4e58036bb1f4c0a7de92b41c0d5e8a3
        last_git_commit_hash:
          type: string
          title: Last Git Commit Hash
          description: Head commit of the GitHub branch at the moment it was imported.
          example: 4c7e1f90ab3d5628e1a0f7b24c9d8e6350a1b2c4
        created_date:
          type: string
          title: Created Date
          description: When the branch was created, in ISO 8601 with a UTC offset.
          example: '2026-08-15T09:10:00.123456+00:00'
      type: object
      required:
        - id
        - branch_name
        - conversation_id
        - base_git_commit_hash
        - last_git_commit_hash
        - created_date
      title: ImportedBranchSummary
      description: The Base44 branch created from an existing GitHub branch.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: api_key
      description: Personal API key.

````