Skip to main content
🤖 LLM Friendly: This page is available in raw Markdown format for LLM consumption:call-supervision.md|Get full documentation:llms.txt/llms-full.txt

Call Supervision

Real-time call supervision for supervisors. These endpoints allow supervisors to monitor, coach, and join active calls handled by agents in teams they supervise.

caution

Supervisor Only

All endpoints on this page require the supervisor role in a team that the call's agent belongs to. See Roles & Permissions for details.

Endpoints

MethodEndpointDescription
POST/call-center/calls/:call_id/listenSilent monitor
POST/call-center/calls/:call_id/whisperCoach agent
POST/call-center/calls/:call_id/bargeJoin as 3-way call
DELETE/call-center/calls/:call_id/supervisionStop supervision

Authentication

All endpoints require Bearer JWT with agent-api audience and supervisor role.

Supervision Modes

ModeSupervisor hearsAgent hears supervisorCaller hears supervisor
Listen
Whisper
Barge

Call Session Token (call_token)

Every successful supervision call (listen, whisper, barge) returns a short-lived call_token (JWT valid for 15 minutes).

This call_token is used by the Client SDK (or WebRTC app) to connect directly to the Signaling Server / WebRTC media stream with zero-latency authentication.

call_token JWT Payload Structure

{
"sub": "supervisor.jane",
"aud": "call-session",
"workspace_id": "ws_123456789",
"call_id": "cl_a1b2c3d4e5f6",
"mode": "listen",
"fs_uuid": "f81d4fae-7dec-11d0-a765-00a0c91e6bf6",
"exp": 1753114200
}
tip

Unified Call Token Architecture The call_token architecture is unified across all call interactions:

  • Participant / Inbound Push: Included in VoIP Push payload data so mobile apps can connect immediately to WebSocket without extra HTTP roundtrips.
  • Supervision: Returned by supervision APIs to authorize WebRTC audio streams (listen, whisper, barge).

Silent Listen

POST /call-center/calls/:call_id/listen

Start silently monitoring an active call. Neither the agent nor the caller will know you are listening.

Path Parameters

ParameterTypeDescription
call_idstringID of the active call

Request

curl -X POST "https://{workspace_id}.firetell.app/api/v1/call-center/calls/cl_a1b2c3d4e5f6/listen" \
-H "Authorization: Bearer YOUR_SUPERVISOR_JWT"

Response 200 OK

{
"call_id": "cl_a1b2c3d4e5f6",
"mode": "listen",
"supervisor": "supervisor.jane",
"status": "supervision_started",
"call_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expires_in": 900
}

Whisper (Coach)

POST /call-center/calls/:call_id/whisper

Start whispering to the agent. The agent can hear you, but the caller cannot. Useful for real-time coaching.

Request

curl -X POST "https://{workspace_id}.firetell.app/api/v1/call-center/calls/cl_a1b2c3d4e5f6/whisper" \
-H "Authorization: Bearer YOUR_SUPERVISOR_JWT"

Response 200 OK

{
"call_id": "cl_a1b2c3d4e5f6",
"mode": "whisper",
"supervisor": "supervisor.jane",
"status": "supervision_started",
"call_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expires_in": 900
}

Barge-in (3-Way Call)

POST /call-center/calls/:call_id/barge

Join the call as a third participant. Both the agent and the caller can hear you.

Request

curl -X POST "https://{workspace_id}.firetell.app/api/v1/call-center/calls/cl_a1b2c3d4e5f6/barge" \
-H "Authorization: Bearer YOUR_SUPERVISOR_JWT"

Response 200 OK

{
"call_id": "cl_a1b2c3d4e5f6",
"mode": "barge",
"supervisor": "supervisor.jane",
"status": "supervision_started",
"call_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expires_in": 900
}

Stop Supervision

DELETE /call-center/calls/:call_id/supervision

Stop any active supervision session on a call.

Request

curl -X DELETE "https://{workspace_id}.firetell.app/api/v1/call-center/calls/cl_a1b2c3d4e5f6/supervision" \
-H "Authorization: Bearer YOUR_SUPERVISOR_JWT"

Response 200 OK

{
"call_id": "cl_a1b2c3d4e5f6",
"supervisor": "supervisor.jane",
"status": "supervision_stopped"
}

Call Transfer

Any active agent can transfer an active call to another agent or department.

POST /call-center/calls/:call_id/transfer

Request Body

FieldTypeRequiredDescription
target_usernamestringUsername of the target agent to receive the transfer
team_idstringOptional target team ID (auto-detected if omitted)

Request

curl -X POST "https://{workspace_id}.firetell.app/api/v1/call-center/calls/cl_a1b2c3d4e5f6/transfer" \
-H "Authorization: Bearer YOUR_AGENT_JWT" \
-H "Content-Type: application/json" \
-d '{
"target_username": "agent.bob"
}'

Response 200 OK

{
"call_id": "cl_a1b2c3d4e5f6",
"status": "transfer_initiated",
"from_agent_id": "ag_original123",
"to_agent": {
"id": "ag_target456",
"username": "agent.bob"
},
"transferred_by": "agent.jane"
}

Error Responses

StatusDescription
400Target agent not found, not in specified team, or not available
404Call not found or not active
tip

The target agent must have available presence state to receive a transfer. Check agent states first using GET /call-center/teams/:team_id/agents/states.

Error Responses

StatusDescription
403Not a supervisor, or call agent is not in a supervised team
404Call not found or not active