POST /v1/call/{run_id}/events, that lets your backend push named events into a live call. A matching event edge transitions the conversation and triggers proactive agent speech, all in under a second.
Configuring an event edge
Add edges withcondition_type: "event" and an event_name. They are ignored during normal speech routing, so they coexist freely with LLM and expression edges on the same node.
Edge field reference
Firing an event
run_idis returned byPOST /callfor outbound calls or arrives in your webhook for inbound calls.- Fire-and-forget. The endpoint returns 202 as soon as the event is published.
propertiesare merged into the agent’scontext_data, so they become available as{variable}substitution in node prompts and asvariablereferences in expression edges.
What happens when an event arrives
How proactive speech stays natural
When an event drives a transition, the agent must speak without the user saying anything. Two design choices make this feel natural rather than scripted:- Event
propertiesare merged intocontext_data, so the new node’spromptcan reference them via{variable}substitution. - The conversation history is not polluted with fake user messages. The agent simply produces a new assistant turn on the new node.
Latency
If a confirmation message never changes, point your event edge at a static node for the fastest possible response.
Worked example: payment confirmation
The agent waits while the user completes a payment on the bank’s website. Your backend firespayment_completed when the gateway confirms.
Graph config (3 nodes)
Backend code
confirmation node is static, so the user hears the confirmation in ~50ms with no LLM call. The payment_failed node uses {error_reason} from the event’s properties to give the user a specific message.
Notes on timing
- Events never interrupt active speech. They are queued until the agent is at a safe point (no audio playing, no response in flight) and processed then.
- If the user is mid-utterance when the event lands, the node transitions but the agent does not speak proactively. The user’s utterance routes on the new node, so the agent’s first words still feel responsive.
- The
run_idis all you need. The same endpoint works regardless of where the call is running.

