List All Calls
Get a paginated list of all calls across campaigns for the authenticated user.
/api/v1/callscampaignId query parameter to filter calls to a specific campaign.Authorization
| Parameter | Type | Description |
|---|---|---|
x-api-keyrequired | string | Your API key Example: |
Query Parameters
| Parameter | Type | Description |
|---|---|---|
page | number | Page number for pagination Default: |
pageSize | number | Number of items per page (max 100) Default: |
status | string | Filter by call status (queued, completed, failed, cancelled, in-progress) |
campaignId | string | Filter calls to a specific campaign |
direction | string | Filter by call direction (outbound, inbound) |
dateFrom | string | Filter calls created on or after this date (ISO 8601) |
dateTo | string | Filter calls created on or before this date (ISO 8601) |
minDuration | number | Minimum call duration in seconds |
maxDuration | number | Maximum call duration in seconds |
search | string | Search by contact name or phone number |
Responses
{"data": {"calls": [{"id": "5bbdd475-38f6-4211-9361-de482d105b8c","campaignId": "357b188c-c618-4f95-84b1-cbe26b8ce3e0","phoneNumber": "+15551234567","calleeName": "Dr. John Smith","status": "completed","direction": "outbound","duration": 245,"createdAt": "2024-01-20T10:30:00Z","endedAt": "2024-01-20T10:34:05Z"}],"pagination": {"page": 1,"pageSize": 50,"total": 150,"totalPages": 3},"summary": {"total": 150,"completed": 120,"failed": 10,"active": 5,"queued": 15}}}
curl -X GET "https://voice.evryhealth.com/api/v1/calls" \-H "x-api-key: YOUR_API_KEY"
{"data": {"calls": [{"id": "5bbdd475-38f6-4211-9361-de482d105b8c","campaignId": "357b188c-c618-4f95-84b1-cbe26b8ce3e0","phoneNumber": "+15551234567","calleeName": "Dr. John Smith","status": "completed","direction": "outbound","duration": 245,"createdAt": "2024-01-20T10:30:00Z","endedAt": "2024-01-20T10:34:05Z"}],"pagination": {"page": 1,"pageSize": 50,"total": 150,"totalPages": 3},"summary": {"total": 150,"completed": 120,"failed": 10,"active": 5,"queued": 15}}}
Additional Endpoints
List Campaign Calls
/api/v1/campaigns/{id}/callsGet a paginated list of calls for a specific campaign. Supports the same query parameters as List All Calls (except campaignId).
Queue Calls
/api/v1/campaigns/{id}/callsQueue calls for specific contacts or all pending contacts in a campaign.
// Queue specific contacts{"contactIds": ["contact_abc123","contact_def456"],"priority": 5,"scheduledFor": "2024-01-21T09:00:00Z"}// Or queue all pending contacts{"queueAllPending": true,"priority": 3}
Queue Options
| Field | Type | Description |
|---|---|---|
contactIds | string[] | Specific contact IDs to call |
queueAllPending | boolean | Queue all contacts with pending status |
priority | number | Priority 1-10 (higher = more urgent) |
scheduledFor | string | ISO date string for scheduled calls |
Get Call Details
/api/v1/calls/{callId}Get detailed information about a specific call including a natural-language summary and the full analysis breakdown.
// Response{"data": {"id": "5bbdd475-38f6-4211-9361-de482d105b8c","campaignId": "357b188c-c618-4f95-84b1-cbe26b8ce3e0","phoneNumber": "+15551234567","calleeName": "Dr. John Smith","direction": "outbound","status": "completed","duration": 245,"summary": "The agent reached Dr. Smith and successfully scheduled an annual review appointment for next Tuesday...","analysis": {"analyzedAt": "2024-01-20T10:35:00Z","sentiment": {"overallSentiment": "positive","confidence": 0.85,"summary": "The conversation was friendly and productive.","emotionalTone": { "caller": "professional", "recipient": "cooperative" },"communicationQuality": { "clarity": 8, "effectiveness": 9, "rapport": 8 }},"humanContact": {"reachedHuman": true,"confidence": 0.98,"reachedVoicemail": false,"leftMessage": false},"objectives": {"schedule_appointment": {"status": "True","confidence": 0.95,"reasoning": "Appointment confirmed for next Tuesday"}},"callback": {"callbackRequested": false,"humanTransferRequested": false,"urgency": "low","summary": "No callback requested.","confidence": 0.99},"doNotCall": { "requested": false, "confidence": 0.99, "requestType": "none" },"legal": { "threatened": false, "confidence": 0.99, "threatType": "none", "severity": null },"crisis": { "detected": false, "confidence": 0.99, "severity": null, "indicatorType": "none" },"resolution": {"resolved": true,"resolutionType": "full","escalated": false,"followUpRequired": false,"confidence": 0.95,"summary": "Appointment successfully scheduled."}},"createdAt": "2024-01-20T10:30:00Z","endedAt": "2024-01-20T10:34:05Z"}}
summary field is a natural-language description of the conversation and is only available on the single call detail endpoint, not in list responses.Call Statuses
| Status | Description |
|---|---|
queued | Call is waiting to be initiated |
initiated | Call has been started |
ringing | Phone is ringing |
in_progress | Call is active |
completed | Call finished successfully |
failed | Call could not be completed |
cancelled | Call was cancelled before completion |
Call Analysis
Completed calls include AI-powered analysis. The analysis object contains the following fields:
| Field | Description |
|---|---|
sentiment | Sentiment analysis with overall sentiment, key moments, emotional tone, communication quality scores, summary text, and recommendations |
objectives | Campaign objective outcomes keyed by objective ID, with status (True/False/Unknown), sub-objectives, reasoning, and confidence |
humanContact | Whether a human was reached, with voicemail detection and message delivery tracking |
callback | Callback and human transfer requests with urgency, preferred contact method, timeframe, reason, and summary |
doNotCall | Do-not-call request detection with request type (explicit/implicit) and confidence |
legal | Legal threat detection with threat type (lawsuit, lawyer, regulatory) and severity |
crisis | Crisis/distress detection with severity, indicator type, and recommended action |
ivr | IVR navigation analysis: whether IVR was encountered, stuck detection, escape status, and navigation path |
informationUpdates | Contact information corrections detected during the call (field, original value, corrected value) |
communicationPromises | Promises made to send documents, follow up, or communicate via email/text/fax |
callerIntent | Inbound call intent analysis with primary intent, urgency, keywords, and summary |
resolution | Call resolution status (full/partial/unresolved), escalation tracking, follow-up requirements, and summary |
Get Call Transcript
/api/v1/calls/{callId}/transcriptGet the full conversation transcript for a call. Messages are returned in chronological order with role labels.
// Response{"data": {"callId": "5bbdd475-38f6-4211-9361-de482d105b8c","messages": [{"role": "agent","text": "Hello, this is Sarah from Acme Health. Am I speaking with Dr. Smith?","ordinal": 0},{"role": "user","text": "Yes, this is Dr. Smith. How can I help you?","ordinal": 1},{"role": "agent","text": "I'm calling to schedule your annual review. Would next Tuesday work?","ordinal": 2}],"messageCount": 3,"duration": 245}}
messages array will be empty.Get Call Recording
/api/v1/calls/{callId}/recordingGet recording metadata for a call. Includes recording duration, status, and a link to download the audio.
// Response{"data": {"callId": "5bbdd475-38f6-4211-9361-de482d105b8c","recordings": [{"sid": "RE1234567890abcdef","duration": 245,"status": "completed","createdAt": "2024-01-20T10:30:00Z"}],"recordingCount": 1,"audioUrl": "/api/v1/calls/5bbdd475-38f6-4211-9361-de482d105b8c/recording/audio"}}
recordings array will be empty.Download Call Recording Audio
/api/v1/calls/{callId}/recording/audioDownload the recording audio file. Returns the audio stream directly with appropriate content headers.
| Parameter | Type | Description |
|---|---|---|
format | string | Audio format: mp3 (default) or wav |
recordingSid | string | Specific recording SID (uses first recording if omitted) |
# Download as MP3curl -H "x-api-key: YOUR_API_KEY" \/api/v1/calls/{callId}/recording/audio \--output recording.mp3# Download as WAVcurl -H "x-api-key: YOUR_API_KEY" \"/api/v1/calls/{callId}/recording/audio?format=wav" \--output recording.wav
Cancel Call
/api/v1/calls/{callId}/cancelCancel a queued or scheduled call. Calls that are already in progress cannot be cancelled.
queued can be cancelled. Calls that have already been initiated will complete normally.