---
title: "Create role"
url: https://hexelstudio.com/docs/api/ciam-iam/roles/create
---

# Create role

**POST** `/roles`

Create a new IAM role

## Headers

- `Authorization: string`

  `Bearer <token>`.

## Body parameters

- `boundary_id: optional string`

- `created_at: optional string`

- `created_by_user_id: optional string`

- `description: optional string`

- `display_name: string`

- `environment_id: optional string`

- `id: optional string`

- `is_enabled: optional boolean`

- `is_system: optional boolean`

- `max_session_duration: optional integer`

- `name: string`

- `organization_id: optional string`

- `role_type: optional string`

  Assumable-role fields (migration 027).

- `scope: string`

  One of: `"organization"`, `"workspace"`, `"environment"`, `"platform"`

- `trust_policy: optional object`

- `updated_at: optional string`

- `workspace_id: optional string`

## Returns

`201` Created (`Role`)

- `boundary_id: optional string`

- `created_at: optional string`

- `created_by_user_id: optional string`

- `description: optional string`

- `display_name: string`

- `environment_id: optional string`

- `id: optional string`

- `is_enabled: optional boolean`

- `is_system: optional boolean`

- `max_session_duration: optional integer`

- `name: string`

- `organization_id: optional string`

- `role_type: optional string`

  Assumable-role fields (migration 027).

- `scope: string`

  One of: `"organization"`, `"workspace"`, `"environment"`, `"platform"`

- `trust_policy: optional object`

- `updated_at: optional string`

- `workspace_id: optional string`

## Errors

- `400` Bad Request
- `500` Internal Server Error

## Example

```bash
curl --request POST \
  --url 'https://api.hexelstudio.com/v1/roles' \
  --header "Authorization: Bearer $ACCESS_TOKEN" \
  --header 'Content-Type: application/json' \
  --data '{
  "boundary_id": "string",
  "created_at": "2026-01-01T00:00:00Z",
  "created_by_user_id": "string",
  "description": "string",
  "display_name": "string",
  "environment_id": "string",
  "id": "string",
  "is_enabled": true,
  "is_system": true,
  "max_session_duration": 0,
  "name": "string",
  "organization_id": "string",
  "role_type": "string",
  "scope": "organization",
  "trust_policy": {},
  "updated_at": "2026-01-01T00:00:00Z",
  "workspace_id": "string"
}'
```

### Response (201)

```json
{
  "boundary_id": "string",
  "created_at": "2026-01-01T00:00:00Z",
  "created_by_user_id": "string",
  "description": "string",
  "display_name": "string",
  "environment_id": "string",
  "id": "string",
  "is_enabled": true,
  "is_system": true,
  "max_session_duration": 0,
  "name": "string",
  "organization_id": "string",
  "role_type": "string",
  "scope": "organization",
  "trust_policy": {},
  "updated_at": "2026-01-01T00:00:00Z",
  "workspace_id": "string"
}
```

### Response (400)

```json
{
  "key": "string"
}
```

### Response (500)

```json
{
  "key": "string"
}
```
