Register a Sender ID
Goal: get your own SMS Sender ID (the name or number recipients see as the message sender) approved and in Active status, so you can send under your brand instead of the generic default.
Prerequisites:
- Access to the Client portal at https://client.routeon.io/.
- An API key with the
omni-apiscope (to check sender status via the API).
You do not need a registered Sender ID for a first test send — without one, a generic default sender is used. Register your own sender for production and branded traffic.
Steps
1. Create the sender in the portal
- Log in to the Client portal and open Assets → Sender IDs.
- Create a new sender and submit it for approval.
2. Wait for approval
Approval times vary by country and operator — start this step early, before you plan to go live. Approval is granted per destination: a sender approved for one country/operator is not automatically usable everywhere.
Also make sure the destination itself is open for your account — the operators you want to reach must be enabled and routed. If in doubt, check with your account manager.
3. Check the sender status via the API
The API exposes a read-only view of your senders. Creation and edits always happen in the portal.
curl -sS -H "X-API-Key: <API_KEY>" "https://client.routeon.io/api/v1/senders"
Expected response:
{
"error": false,
"data": [
{
"senderId": "Routeon",
"displayName": "SMS Sender",
"channel": 1,
"status": 2,
"webhookUrl": ""
}
]
}
Status codes returned in status:
| Code | Status | Can send? | Meaning |
|---|---|---|---|
-1 |
Blocked | No | Blocked by the system owner |
0 |
Draft | No | Saved in the portal but not submitted for approval |
1 |
In tests | Limited | Approved for testing, usually with restricted recipients |
2 |
Active | Yes | Fully approved and operational |
Only a sender with channel: 1 (SMS) and status: 2 (Active) can be used in the senderId field of POST /messages and in broadcast flow steps.
There is no webhook for approval status changes — poll GET /senders (or check the portal) until the sender shows status: 2.
4. Use the sender
Pass the senderId value exactly as returned by GET /senders:
curl -sS -X POST "https://client.routeon.io/api/v1/messages"
-H "X-API-Key: <API_KEY>"
-H "Content-Type: application/json"
-d '{
"contact": "905063565285",
"channel": 1,
"senderId": "Routeon",
"payload": { "text": "First message from our own sender" }
}'
Verify
GET /sendersshows your sender withchannel: 1andstatus: 2.- A test send with that
senderIdreturns202and later reachesmdnStatus: "DELIVRD"inGET /edrs(orstatus: "delivered"in themessageStatuswebhook). - The recipient’s handset shows your Sender ID as the message sender.
Common failures
| Symptom | Cause | Fix |
|---|---|---|
Message accepted (202) but EDR shows mdnStatus: "REJECTD" |
Sender ID not approved or not Active for the destination | Check GET /senders — the sender must be status: 2. Wait for approval or use the generic default sender |
REJECTD even though the sender is Active |
Destination (country/operator) closed for your account, or the sender is not approved for that destination | Confirm with your account manager that the required operator is enabled and routed |
REJECTD on every send |
The API key is missing the required scope, or the sender is not allowed for that key | Verify the key has the omni-api scope and is allowed to use this sender |
404 from POST /messages |
senderId does not exist for your account, or belongs to a different channel |
Use a senderId returned by GET /senders with channel: 1 |
| Sender stuck in a non-Active state for a long time | Approval is pending on the operator side | Approval times vary by country and operator; contact your account manager or support if it stalls |