Skip to main content

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.

Sender-ID format rules

RuleValue
Length3–11 characters
Allowed charactersletters, 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"
      }
    ]
  }'
FieldTypeNotes
sender_idstring3–11 chars, see format rules above.
countriesarray1–20 entries.
countries[].countrystringISO-3166-1 alpha-2 (uppercase).
countries[].document_refsstring[]1–20 IDs of the form doc_… referencing previously uploaded KYC documents.
countries[].registration_provider_idstringOptional downstream/provider reference (≤ 200).
countries[].notesstringOptional 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

StatusMeaning
pendingSubmitted, awaiting review/approval.
approvedCleared — traffic with this Sender ID is allowed for the country.
rejectedDeclined; fix the issue and re-submit to reset to pending.
expiredThe 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.