Call centers

The human side: who is staffing, and what they are handling.

Call centers are exposed because the interesting integrations sit across both halves of the platform. A call the AI could not finish is transferred to a person, a ticket raised by an AI call is worked by a person, and a customer's own systems need to see one story rather than two.

Every call here carries callId, the platform call id, which is the same id the AI side uses and the one every Call Intelligence endpoint accepts. That is the join.

List call centers#

Call centers in the key's organization that the key may read. Staffing one or having it shared is not enough on its own: the key's role needs `call_center:read` on it. A page can therefore hold fewer rows than `pageSize`; follow `nextCursor`.

GET/api/v1/call-centers

Query parameters

searchstring
Match the name.
statusstring
active, inactive or archived.
pagenumber
Page number.
Default1
pageSizenumber
Up to 200.
Default50

Responses

A page of call centers.

curl -X GET "https://voice.evryhealth.com/api/v1/call-centers" \
-H "Authorization: Bearer YOUR_API_KEY"
Response200
{
"data": {
"callCenters": [
{
"id": "cc1…",
"name": "Member services",
"status": "active",
"agentCount": 24
}
]
},
"meta": {
"requestId": "req_…",
"pagination": {
"nextCursor": null,
"limit": 50
}
}
}

Agent states#

Who is staffing the call center and what state each is in right now: the read behind a wallboard or a workforce system. Working state, not personnel records.

GET/api/v1/call-centers/{callCenterId}/agents

Path parameters

callCenterIdstringrequired
Call center id.

Query parameters

searchstring
Match name, email or agent number.
statusstring
available, away, on_call, busy or offline.

Responses

The agents.

curl -X GET "https://voice.evryhealth.com/api/v1/call-centers/{callCenterId}/agents" \
-H "Authorization: Bearer YOUR_API_KEY"
Response200
{
"data": {
"agents": [
{
"id": "ag1…",
"agentNumber": 108,
"name": "Dan Whitfield",
"role": "agent",
"status": "on_call",
"statusChangedAt": "2026-09-15T14:01:02.000Z",
"skills": [
"Spanish",
"Claims"
]
}
]
},
"meta": {
"requestId": "req_…"
}
}

Calls#

Queued, live and finished calls, with the timings that make service level answerable: how long the caller waited, talked, and was on hold. A key sees the calls its owner would see in the product: an agent their own calls (and the shared main-line voicemail), a supervisor of some groups those groups' calls, owners, admins and ungrouped supervisors every call.

GET/api/v1/call-centers/{callCenterId}/calls

Path parameters

callCenterIdstringrequired
Call center id.

Query parameters

statusstring
Filter by status.
agentIdstring
Only this agent's calls. An agent-level key only ever sees its owner's own.
groupIdstring
Only calls of this agent group. Must be a group the key's owner can see.
fromstring
ISO date lower bound.
tostring
ISO date upper bound.
pagenumber
Page number.
Default1
pageSizenumber
Up to 200.
Default50

Responses

A page of calls.

curl -X GET "https://voice.evryhealth.com/api/v1/call-centers/{callCenterId}/calls" \
-H "Authorization: Bearer YOUR_API_KEY"
Response200
{
"data": {
"calls": [
{
"id": "ccc1…",
"callId": "5f1c…",
"direction": "inbound",
"status": "completed",
"agentName": "Dan Whitfield",
"waitSeconds": 22,
"talkSeconds": 184,
"holdSeconds": 0
}
],
"total": 128
},
"meta": {
"requestId": "req_…",
"pagination": {
"nextCursor": "2",
"limit": 50
}
}
}