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

# Resolve GitHub sync conflicts

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

Asks the builder to resolve the merge conflicts left by a pull from GitHub.

Call this after [Pull changes from GitHub](/api-reference/pull-changes-from-github) reports a merge conflict. Base44 runs a builder [turn](/developers/references/app-management/get-started/concepts#turns) over the conflicted files, and one more automatic attempt if publishing the resolution finds that GitHub has moved on. The turn consumes credits like any other builder work. The response comes back only when the run ends, which can take minutes.

Resolution always lands on the repository's default branch.



## OpenAPI

````yaml /developers/references/app-management/app-management-openapi.json post /api/apps/{app_id}/github/sync/resolve-conflicts
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/sync/resolve-conflicts:
    post:
      summary: Resolve GitHub sync conflicts
      description: >-
        <Info>This API is in beta. Endpoints, fields, and behavior may still
        change, so avoid depending on it in production.</Info>


        Asks the builder to resolve the merge conflicts left by a pull from
        GitHub.


        Call this after [Pull changes from
        GitHub](/api-reference/pull-changes-from-github) reports a merge
        conflict. Base44 runs a builder
        [turn](/developers/references/app-management/get-started/concepts#turns)
        over the conflicted files, and one more automatic attempt if publishing
        the resolution finds that GitHub has moved on. The turn consumes credits
        like any other builder work. The response comes back only when the run
        ends, which can take minutes.


        Resolution always lands on the repository's default branch.
      operationId: >-
        resolve_github_conflicts_api_apps__app_id__github_sync_resolve_conflicts_post
      parameters:
        - name: app_id
          in: path
          required: true
          schema:
            type: string
            description: ID of the app whose GitHub sync this affects.
            title: App Id
          description: ID of the app whose GitHub sync this affects.
          example: 6820f3a4e7b91d003c45a1f2
      responses:
        '200':
          description: How the resolution run ended.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResolveConflictsResponse'
        '400':
          description: >-
            The app's workspace is out of credits, so the resolution turn can't
            run.
        '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 builder is busy with another turn. Wait for it to finish and try
            again.
        '429':
          description: >-
            Rate limit exceeded. The base limit is 20 requests per minute, and
            this endpoint shares it with [Pull changes from
            GitHub](/api-reference/pull-changes-from-github). See [Rate
            limits](/developers/references/apps-api/get-started/rate-limits) for
            the multiplier your plan gets.
components:
  schemas:
    ResolveConflictsResponse:
      properties:
        status:
          $ref: '#/components/schemas/ResolveOutcome'
          description: >-
            How the run ended. A value of `resolved` published the resolution,
            `apply_pending` is still applying it, `needs_input` is waiting for
            an answer in the app's chat, `conflict` left the conflicts in place,
            and `failed` produced no outcome.
          example: resolved
      type: object
      required:
        - status
      title: ResolveConflictsResponse
      description: Outcome of a conflict-resolution run.
    ResolveOutcome:
      type: string
      enum:
        - resolved
        - needs_input
        - apply_pending
        - conflict
        - failed
      title: ResolveOutcome
      description: Final status of a conflict-resolution run.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: api_key
      description: Personal API key.

````