API Reference

Base URL: https://client.routeon.io/api/v1. All requests are made over HTTPS.

Explore the API interactively in the hosted Swagger UI: https://client.routeon.io/api/v1/swagger-ui/index.html.

The SMS service spans three API contracts. Each is also published as a Swagger 2.0 document you can open in any OpenAPI/Swagger viewer:

Contract File Purpose
Single messages & OTP openapi.yaml Send transactional messages and OTP, read channels/senders/balance/EDRs
Campaigns & templates broadcast.yaml Bulk SMS campaigns and their templates
Contacts recipients.yaml Recipients, attributes, tags and filters

Authentication

Send your API key in the X-API-Key header:

X-API-Key: <API_KEY>

Create keys in the Client portal under API Accesses, scoped to omni-api, Broadcasts and/or Recipients. A key works only for the scopes selected on it — see API keys & scopes. The single-message API also accepts HTTP Basic Auth as a legacy option.

Response envelope

Most responses wrap the result in a standard envelope:

{ "error": false, "data": { "channel": 1, "transactionId": "95e3e0da-…", "messageId": "6719b5f4-…" } }

Errors set error: true and carry a message plus a request id:

{ "error": true, "data": { "message": "something went wrong", "requestId": "af8c5065-5849-455b-ae1a-6a0b9f4b7209" } }

Always log data.requestId — it is the handle support uses to find your request.

HTTP status codes

Code When
200 GET endpoints, verification and revoke
202 Send accepted; processing is asynchronous (status arrives via webhooks)
400 Validation failed, unknown channel, malformed payload
401 Missing/invalid credentials or wrong scope
404 Unknown messageId, or a sender/template not visible to this account
500 Platform-side error — retry with backoff

Channel-level failures surface after the 202, via the messageStatus webhook (status: failed / undeliverable) and in EDR rows.

Endpoints

Single messages & OTP — openapi.yaml

Method Path Summary
GET /api/v1/channels List available channels
GET /api/v1/senders List senders (status: 2 = Active)
GET /api/v1/balance Account balances per agreement
GET /api/v1/edrs Delivery records (up to 10 messageIds per call, limit ≤ 100)
GET /api/v1/templates Stored content templates
GET /api/v1/wa_templates WhatsApp (Meta-approved) templates
POST /api/v1/messages Send a single message (SMS, OTP, …)
POST /api/v1/omnimessages Send a per-recipient multi-channel fallback cascade
POST /api/v1/messages/verification Check an OTP the user typed (Telegram Gateway)
POST /api/v1/messages/revoke Revoke a verification message

Campaigns & templates — broadcast.yaml

Method Path Summary
POST /api/v1/broadcast/broadcasts Launch a campaign
GET /api/v1/broadcast/templates List templates
POST /api/v1/broadcast/templates Create a template
GET /api/v1/broadcast/templates/{id} Get a template
PUT /api/v1/broadcast/templates/{id} Update a template
DELETE /api/v1/broadcast/templates/{id} Delete a template

Contacts — recipients.yaml

Method Path Summary
GET /api/v1/recipient/recipients List recipients
POST /api/v1/recipient/recipients Create/import recipients
PUT /api/v1/recipient/recipients Update recipients
DELETE /api/v1/recipient/recipients Delete recipients
GET /api/v1/recipient/attributes List attributes
POST /api/v1/recipient/attributes Create an attribute
GET /api/v1/recipient/attributes/types List attribute types
PUT /api/v1/recipient/attributes/{id} Update an attribute
DELETE /api/v1/recipient/attributes/{id} Delete an attribute
GET /api/v1/recipient/filters List audience filters
GET /api/v1/recipient/tags List tags