---
title: "POST /api/permissions/roles"
method: POST
path: "/api/permissions/roles"
tags: ["Permissions"]
---

# POST /api/permissions/roles

`POST /api/permissions/roles`

Create a custom role (optionally inheriting other roles).

## Request body

- object
  - `key` string, required
  - `name` string, required
  - `description` string
  - `inherits` string[]

## Response `200`

Default Response

- object
  - `metadata` object, required
    - `success` boolean, required — True when the request succeeded.
  - `data` object, required
    - `id` string, required
    - `key` string, required
    - `name` string, required
    - `description` string, nullable, required
    - `isSystem` boolean, required

## Changes

> 22 revisions in range; 1 not diffed.

- **2026-08-31** `97e51f27dc77` — 1 breaking, 1 info
  - the response property `data/description` became nullable for the status `200`
  - response property `data/description` list-of-types was narrowed by removing types `null` from media type `application/json` of response `200`

[Change history](https://skmtc.dev/retraced/apis/api-reference/changes/api/permissions/roles/post.md)

---

[API](https://skmtc.dev/retraced/apis/api-reference.md) · [All operations](https://skmtc.dev/retraced/apis/api-reference/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/retraced/api-reference/revisions/97e51f27dc77/schema)
