Skip to content

Teams

The Teams API allows you to create and manage teams for organizing agents and routing chat transfers. Teams enable intelligent chat distribution based on assignment strategies.

Get all teams accessible to the current user.

Terminal window
GET /api/teams
ParameterTypeDescription
searchstringFilter by team name (case-insensitive)
pageintegerPage number for pagination (default: 1)
limitintegerItems per page (default: 50)
{
"status": "success",
"data": {
"teams": [
{
"id": "uuid",
"name": "Sales Team",
"description": "Handles sales inquiries",
"assignment_strategy": "round_robin",
"per_agent_timeout_secs": 30,
"is_active": true,
"member_count": 5,
"created_by_id": "uuid",
"created_by_name": "Admin User",
"created_at": "2024-01-01T12:00:00Z",
"updated_at": "2024-01-01T12:00:00Z"
}
],
"total": 1,
"page": 1,
"limit": 50
}
}

Get details of a specific team.

Terminal window
GET /api/teams/{id}
{
"status": "success",
"data": {
"team": {
"id": "uuid",
"name": "Sales Team",
"description": "Handles sales inquiries",
"assignment_strategy": "round_robin",
"per_agent_timeout_secs": 30,
"is_active": true,
"member_count": 5,
"members": [
{
"id": "uuid",
"user_id": "uuid",
"full_name": "John Doe",
"email": "john@example.com",
"role": "agent",
"is_available": true,
"last_assigned_at": "2024-01-01T12:00:00Z"
}
],
"created_by_id": "uuid",
"created_by_name": "Admin User",
"created_at": "2024-01-01T12:00:00Z",
"updated_at": "2024-01-01T12:00:00Z"
}
}
}

Create a new team. Requires admin role.

Terminal window
POST /api/teams
{
"name": "Support Team",
"description": "Handles customer support inquiries",
"assignment_strategy": "load_balanced",
"per_agent_timeout_secs": 30,
"is_active": true
}
StrategyDescription
round_robinDistributes transfers evenly across available agents in order
load_balancedAssigns to the agent with the fewest active transfers
manualTransfers go to team queue for agents to manually pick
{
"status": "success",
"data": {
"team": {
"id": "uuid",
"name": "Support Team",
"description": "Handles customer support inquiries",
"assignment_strategy": "load_balanced",
"per_agent_timeout_secs": 30,
"is_active": true,
"member_count": 0,
"created_by_id": "uuid",
"created_by_name": "Admin User",
"created_at": "2024-01-01T12:00:00Z"
}
}
}

Update team settings. Requires admin role or team manager role.

Terminal window
PUT /api/teams/{id}
{
"name": "Support Team",
"description": "Updated description",
"assignment_strategy": "manual",
"per_agent_timeout_secs": 45,
"is_active": true
}

Delete a team. Requires admin role.

Terminal window
DELETE /api/teams/{id}

Get all members of a team.

Terminal window
GET /api/teams/{id}/members
{
"status": "success",
"data": {
"members": [
{
"id": "uuid",
"user_id": "uuid",
"full_name": "John Doe",
"email": "john@example.com",
"role": "agent",
"is_available": true,
"last_assigned_at": "2024-01-01T12:00:00Z"
}
]
}
}
RolePermissions
managerCan manage team settings and members, view all team transfers
agentCan pick and handle transfers from the team queue

Add a user to a team. Requires admin role or team manager role.

Terminal window
POST /api/teams/{id}/members
{
"user_id": "uuid",
"role": "agent"
}
{
"status": "success",
"data": {
"member": {
"id": "uuid",
"user_id": "uuid",
"full_name": "Jane Smith",
"email": "jane@example.com",
"role": "agent",
"is_available": true
}
}
}

Remove a user from a team. Requires admin role or team manager role.

Terminal window
DELETE /api/teams/{id}/members/{user_id}

When creating transfers via flows or the API, you can specify a team:

Terminal window
POST /api/chatbot/transfers
{
"contact_id": "uuid",
"team_id": "uuid",
"notes": "Customer needs help with order #12345"
}

When a transfer is created with a team_id:

  1. The team’s assignment strategy is applied
  2. For round_robin or load_balanced, the transfer is auto-assigned to an available team member
  3. For manual, the transfer goes to the team queue

The list transfers endpoint returns queue counts per team:

Terminal window
GET /api/chatbot/transfers?status=active
{
"status": "success",
"data": {
"transfers": [...],
"general_queue_count": 3,
"team_queue_counts": {
"team-uuid-1": 5,
"team-uuid-2": 2
}
}
}