Call Intelligence

Who was speaking, how the call sounded, and what we learned about them.

Three analyzers run over a call and produce three different kinds of answer. Speaker recognition says whether the voice on the line is one we have heard before on this number. Voice insights describe how the call sounded (tone, talk-over, hold, line quality) rather than what was said. Profiles are what reading the transcript taught us about the people involved, kept as evidence and resolved rather than overwritten. Each runs during the call and again over the recording afterwards, so the same endpoint answers during and after.

Call intelligence#

Everything the analyzers found on one finished call, in a single read. A section is null when its analyzer is switched off for the organization or has not finished.

GET/api/v1/calls/{callId}/intelligence

Path parameters

callIdstringrequired
Platform call id.

Responses

The call's intelligence.

curl -X GET "https://voice.evryhealth.com/api/v1/calls/{callId}/intelligence" \
-H "Authorization: Bearer YOUR_API_KEY"
Response200
{
"data": {
"callId": "5f1c…",
"engine": "realtime",
"status": "completed",
"speakers": [
{
"voiceprintId": "9ab2…",
"status": "returning",
"displayName": "Maria",
"normalizedScore": 4.21,
"threshold": 3.616,
"priorCallCount": 3,
"previousCallAt": "2026-09-02T16:41:09.000Z"
}
],
"voice": {
"source": "recording",
"summary": {
"callerTone": "tense",
"callerTalkShare": 0.38,
"agentSlowReplies": 2,
"longestSilenceSeconds": 7.4
}
},
"profiles": {
"status": "done",
"people": [
{
"id": "1c7d…",
"displayName": "Maria Alvarez",
"callCount": 4
}
],
"place": {
"id": "bb01…",
"displayName": "Riverside Family Practice"
}
}
},
"meta": {
"requestId": "req_8f21…"
}
}

Live intelligence#

What the analyzers know about a call that is still running, read from the same place the live agent's own tools read. A finished call answers with nulls here and its full record from the endpoint above.

GET/api/v1/calls/{callId}/intelligence/live

Path parameters

callIdstringrequired
Platform call id.

Responses

The current snapshot.

curl -X GET "https://voice.evryhealth.com/api/v1/calls/{callId}/intelligence/live" \
-H "Authorization: Bearer YOUR_API_KEY"
Response200
{
"data": {
"callId": "5f1c…",
"live": true,
"speaker": {
"known": true,
"name": "Maria",
"timesSpokenBefore": 3,
"lastSpokeAt": "2026-09-02T16:41:09.000Z"
},
"voice": {
"live": true,
"updatedAt": "2026-09-15T14:02:11.412Z",
"summary": {
"callerTone": "tense",
"voicemail": false
}
}
},
"meta": {
"requestId": "req_…"
}
}

List people#

Everyone the organization has spoken to, most recently heard first. People are built from calls rather than from a contact list.

GET/api/v1/people

Query parameters

searchstring
Match on the resolved name.
limitnumber
Up to 200.
Default50
cursorstring
From meta.pagination.nextCursor.

Responses

A page of people.

curl -X GET "https://voice.evryhealth.com/api/v1/people" \
-H "Authorization: Bearer YOUR_API_KEY"
Response200
{
"data": {
"people": [
{
"type": "person",
"id": "1c7d…",
"displayName": "Maria Alvarez",
"callCount": 4,
"lastSeenAt": "2026-09-15T14:02:11.000Z"
}
]
},
"meta": {
"requestId": "req_…",
"pagination": {
"nextCursor": null,
"limit": 50
}
}
}

Get a person#

Every attribute held about one person, with the confidence and the number of independent observations behind it, plus the people they work with.

GET/api/v1/people/{personId}

Path parameters

personIdstringrequired
Person id.

Responses

The person.

curl -X GET "https://voice.evryhealth.com/api/v1/people/{personId}" \
-H "Authorization: Bearer YOUR_API_KEY"
Response200
{
"data": {
"person": {
"type": "person",
"id": "1c7d…",
"displayName": "Maria Alvarez",
"callCount": 4,
"facts": [
{
"attribute": "role",
"value": "Practice manager",
"isCurrent": true,
"confidence": 0.82,
"supportCount": 3,
"sources": [
"transcript",
"contact"
]
}
],
"relations": [
{
"relation": "works_at",
"direction": "out",
"otherType": "place",
"otherName": "Riverside Family Practice"
}
]
},
"colleagues": [
{
"id": "77aa…",
"displayName": "Dan Whitfield"
}
]
},
"meta": {
"requestId": "req_…"
}
}

List places#

The far ends of the numbers called: a practice, a household, a person's own line. Places are what tie people together.

GET/api/v1/places

Query parameters

searchstring
Match on the resolved name.
limitnumber
Up to 200.
Default50
cursorstring
From meta.pagination.nextCursor.

Responses

A page of places.

curl -X GET "https://voice.evryhealth.com/api/v1/places" \
-H "Authorization: Bearer YOUR_API_KEY"
Response200
{
"data": {
"places": [
{
"type": "place",
"id": "bb01…",
"displayName": "Riverside Family Practice",
"phoneKey": "+15125550147",
"kind": "business",
"callCount": 12
}
]
},
"meta": {
"requestId": "req_…",
"pagination": {
"nextCursor": null,
"limit": 50
}
}
}

Get a place#

One place and the people reached there.

GET/api/v1/places/{placeId}

Path parameters

placeIdstringrequired
Place id.

Responses

The place.

curl -X GET "https://voice.evryhealth.com/api/v1/places/{placeId}" \
-H "Authorization: Bearer YOUR_API_KEY"
Response200
{
"data": {
"place": {
"type": "place",
"id": "bb01…",
"displayName": "Riverside Family Practice"
},
"people": [
{
"id": "1c7d…",
"name": "Maria Alvarez"
}
]
},
"meta": {
"requestId": "req_…"
}
}

Voice history#

Every call one recognized voice has been heard on. The embedding itself is never served: it is the biometric identifier, and a copy of it is only useful for identifying someone somewhere else.

GET/api/v1/voiceprints/{voiceprintId}

Path parameters

voiceprintIdstringrequired
Voiceprint id.

Responses

The calls this voice was heard on.

curl -X GET "https://voice.evryhealth.com/api/v1/voiceprints/{voiceprintId}" \
-H "Authorization: Bearer YOUR_API_KEY"
Response200
{
"data": {
"history": [
{
"callId": "5f1c…",
"decidedAt": "2026-09-15T14:02:11.000Z",
"status": "returning"
}
]
},
"meta": {
"requestId": "req_…"
}
}

Erase a voice#

Delete the voice and every embedding taken from it. A real delete rather than a flag, because this is how an erasure request is serviced. The call-level match rows remain: they record that a recognition happened and carry no biometric content once the vectors are destroyed.

DELETE/api/v1/voiceprints/{voiceprintId}

Path parameters

voiceprintIdstringrequired
Voiceprint id.

Responses

Erased.

curl -X DELETE "https://voice.evryhealth.com/api/v1/voiceprints/{voiceprintId}" \
-H "Authorization: Bearer YOUR_API_KEY"
Response200
{
"data": {
"erased": true
},
"meta": {
"requestId": "req_…"
}
}