---
title: "Resolve GitHub sync conflicts"
method: POST
path: "/api/apps/{app_id}/github/sync/resolve-conflicts"
---

# Resolve GitHub sync conflicts

`POST /api/apps/{app_id}/github/sync/resolve-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) returns `error: merge_conflict`. Base44 runs a builder turn 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, so a workspace that is out of credits gets a 400 and no turn runs, and the call holds the connection until it ends, which can take minutes.

`status` says how it ended. `resolved` means the resolution is published to the repository. `apply_pending` means the resolution is ready and still being applied. `needs_input` means the builder asked a question and is waiting for an answer in the app's chat. `conflict` means the conflicts are still there and the app's chat carries a fresh conflict card. `failed` means the turn produced no outcome.

Resolution lands on the repository's default branch, so run it from the app's main chat rather than with a branch selected. This endpoint allows 20 requests per minute per caller, shared with [Pull changes from GitHub](/api-reference/pull-changes-from-github).

<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 whose GitHub sync this affects.

## Response `200`

How the resolution run ended.

- ResolveConflictsResponse — Outcome of a server-initiated conflict-resolution run.
  - `status` 'resolved' | 'needs_input' | 'apply_pending' | 'conflict' | 'failed', required — Final status of a server-initiated resolution run.

## Other responses

- `400` — Your workspace is out of credits, so the resolution turn can't run.
- `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 builder is busy, or the request is scoped to a branch instead of the app's main chat.
- `422` — Validation Error
- `429` — Rate limit exceeded (20 requests per minute).

---

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