How call flows are authored today. WaveML is what Wave’s voice engine
executes. Right now, call flows are provisioned for your account (dashboard +
your Wave contact) rather than authored through a public API — a call-flow
authoring API is on the roadmap. This page is the reference for the language
itself, so you know exactly what a flow can do and can spec yours precisely.
The response envelope
When a call needs instructions, the engine sends your flow a request and expects a WaveML document in reply. Verbs run top to bottom; the call ends on<Hangup> or
an empty <Response>.
wave_tenant and its concurrency limit
wave_tenant_cc on the root <Response>. Every verb carries a node_id — a
cursor the engine echoes back on its next request so your flow knows where the
call is. See How voice works for the full request/response loop.
Play
Play an audio file (WAV/MP3 over HTTPS).Say
Speak text with the engine’s text-to-speech. Arabic and English are supported.Gather
Collect DTMF (keypad) input. Nest a<Say> or <Play> inside as the prompt; the
digits the caller presses arrive on the next request as dtmf.
Dial
Bridge the call to another number or SIP user. The dialed party seescallerId.
Enqueue
Place the caller in a call-center queue. Agents ring when they’re logged in — manage them with the Queues API. The queue name is the element’s text; queues are created on demand.Record
Record the call. Because<Enqueue>/<Say> have no inline record attribute, a
standalone <Record background="true"/> arms recording for a call that then flows
into other verbs.
AIAgent
Hand the call to a real-time AI voice agent. Speech-to-text, a language model, and text-to-speech run live, with barge-in. The element’s text is the agent’s persona prompt.<AIAgent> is not terminal. When the conversation ends, the engine comes back
to your flow with this verb’s node_id and an aiagent_result outcome word —
completed, transfer, dnc, or any word your prompt defines — and your flow
decides what happens next:
Pause
Wait silently.Hangup
End the call.Next steps
How voice works
The request/response loop the engine drives.
Queues
Sign agents in and out of
<Enqueue> queues.
