---
title: "Create Team Role"
method: POST
path: "/api/v1/team/roles"
tags: ["team"]
---

# Create Team Role

`POST /api/v1/team/roles`

## Request

- Base URL: `https://api.getanana.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.getanana.com/api/v1/team/roles`
- Auth: none declared

Add a custom role, under the rules of editing one (milestone G).

## Request body

- TenantRoleCreate: A new custom role's whole state (milestone G).
  - `name` string, required
  - `description` string, required
  - `permissions` TenantPermission[], required

## Response `201`

Successful Response

- TenantRoleRead
  - `id` string, uuid, required
  - `kind` 'ADMIN' | 'MEMBER' | 'CUSTOM', required: A role's kind. Every organization has one ADMIN and one MEMBER role; CUSTOM roles are ones an organization adds (milestone G).
  - `name` string, required
  - `description` string, required
  - `permissions` TenantPermission[], required

## Other responses

- `403`: A permission you don't hold
- `409`: A name another role has
- `422`: Validation Error

## Changes

> 55 revisions in range; 1 not diffed.

- **2026-10-15** `83c033cd3325`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/getanana/apis/cleon-api/changes/api/v1/team/roles/post.md)

---

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