Your First CXML Application in 5 Minutes
2026-07-26 · The Cloudonix Team
One of our favorite moments is watching a developer's reaction when they realize their first Cloudonix voice application is just... an XML document. No SDK installation ceremony, no framework boilerplate. Let's prove it.
What is CXML?
CXML — the Cloudonix Markup Language — is a small set of XML verbs that describe what should happen on a call. You can serve it from a remote webhook or from a Cloudonix Container Application, and it drives everything from simple call routing to full conversational IVRs.
Here's a complete, working voice application:
<?xml version="1.0"?>
<Response>
<Say voice="Polly.Joanna">
Hello! Thanks for calling. Connecting you now.
</Say>
<Dial callerId="+12025551234">
<Service provider="retell">my-agent-id</Service>
</Dial>
</Response>
Three lines of actual logic: greet the caller with text-to-speech, then connect them to your AI voice agent. That's it.
Leveling up: dynamic routing with container apps
When static XML isn't enough, container apps let you write routing logic in JavaScript — think AWS Lambda, but sitting right next to the telephony network:
exports.handler = async (event) => {
const from = event.parameters.From;
const isVip = from.startsWith('+1415'); // your logic here
return `<?xml version="1.0"?>
<Response>
<Dial callerId="${from}">
<Number>${isVip ? '+12025550001' : '+12025550002'}</Number>
</Dial>
</Response>`;
};
Every call event arrives with full session data and SIP headers, so your routing decisions can be as simple or as clever as you need.
Where to go next
- Create your free account — no credit card required
- Follow the Start Here guide in the developer portal
- Join the community Discord and show us what you built
The best part of CXML isn't that it's simple. It's that simple things stay simple as you grow — and the complicated things become merely possible instead of impossible.