---
title: "Delete a branch"
method: DELETE
path: "/api/v2/projects/{projectId}/branches/{branch}"
tags: ["Branches"]
---

# Delete a branch

`DELETE /api/v2/projects/{projectId}/branches/{branch}`

## Request

- Base URL: `https://davinci-app.com`
- URL: `https://davinci-app.com/api/v2/projects/{projectId}/branches/{branch}`
- Auth: HTTP bearer

Deletes a branch and the commits only it holds. There is no undo, which is
why this asks for `projects:manage` where creating a branch asks for
`projects:write`.

Refused with `BRANCH_IN_USE` while anyone is connected to the branch. Pass
`force=true` to disconnect them instead; their in-memory work is saved to the
branch first, and then goes with it.

`main` cannot be deleted.

## Query parameters

- `force` boolean

## Response `200`

Branch deleted.

- DeleteBranchResponse
  - `deleted` string, required
  - `disconnectedUsers` integer: Clients disconnected by a forced delete.

## Other responses

- `400`: The branch cannot be deleted as asked. Error code is `CANNOT_DELETE_MAIN`, `BRANCH_IN_USE`, `BRANCH_NOT_FOUND`, or `UNMERGED_COMMITS`.
- `401`: No credential was supplied, or the supplied credential is malformed, expired, or revoked. A credential that is present but unusable is never downgraded to an anonymous request.
- `403`: Authenticated but not authorized. Either the acting user lacks the required resource permission, the key's scope ceiling excludes it, or the endpoint rejects this credential type (`CREDENTIAL_NOT_PERMITTED`).
- `404`: The resource does not exist in the parent named by the path, or is hidden from the caller. Absence and privacy denial are deliberately indistinguishable so project, organization, and private-team existence cannot be probed.
- `409`: The project stopped running between being opened for this request and the request reaching it. Error code is `PROJECT_NOT_RUNNING`. Retry: the next call opens it again.
- `429`: Request rate exceeded, either globally or for this key.
- `500`: Unexpected server error.
- `502`: The git operation failed inside the engine rather than being refused. Error code is `GIT_OPERATION_FAILED`, or `CHANGES_UNAVAILABLE` and `COMMIT_NOT_RECORDED` for the two cases where a specific step is known to have produced nothing.
- `503`: The project could not be opened in time, or no machine is currently available to run it. Error codes are `PROJECT_NOT_READY`, `SERVER_NOT_AVAILABLE`, and `SERVICE_UNAVAILABLE`. Retry after the interval in `Retry-After`.

## Changes

- **2026-09-15** (v2) `67c8b8616dbb`: 9 info
  - the `success` response property const value `false` was added for the status `400`
  - the `success` response property const value `false` was added for the status `401`
  - the `success` response property const value `false` was added for the status `403`
  - the `success` response property const value `false` was added for the status `404`
  - …5 more
- **2026-09-15** (v2) `48948af37797`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/celedon-solutions/apis/davinci-public-api/changes/api/v2/projects/:projectId/branches/:branch/delete.md)

---

[API](https://skmtc.dev/celedon-solutions/apis/davinci-public-api.md) - [All operations](https://skmtc.dev/celedon-solutions/apis/davinci-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/celedon-solutions/apis/davinci-public-api/revisions/279218ca2e8d?raw)
