Talkif Docs
Platform

Real-Time Events

Server-Sent Events (SSE) for live dashboard updates and call tracking.

Talkif uses Server-Sent Events (SSE) to push updates to the dashboard in real-time. No polling — all changes appear instantly.

Event types

EventDescription
call-createdNew call initiated — payload is the full call object
call-statusCall status changed — minimal payload (call ID, status, direction, phones)
call-endedCall reached terminal state — includes end_reason
call-recording-statusCall recording status changed
balance-updatedCredit balance changed
payment-requiredPayment action needed (e.g. insufficient balance)
notificationNew notification
campaign-status-changedCampaign state changed
campaign-progressCampaign progress updated
schedule-status-changedSchedule state changed
schedule-executedScheduled call executed
data-export-statusData export status changed

Call event payloads

call-created events carry the full call response object. call-status carries a minimal status update with the call ID, status, direction, source, and phone numbers.

call-ended includes additional fields for diagnostics:

FieldTypeDescription
end_reasonstring | nullWhy the call ended — see end reasons
failure_codestring | nullTechnical failure category (only when call failed)
failure_reasonstring | nullHuman-readable failure description
durationnumberCall duration in seconds
costnumberCall cost in USD
recording_urlstring | nullRecording URL (if recorded)

Call stream events

Subscribe to a specific call to receive real-time stream events. These require an explicit subscription via POST /calls/{callId}/subscribe.

EventDescription
call-transcriptNew transcript segment
call-interimInterim (partial) transcript
call-ttsText-to-speech audio generated
call-tts-wordTTS word timing marker
call-speechSpeech audio segment
call-turnConversation turn completed
call-node-transitionFlow node transition
call-recordingRecording status update
call-errorError during the call

Unsubscribe with POST /calls/{callId}/unsubscribe when no longer needed.

Connecting

SSE connections use ticket-based authentication:

  1. Request a ticket: POST /api/v1/auth/sse-ticket
  2. Connect: GET /api/v1/sse/connect?ticket={ticket}

The ticket is single-use. On connection, you receive a connected event with your clientId — use this for subscription management. The server sends a keep-alive every 15 seconds.

The server may also send shutdown (with reconnect: true) during graceful restarts, and lag-warning if your client falls behind.

What updates live

  • Call status — ringing, in-progress, completed, failed
  • Active call count — current number of concurrent calls
  • Credit balance — updates in real-time during calls
  • Notifications — appear instantly in the notification panel
  • Campaign progress — contact completion and state changes

The dashboard maintains a persistent SSE connection. If the connection drops, it automatically reconnects.

On this page