REST API
Members
Read workspace member profiles, roles, and team memberships.
GET
/v2/workspaces/{slug}/membersView Workspace Member list
List workspace members filtered by status, team, and search term with pagination.
Parameters
slugRequiredstringpathWorkspace slugoffsetintegerqueryDefault0Zero-based offset of the first returned item.limitintegerqueryDefault20Maximum number of items returned.querystring | nullquerySearch term applied to member names or email addresses.statusMemberStatus | nullMember status to retrieve.team_idinteger | nullqueryReturn only members belonging to the specified team.
Request example
curl --request GET \
--url "https://api.callabo.ai/v2/workspaces/your-workspace/members" \
--header "Accept: application/json" \
--header "Authorization: Bearer $CALLABO_PAT"Success responses
Response body
itemsRequiredV2Member[]Workspace members.idRequiredintegerMember identifier.user_idRequiredintegerIdentifier of the user associated with the member.workspace_idRequiredintegerIdentifier of the workspace to which the member belongs.emailRequiredstringMember email.nameRequiredstringMember name.localeRequiredUserLocaleLanguage used by the member.statusRequired"active" | "deactivated"Workspace member status.base_roleRequiredBaseWorkspaceRoleMember's default workspace role.workspace_rolesRequiredV2WorkspaceRole[]Custom workspace roles assigned to the member.workspace_permissionsRequiredobjectPermissions calculated from the combination of workspace roles.teamsRequiredV2MemberTeamSummary[]Teams the member belongs to and their roles in each team.pageRequiredV2PaginationWorkspace member 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,
"user_id": 1,
"workspace_id": 1,
"email": "developer@example.com",
"name": "Example",
"locale": "ko",
"status": "active",
"base_role": "workspace_manager",
"workspace_roles": [
{
"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"
}
]
}
],
"workspace_permissions": {},
"teams": [
{
"id": 1,
"name": "Example",
"base_role": "manager",
"team_roles": [
{
"id": 1,
"name": "Example",
"is_system_role": true,
"permissions": [
null
]
}
],
"team_permissions": {}
}
]
}
],
"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}/members/meGet current workspace member
Get the current authenticated requester's workspace member and role information.
Parameters
slugRequiredstringpathWorkspace slug
Request example
curl --request GET \
--url "https://api.callabo.ai/v2/workspaces/your-workspace/members/me" \
--header "Accept: application/json" \
--header "Authorization: Bearer $CALLABO_PAT"Success responses
Response body
idRequiredintegerMember identifier.user_idRequiredintegerIdentifier of the user associated with the member.workspace_idRequiredintegerIdentifier of the workspace to which the member belongs.emailRequiredstringMember email.nameRequiredstringMember name.localeRequiredUserLocaleLanguage used by the member.statusRequired"active" | "deactivated"Workspace member status.base_roleRequiredBaseWorkspaceRoleMember's default workspace role.workspace_rolesRequiredV2WorkspaceRole[]Custom workspace roles assigned to the member.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.workspace_permissionsRequiredobjectPermissions calculated from the combination of workspace roles.teamsRequiredV2MemberTeamSummary[]Teams the member belongs to and their roles in each team.idRequiredintegerTeam identifier.nameRequiredstringTeam name.base_roleRequiredBaseTeamRoleMember's default team role.team_rolesRequiredV2TeamRole[]Custom team roles assigned to the member.team_permissionsRequiredobjectPermissions calculated from the combination of team roles.
Response example
{
"id": 1,
"user_id": 1,
"workspace_id": 1,
"email": "developer@example.com",
"name": "Example",
"locale": "ko",
"status": "active",
"base_role": "workspace_manager",
"workspace_roles": [
{
"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"
}
]
}
],
"workspace_permissions": {},
"teams": [
{
"id": 1,
"name": "Example",
"base_role": "manager",
"team_roles": [
{
"id": 1,
"name": "Example",
"is_system_role": true,
"permissions": [
{
"resource": "member_management",
"effect": "allow"
}
]
}
],
"team_permissions": {}
}
]
}Errors
| Status | Error code | Description |
|---|---|---|
| 401 | UNAUTHORIZED | Unauthenticated request |
| 403 | FORBIDDEN | Insufficient requester permissions |
| 404 | MEMBER_NOT_FOUND, WORKSPACE_NOT_FOUND, WORKSPACE_ROLE_NOT_FOUND | Not found |
| 422 | — | Unprocessable content |
| 429 | RATE_LIMIT_EXCEEDED | Request limit exceededLearn more |
GET
/v2/workspaces/{slug}/members/{member_id}Workspace Member Detailed Inquiry
Retrieve workspace member details and role information.
Parameters
member_idRequiredintegerpathMember identifier.slugRequiredstringpathWorkspace slug
Request example
curl --request GET \
--url "https://api.callabo.ai/v2/workspaces/your-workspace/members/1" \
--header "Accept: application/json" \
--header "Authorization: Bearer $CALLABO_PAT"Success responses
Response body
idRequiredintegerMember identifier.user_idRequiredintegerIdentifier of the user associated with the member.workspace_idRequiredintegerIdentifier of the workspace to which the member belongs.emailRequiredstringMember email.nameRequiredstringMember name.localeRequiredUserLocaleLanguage used by the member.statusRequired"active" | "deactivated"Workspace member status.base_roleRequiredBaseWorkspaceRoleMember's default workspace role.workspace_rolesRequiredV2WorkspaceRole[]Custom workspace roles assigned to the member.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.workspace_permissionsRequiredobjectPermissions calculated from the combination of workspace roles.teamsRequiredV2MemberTeamSummary[]Teams the member belongs to and their roles in each team.idRequiredintegerTeam identifier.nameRequiredstringTeam name.base_roleRequiredBaseTeamRoleMember's default team role.team_rolesRequiredV2TeamRole[]Custom team roles assigned to the member.team_permissionsRequiredobjectPermissions calculated from the combination of team roles.
Response example
{
"id": 1,
"user_id": 1,
"workspace_id": 1,
"email": "developer@example.com",
"name": "Example",
"locale": "ko",
"status": "active",
"base_role": "workspace_manager",
"workspace_roles": [
{
"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"
}
]
}
],
"workspace_permissions": {},
"teams": [
{
"id": 1,
"name": "Example",
"base_role": "manager",
"team_roles": [
{
"id": 1,
"name": "Example",
"is_system_role": true,
"permissions": [
{
"resource": "member_management",
"effect": "allow"
}
]
}
],
"team_permissions": {}
}
]
}Errors
| Status | Error code | Description |
|---|---|---|
| 401 | UNAUTHORIZED | Unauthenticated request |
| 403 | FORBIDDEN | Insufficient requester permissions |
| 404 | MEMBER_NOT_FOUND, 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}/invitationsView Workspace invitation list
List workspace invitations filtered by status with pagination.
Parameters
slugRequiredstringpathWorkspace slugoffsetintegerqueryDefault0Zero-based offset of the first returned item.limitintegerqueryDefault20Maximum number of items returned.statusWorkspaceInviteStatus | nullWorkspace invitation status to retrieve.
Request example
curl --request GET \
--url "https://api.callabo.ai/v2/workspaces/your-workspace/invitations" \
--header "Accept: application/json" \
--header "Authorization: Bearer $CALLABO_PAT"Success responses
Response body
itemsRequiredV2Invitation[]Workspace invitations.idRequiredintegerWorkspace invitation ID.emailRequiredstringInvited email address.statusRequiredWorkspaceInviteStatusWorkspace invitation status.invited_by_member_idRequiredintegerIdentifier of the member who sent the invitation.base_roleRequiredBaseWorkspaceRoleDefault workspace role assigned when the invitation is accepted.workspace_rolesRequiredV2WorkspaceRole[]Custom workspace roles assigned when the invitation is accepted.invited_atRequiredstring (date-time)Date and time when the workspace invitation was sent.accepted_atstring (date-time) | nullDate and time when the workspace invitation was accepted.cancelled_atstring (date-time) | nullDate and time when the workspace invitation was canceled.created_atRequiredstring (date-time)Date and time when the workspace invitation was created.updated_atRequiredstring (date-time)Date and time when the workspace invitation was last updated.pageRequiredV2PaginationWorkspace invitation 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,
"email": "developer@example.com",
"status": "pending",
"invited_by_member_id": 1,
"base_role": "workspace_manager",
"workspace_roles": [
{
"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"
}
]
}
],
"invited_at": "2026-08-27T03:00:00Z",
"created_at": "2026-08-27T03:00:00Z",
"updated_at": "2026-08-27T03:00:00Z"
}
],
"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}/invitations/{invitation_id}Workspace invitation details view
Retrieve workspace invitation details and current status.
Parameters
invitation_idRequiredintegerpathWorkspace invitation ID.slugRequiredstringpathWorkspace slug
Request example
curl --request GET \
--url "https://api.callabo.ai/v2/workspaces/your-workspace/invitations/1" \
--header "Accept: application/json" \
--header "Authorization: Bearer $CALLABO_PAT"Success responses
Response body
idRequiredintegerWorkspace invitation ID.emailRequiredstringInvited email address.statusRequiredWorkspaceInviteStatusWorkspace invitation status.invited_by_member_idRequiredintegerIdentifier of the member who sent the invitation.base_roleRequiredBaseWorkspaceRoleDefault workspace role assigned when the invitation is accepted.workspace_rolesRequiredV2WorkspaceRole[]Custom workspace roles assigned when the invitation is accepted.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.invited_atRequiredstring (date-time)Date and time when the workspace invitation was sent.accepted_atstring (date-time) | nullDate and time when the workspace invitation was accepted.cancelled_atstring (date-time) | nullDate and time when the workspace invitation was canceled.created_atRequiredstring (date-time)Date and time when the workspace invitation was created.updated_atRequiredstring (date-time)Date and time when the workspace invitation was last updated.
Response example
{
"id": 1,
"email": "developer@example.com",
"status": "pending",
"invited_by_member_id": 1,
"base_role": "workspace_manager",
"workspace_roles": [
{
"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"
}
]
}
],
"invited_at": "2026-08-27T03:00:00Z",
"created_at": "2026-08-27T03:00:00Z",
"updated_at": "2026-08-27T03:00:00Z"
}Errors
| Status | Error code | Description |
|---|---|---|
| 401 | UNAUTHORIZED | Unauthenticated request |
| 403 | FORBIDDEN | Insufficient requester permissions |
| 404 | INVITATION_NOT_FOUND | Not found |
| 422 | VALIDATION_ERROR | Unprocessable content |
| 429 | RATE_LIMIT_EXCEEDED | Request limit exceededLearn more |