---
title: "Delete role"
method: DELETE
path: "/projects/{project_id}/branches/{branch_id}/roles/{role_name}"
tags: ["Branch"]
---

# Delete role

`DELETE /projects/{project_id}/branches/{branch_id}/roles/{role_name}`

## Request

- Base URL: `https://console.neon.tech/api/v2`
- URL: `https://console.neon.tech/api/v2/projects/{project_id}/branches/{branch_id}/roles/{role_name}`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `zenith`
  - API key in cookie `keycloak_token`

Deletes the specified Postgres role from the branch.
For related information, see [Manage roles](https://neon.com/docs/manage/roles/).

## Response `200`

Deleted the specified role from the branch

- RoleOperations
  - `role` Role, required
    - `branch_id` string, required: The ID of the branch to which the role belongs
    - `name` string, required: The role name
    - `password` string: The role password
    - `protected` boolean: Whether or not the role is system-protected
    - `authentication_method` string: Authentication method configured for this role. Valid options: `password`, `oauth`, `no_login`
    - `created_at` string, date-time, required: A timestamp indicating when the role was created
    - `updated_at` string, date-time, required: A timestamp indicating when the role was last updated
  - `operations` Operation[], required
    - `id` string, uuid, required: The operation ID
    - `project_id` string, required: The Neon project ID
    - `branch_id` string: The branch ID
    - `endpoint_id` string: The endpoint ID
    - `action` 'create_compute' | 'create_timeline' | 'start_compute' | 'suspend_compute' | 'apply_config' | 'check_availability' | 'delete_timeline' | 'create_branch' | 'import_data' | 'tenant_ignore' | 'tenant_attach' | 'tenant_detach' | 'tenant_detach_safekeepers' | 'tenant_attach_safekeepers' | 'tenant_reattach' | 'replace_safekeeper' | 'disable_maintenance' | 'apply_storage_config' | 'prepare_secondary_pageserver' | 'switch_pageserver' | 'detach_parent_branch' | 'timeline_archive' | 'timeline_unarchive' | 'start_reserved_compute' | 'sync_dbs_and_roles_from_compute' | 'apply_schema_from_branch' | 'timeline_mark_invisible' | 'timeline_update_protected_config' | 'prewarm_replica' | 'promote_replica' | 'set_storage_non_dirty' | 'swap_binding_id' | 'finalize_migration' | 'mark_migration_prepared' | 'update_catalog' | 'epc_sync', required: The action performed by the operation
    - `status` 'scheduling' | 'running' | 'finished' | 'failed' | 'error' | 'cancelling' | 'cancelled' | 'skipped', required: The status of the operation
    - `error` string: The error that occurred
    - `failures_count` integer, required: The number of times the operation failed
    - `retry_at` string, date-time: A timestamp indicating when the operation was last retried
    - `created_at` string, date-time, required: A timestamp indicating when the operation was created
    - `updated_at` string, date-time, required: A timestamp indicating when the operation status was last updated
    - `total_duration_ms` integer, required: The total duration of the operation in milliseconds

## Other responses

- `204`: Returned if the role doesn't exist or has already been deleted
- `default`: General Error. The request may or may not be safe to retry, depending on the HTTP method, response status code, and whether a response was received. - If no response is returned from the API, a network error or timeout likely occurred. - In some cases, the request may have reached the server and been successfully processed, but the response failed to reach the client. As a result, retrying non-idempotent requests can lead to unintended results. The following HTTP methods are considered non-idempotent: `POST`, `PATCH`, `DELETE`, and `PUT`. Retrying these methods is generally **not safe**. The following methods are considered idempotent: `GET`, `HEAD`, and `OPTIONS`. Retrying these methods is **safe** in the event of a network error or timeout. Any request that returns a `503 Service Unavailable` response is always safe to retry. Any request that returns a `423 Locked` response is safe to retry. `423 Locked` indicates that the resource is temporarily locked, for example, due to another operation in progress.

---

[API](https://skmtc.dev/neon/apis/neon-api.md) · [All operations](https://skmtc.dev/neon/apis/neon-api/llms.txt) · [OpenAPI document](https://skmtc.dev/neon/apis/neon-api/revisions/cfde79a5c713?raw)
