REST API
Roles
Read workspace and team roles with their permissions.
GET
/v2/workspaces/{slug}/workspace-rolesSearch Workspace role list
List workspace roles and the member count for each role with pagination.
Parameters
slugRequiredstringpathWorkspace slugoffsetintegerqueryDefault0Zero-based offset of the first returned item.limitintegerqueryDefault100Maximum number of items returned.
Request example
curl --request GET \
--url "https://api.callabo.ai/v2/workspaces/your-workspace/workspace-roles" \
--header "Accept: application/json" \
--header "Authorization: Bearer $CALLABO_PAT"Success responses
Response body
itemsRequiredV2WorkspaceRole[]Custom workspace roles.idRequiredintegerCustom workspace role identifier.nameRequiredstringCustom workspace role name.descriptionstring | nullCustom workspace role description.is_system_roleRequiredbooleanWhether the role is managed by the system.member_countRequiredintegerNumber of members assigned to the role.created_atRequiredstring (date-time)Date and time when the role was created.updated_atRequiredstring (date-time)Date and time when the role was last updated.permissionsRequiredV2Permission[]Permissions assigned to the custom workspace role.pageRequiredV2PaginationCustom workspace role pagination information.offsetRequiredintegerZero-based offset of the first returned item.limitRequiredintegerRequested maximum number of items.totalRequiredintegerTotal number of matching items.
Response example
{
"items": [
{
"id": 1,
"name": "Example",
"is_system_role": true,
"member_count": 1,
"created_at": "2026-08-27T03:00:00Z",
"updated_at": "2026-08-27T03:00:00Z",
"permissions": [
{
"resource": "member_management",
"effect": "allow"
}
]
}
],
"page": {
"offset": 1,
"limit": 1,
"total": 1
}
}Errors
| Status | Error code | Description |
|---|---|---|
| 401 | UNAUTHORIZED | Unauthenticated request |
| 403 | FORBIDDEN | Insufficient requester permissions |
| 404 | WORKSPACE_NOT_FOUND | Not found |
| 422 | VALIDATION_ERROR | Unprocessable content |
| 429 | RATE_LIMIT_EXCEEDED | Request limit exceededLearn more |
GET
/v2/workspaces/{slug}/workspace-roles/{role_id}Workspace role details inquiry
Retrieve workspace role permissions and the number of assigned members.
Parameters
role_idRequiredintegerpathRole ID.slugRequiredstringpathWorkspace slug
Request example
curl --request GET \
--url "https://api.callabo.ai/v2/workspaces/your-workspace/workspace-roles/1" \
--header "Accept: application/json" \
--header "Authorization: Bearer $CALLABO_PAT"Success responses
Response body
idRequiredintegerCustom workspace role identifier.nameRequiredstringCustom workspace role name.descriptionstring | nullCustom workspace role description.is_system_roleRequiredbooleanWhether the role is managed by the system.member_countRequiredintegerNumber of members assigned to the role.created_atRequiredstring (date-time)Date and time when the role was created.updated_atRequiredstring (date-time)Date and time when the role was last updated.permissionsRequiredV2Permission[]Permissions assigned to the custom workspace role.resourceRequiredPermissionResourceResource to which the permission applies.effectRequiredPermissionStatusAllow or deny status to apply to the resource.
Response example
{
"id": 1,
"name": "Example",
"is_system_role": true,
"member_count": 1,
"created_at": "2026-08-27T03:00:00Z",
"updated_at": "2026-08-27T03:00:00Z",
"permissions": [
{
"resource": "member_management",
"effect": "allow"
}
]
}Errors
| Status | Error code | Description |
|---|---|---|
| 401 | UNAUTHORIZED | Unauthenticated request |
| 403 | FORBIDDEN | Insufficient requester permissions |
| 404 | WORKSPACE_NOT_FOUND, WORKSPACE_ROLE_NOT_FOUND | Not found |
| 422 | VALIDATION_ERROR | Unprocessable content |
| 429 | RATE_LIMIT_EXCEEDED | Request limit exceededLearn more |
GET
/v2/workspaces/{slug}/team-rolesTeam role list search
List team roles and permissions with pagination.
Parameters
slugRequiredstringpathWorkspace slugoffsetintegerqueryDefault0Zero-based offset of the first returned item.limitintegerqueryDefault100Maximum number of items returned.
Request example
curl --request GET \
--url "https://api.callabo.ai/v2/workspaces/your-workspace/team-roles" \
--header "Accept: application/json" \
--header "Authorization: Bearer $CALLABO_PAT"Success responses
Response body
itemsRequiredV2TeamRole[]Custom team roles.idRequiredintegerCustom team role identifier.nameRequiredstringCustom team role name.descriptionstring | nullCustom team role description.is_system_roleRequiredbooleanWhether the role is managed by the system.permissionsRequiredV2Permission[]Permissions assigned to the custom team role.pageRequiredV2PaginationCustom team role pagination information.offsetRequiredintegerZero-based offset of the first returned item.limitRequiredintegerRequested maximum number of items.totalRequiredintegerTotal number of matching items.
Response example
{
"items": [
{
"id": 1,
"name": "Example",
"is_system_role": true,
"permissions": [
{
"resource": "member_management",
"effect": "allow"
}
]
}
],
"page": {
"offset": 1,
"limit": 1,
"total": 1
}
}Errors
| Status | Error code | Description |
|---|---|---|
| 401 | UNAUTHORIZED | Unauthenticated request |
| 403 | FORBIDDEN | Insufficient requester permissions |
| 404 | WORKSPACE_NOT_FOUND | Not found |
| 422 | VALIDATION_ERROR | Unprocessable content |
| 429 | RATE_LIMIT_EXCEEDED | Request limit exceededLearn more |
GET
/v2/workspaces/{slug}/team-roles/{role_id}Team role details inquiry
Retrieve team role details and permissions.
Parameters
role_idRequiredintegerpathRole ID.slugRequiredstringpathWorkspace slug
Request example
curl --request GET \
--url "https://api.callabo.ai/v2/workspaces/your-workspace/team-roles/1" \
--header "Accept: application/json" \
--header "Authorization: Bearer $CALLABO_PAT"Success responses
Response body
idRequiredintegerCustom team role identifier.nameRequiredstringCustom team role name.descriptionstring | nullCustom team role description.is_system_roleRequiredbooleanWhether the role is managed by the system.permissionsRequiredV2Permission[]Permissions assigned to the custom team role.resourceRequiredPermissionResourceResource to which the permission applies.effectRequiredPermissionStatusAllow or deny status to apply to the resource.
Response example
{
"id": 1,
"name": "Example",
"is_system_role": true,
"permissions": [
{
"resource": "member_management",
"effect": "allow"
}
]
}Errors
| Status | Error code | Description |
|---|---|---|
| 401 | UNAUTHORIZED | Unauthenticated request |
| 403 | FORBIDDEN | Insufficient requester permissions |
| 404 | WORKSPACE_NOT_FOUND, TEAM_ROLE_NOT_FOUND | Not found |
| 422 | VALIDATION_ERROR | Unprocessable content |
| 429 | RATE_LIMIT_EXCEEDED | Request limit exceededLearn more |