Real-time and streaming
How real-time data flows in OmniDimension. Streaming voice on live calls, webhook event delivery for call results, and live status polling for bulk campaigns.
OmniDimension is a real-time product at the voice layer and an event-driven product at the API layer. This page maps each real-time need to the right mechanism.
Streaming voice on live calls
Every call runs on a streaming pipeline: caller audio is streamed to speech-to-text, the LLM response is generated and streamed to text-to-speech, and synthesized audio streams back over the call, with sub-200ms end-to-end latency. The same streaming pipeline powers phone calls, the web voice widget, and WhatsApp voice.
You do not manage this stream yourself. Dispatch a call with the API, SDK, or MCP server and the platform handles the audio streaming.
The same applies to the embeddable web voice widget: it streams audio between the visitor's browser and the agent in real time, and agents can run live web search inside a conversation when enabled, so answers can include current information mid-call.
Live call monitoring
The dashboard streams active calls in real time: watch conversations as they happen across your agents. This is a dashboard surface (backed by a WebSocket service), not a public API; for programmatic visibility into running activity, use the bulk-call live status endpoint below or fetch call logs after completion.
Webhooks: push delivery for call events
For machine-to-machine delivery of call results, use webhooks. When a call completes, OmniDimension POSTs your configured payload to your endpoint: transcript, summary, sentiment, extracted variables, and the recording URL.
- Setup guide: Post-call delivery
- Configure under Post call on your agent: choose Webhook, paste your endpoint URL, and define a custom payload with call variables.
- Test with Webhook.site or RequestBin to inspect real payloads before pointing at production.
Webhooks are the recommended pattern for agents and integrations that need results as soon as a call ends, instead of polling call logs.
Webhook is one of several post-call delivery channels: the same completion event can also be delivered to Email, Salesforce, Slack, HubSpot, or WhatsApp Cloud, configured per agent.
Polling: live status for bulk campaigns
Running campaigns expose a lightweight live status endpoint designed for repeated polling. It returns aggregated counts in one cheap query:
curl https://backend.omnidim.io/api/v1/bulk-call/{bulk_call_id}/live-status \
-H "Authorization: Bearer $OMNIDIM_API_KEY"{
"status": "success",
"bulk_call_id": 42,
"campaign_status": "in_progress",
"summary": {
"total_contacts": 500,
"queued": 120,
"in_progress": 8,
"completed": 350,
"failed": 12,
"busy": 6,
"no_answer": 4
}
}Poll every few seconds while a campaign runs. For individual call results, prefer webhooks over polling call logs.
Server-sent events (SSE)
The REST API does not currently expose SSE or chunked streaming responses; API responses are standard JSON. Real-time delivery is covered by the mechanisms above: streaming voice inside calls, webhook push for call events, and the live-status polling endpoint for campaigns. If your use case needs SSE specifically, contact us.
Service status
Live availability for the API, omnidim.io, SIP infrastructure, and the
MCP server: status.omnidim.io. Agents can
read it as JSON:
https://status.omnidim.io/api/status-page/heartbeat/all (heartbeats
and uptime per service).
Choosing the right mechanism
| You need | Use |
|---|---|
| Live conversation with a caller | Dispatch a call; voice streaming is built in |
| Live conversation on your website | Embed the web voice widget |
| Watch active calls as they happen | Live call monitoring in the dashboard |
| Call results pushed to your system | Post-call webhook (or Email, Salesforce, Slack, HubSpot, WhatsApp Cloud) |
| Campaign progress for a dashboard | Bulk call live-status polling |
| Individual call details after the fact | Call logs API |
| Platform availability | status.omnidim.io, JSON at /api/status-page/heartbeat/all |
