---
title: "Clone Role"
method: POST
path: "/internal/roles/{role_id}/clone"
tags: ["internal"]
---

# Clone Role

`POST /internal/roles/{role_id}/clone`

## Request

- Base URL: `https://api.kobaltlabs.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.kobaltlabs.com/internal/roles/{role_id}/clone`
- Auth: none declared

Clone a role's permission grants into a new role in the target scope.

The clone is a fresh role (new ``role_id``) carrying a copy of the source role's
``UserRoleToUserPermissions`` rows — users are **not** copied. Used to seed a
company's own box from a General (global) role, or to copy a role between companies.

## Path parameters

- `role_id` string, uuid, required

## Request body

- CloneRoleRequest: Copy a role (its permission grants) into a new role. ``target_company_id=None`` clones into the global/system scope; a UUID clones into that company's own box. Powers both "copy a General role into a company" and "copy a role between two companies".
  - `target_company_id` string, uuid, nullable
  - `new_role_name` string, required
  - `archetype` 'tprm_admin' | 'business_owner' | 'tprm_analyst' | 'sme' | 'view_only' | 'collateral_admin' | 'collateral_reviewer' | 'collateral_submitter' | 'policy_reviewer': Closed, product-owned set of role identities. Stable machine keys — never renamed.

## Response `200`

Successful Response

- object

## Other responses

- `422`: Validation Error

---

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