Skip to main content
Calls are read-only from the API — they are created by the dialer engine when a campaign is running. Use these endpoints to fetch call details, timing, dispositions, and AI analysis results.

Get a call

curl https://api.yotel.in/api/v1/calls/{call_id} \
  -H "Authorization: Bearer yt_live_YOUR_KEY"
Scope: calls:read  |  Status: 200 OK

Response fields

FieldTypeDescription
idstringCall UUID
campaign_idstring | nullCampaign this call belongs to
lead_idstring | nullLead that was dialed
agent_idstring | nullAgent who handled the call (null for voice-agent-only calls)
fs_uuidstringFreeSWITCH channel UUID
directionstring"outbound" or "inbound"
statusstring"dialing", "ringing", "answered", "agent_connected", "completed", "failed"
dial_timestring | nullISO 8601 timestamp when the call was originated
ring_timestring | nullWhen the remote party started ringing
answer_timestring | nullWhen the remote party answered
agent_connect_timestring | nullWhen the call was bridged to a human agent
end_timestring | nullWhen the call ended
ring_duration_sinteger | nullSeconds from ring to answer
talk_duration_sinteger | nullSeconds from answer to hangup
total_duration_sinteger | nullSeconds from dial to hangup
hangup_causestring | nullFreeSWITCH hangup cause (e.g., "NORMAL_CLEARING", "NO_ANSWER")
has_recordingbooleanWhether a recording exists
recording_urlstring | nullSigned URL (available after call.recording_ready webhook)
dispositionstring | nullAgent- or AI-set disposition code
notesstring | nullAgent notes
ai_summarystring | nullGemini-generated call summary
ai_sentimentstring | nullDetected sentiment ("positive", "negative", "neutral")
ai_next_actionstring | nullSuggested follow-up action

List calls for a campaign

Returns a paginated list of calls for a specific campaign.
curl "https://api.yotel.in/api/v1/campaigns/{campaign_id}/calls?page=1&page_size=50" \
  -H "Authorization: Bearer yt_live_YOUR_KEY"
Scope: calls:read  |  Status: 200 OK

Query parameters

ParameterTypeDefaultDescription
pageinteger1Page number (1-indexed)
page_sizeinteger25Results per page (1–200)
statusstringFilter by call status
dispositionstringFilter by disposition code

Response

{
  "items": [ /* CallDetail objects */ ],
  "total": 1247,
  "page": 1,
  "page_size": 50
}

Errors

StatusCondition
404Call or campaign not found, or belongs to another tenant