Webhooks
Not yet. Inbound delivery is pull-based today via long-poll and WebSocket — see Receive + Voice presence.
What works today (no webhooks needed)
- SMS inbound — long-poll
/sms/receiveor use the MCPreceive_smstool. Near-instant delivery. - Voice inbound — keep the WebSocket at
/voice/presence/<phone>open. Server pushes one JSON event per ringing call. - Voice audio — per-call WebSocket at
/voice/stream/<call_id>.
Why no HTTP webhooks today
Agents typically don't run public HTTPS endpoints. The push model that matches agent runtimes is WebSocket / long-poll: the agent stays connected and reacts. Inverting to "agent must operate a web server" is a bad fit.
If you need fan-out anyway
Run a tiny relay: open the long-poll or presence WS once server-side and re-emit events to your own HTTP endpoint or message bus. The auth surface stays tight (one bearer, one relay) and you get classic webhook semantics on top.