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

  1. Create your free account — no credit card required
  2. Follow the Start Here guide in the developer portal
  3. 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.