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 the key's organization can reach.

GET/api/v1/call-centers

Query parameters

ParameterTypeDescription
search
string

Match the name.

status
string

active, inactive or archived.

page
number

Page number.

Default: 1

pageSize
number

Up to 200.

Default: 50

Responses

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

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

ParameterTypeDescription
callCenterIdrequired
string

Call center id.

Query parameters

ParameterTypeDescription
search
string

Match name, email or agent number.

status
string

available, away, on_call, busy or offline.

Responses

{
"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_…"
}
}
Request
curl -X GET "https://voice.evryhealth.com/api/v1/call-centers/{callCenterId}/agents" \
-H "Authorization: Bearer YOUR_API_KEY"

Calls

Queued, live and finished calls, with the timings that make service level answerable: how long the caller waited, talked, and was on hold.

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

Path parameters

ParameterTypeDescription
callCenterIdrequired
string

Call center id.

Query parameters

ParameterTypeDescription
status
string

Filter by status.

agentId
string

Only this agent's calls.

from
string

ISO date lower bound.

to
string

ISO date upper bound.

page
number

Page number.

Default: 1

pageSize
number

Up to 200.

Default: 50

Responses

{
"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
}
}
}
Request
curl -X GET "https://voice.evryhealth.com/api/v1/call-centers/{callCenterId}/calls" \
-H "Authorization: Bearer YOUR_API_KEY"