---
title: "Deactivate a role by ID"
method: DELETE
path: "/roles/{role_id}"
tags: ["Roles"]
---

# Deactivate a role by ID

`DELETE /roles/{role_id}`

## Request

- Base URL: `https://sandbox.upvest.co`
- URL: `https://sandbox.upvest.co/roles/{role_id}`
- Auth: OAuth 2 (client credentials, token URL `https://sandbox.upvest.co/auth/token`, scopes: `roles:admin`)

Deactivates the role specified by its ID. The role remains queryable with status `DEACTIVATED`.
Only roles whose `entity_type` is `BUSINESS` may be deactivated via this endpoint; account-group roles are rejected with `403 Forbidden`.
Deactivation is a terminal state; once deactivated, a role cannot be reactivated.
Deactivation is idempotent: calling this endpoint on an already-deactivated role returns `202 Accepted` without side effects.
A `ROLE.DEACTIVATED` webhook event is emitted on the first successful deactivation.

## Response `202`

The request has been successfully accepted and will be processed asynchronously.

## Other responses

- `401`: Unauthorized. The caller has not been authenticated.
- `403`: Forbidden. The caller has been authenticated but is not allowed to take the requested action.
- `404`: Not Found. The requested resource could not be found.
- `406`: Not Acceptable. The resource does not have a current representation that would be acceptable to the user agent. "Accept" header defined unsupported value.
- `429`: Too Many Requests. The caller has exceeded their quota for the time period and has been throttled.
- `500`: Internal Server Error. The service encountered an unexpected error.
- `503`: Service Unavailable. The service handling for this request cannot be reached at this time.
- `504`: Gateway Timeout. The service gateway has reached its internal timeout.

---

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