MCP is live.Set up
OmniDimension

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 needUse
Live conversation with a callerDispatch a call; voice streaming is built in
Live conversation on your websiteEmbed the web voice widget
Watch active calls as they happenLive call monitoring in the dashboard
Call results pushed to your systemPost-call webhook (or Email, Salesforce, Slack, HubSpot, WhatsApp Cloud)
Campaign progress for a dashboardBulk call live-status polling
Individual call details after the factCall logs API
Platform availabilitystatus.omnidim.io, JSON at /api/status-page/heartbeat/all

On this page