Sender-ID Registration
An alphanumeric Sender ID is a short brand name (for example
MyBrand) that appears as the “from” on an SMS instead of a phone
number. Many countries require you to register a Sender ID with
the local regulator or carriers before traffic using it will be
delivered — and some block unregistered alphanumeric senders outright.
Orbit lets you record your Sender-ID registrations per country, attach
the supporting KYC documents, and track each country’s approval
status. Send-time gates then enforce that traffic only flows where a
Sender ID is approved.
All endpoints below are rooted at
https://api.orbit.devotel.io/api/v1/compliance.
Registering a Sender ID in Orbit submits it into our compliance
workflow; final approval is granted by the regulator/carrier in
each country, not instantly by the platform. Plan lead time —
some markets take days to weeks.
| Rule | Value |
|---|
| Length | 3–11 characters |
| Allowed characters | letters, digits, space, hyphen (-), underscore (_) |
The 11-character ceiling is the GSM 7-bit hard limit; regulators such
as ANATEL (Brazil), OFCOM (UK), AGCOM (Italy), and BTRC (Bangladesh)
reject Sender IDs shorter than 3 characters.
Register or update a Sender ID
POST /compliance/sender-id-registrations (admin/owner) submits a
Sender ID for one or more countries. Each country entry references
pre-uploaded compliance documents by their doc_… IDs — you do not
upload files here.
curl -X POST https://api.orbit.devotel.io/api/v1/compliance/sender-id-registrations \
-H "Authorization: Bearer $ORBIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"sender_id": "MyBrand",
"countries": [
{
"country": "BR",
"document_refs": ["doc_abc123def456"],
"notes": "Retail brand, transactional + OTP use case"
}
]
}'
| Field | Type | Notes |
|---|
sender_id | string | 3–11 chars, see format rules above. |
countries | array | 1–20 entries. |
countries[].country | string | ISO-3166-1 alpha-2 (uppercase). |
countries[].document_refs | string[] | 1–20 IDs of the form doc_… referencing previously uploaded KYC documents. |
countries[].registration_provider_id | string | Optional downstream/provider reference (≤ 200). |
countries[].notes | string | Optional free text, e.g. use case (≤ 2000). |
Returns the registration view with each country’s status:
{
"data": {
"id": "sidreg_xyz",
"sender_id": "MyBrand",
"countries": [
{
"country": "BR",
"status": "pending",
"document_refs": ["doc_abc123def456"],
"registered_at": null,
"expires_at": null,
"registration_provider_id": null,
"notes": "Retail brand, transactional + OTP use case"
}
]
},
"meta": { "request_id": "…", "timestamp": "2026-06-08T12:00:00.000Z" }
}
The submission is an idempotent upsert keyed on
(organization, sender_id). Re-submitting:
- adds new countries at
status: pending;
- for a country already
approved, keeps the approval while
refreshing its documents, provider reference, and notes;
- for a country that was
rejected or expired, resets it to
pending so it is re-reviewed.
This lets you safely add countries to an existing Sender ID without
losing approvals you already hold.
List your registrations
GET /compliance/sender-id-registrations returns every Sender ID and
its per-country status. Available to any authenticated user.
{
"data": {
"entries": [
{
"id": "sidreg_xyz",
"sender_id": "MyBrand",
"countries": [
{
"country": "BR",
"status": "approved",
"document_refs": ["doc_abc123def456"],
"registered_at": "2026-06-05T00:00:00.000Z",
"expires_at": "2027-06-05T00:00:00.000Z"
}
]
}
],
"total": 1
},
"meta": { "request_id": "…", "timestamp": "2026-06-08T12:00:00.000Z" }
}
Status lifecycle
| Status | Meaning |
|---|
pending | Submitted, awaiting review/approval. |
approved | Cleared — traffic with this Sender ID is allowed for the country. |
rejected | Declined; fix the issue and re-submit to reset to pending. |
expired | The registration’s validity window closed; re-submit to renew. |
When a country entry is approved it carries registered_at and
expires_at. Renew before expires_at to avoid a lapse.
Send-time gates enforce registration: A2P SMS to a country that
requires a registered Sender ID is blocked unless that country’s
entry is approved. Register and get approved before launching
traffic to a new market.
On tenants created before the Sender-ID migration, the list endpoint
returns an empty set and POST returns 409 TENANT_NOT_MIGRATED —
contact support to enable the feature.
India is different
India does not use this generic Sender-ID flow. Indian SMS
Sender IDs (“Headers”) are registered through the DLT/TRAI system —
see DLT-India Onboarding.