---
title: "Create an alphanumeric sender ID"
method: POST
path: "/v1/sms/sender-ids"
tags: ["SMS"]
---

# Create an alphanumeric sender ID

`POST /v1/sms/sender-ids`

Registers an alphanumeric sender ID (e.g. `ZERNIO`), a branded `from`
for one-way international SMS. No phone number purchase or carrier
registration is needed; once created, pass it as `from` on
`POST /v1/sms/messages`.

Constraints: 3-11 characters (letters, digits, spaces; at least one
letter). Sends cannot reach the US, Canada, or Puerto Rico, are
text-only, and recipients cannot reply. Sender IDs that impersonate
well-known brands or institutions are rejected. Names are not
exclusive: the same sender ID can be registered by any number of
teams. Creating the same sender ID again is a no-op
(re-activates it after a delete).

## Request body

- object
  - `senderId` string, required — The sender ID recipients will see (3-11 letters/digits/spaces, at least one letter, no leading/trailing space).

## Response `200`

Sender ID created (or re-activated).

- object
  - `id` string — Sender ID resource id.
  - `senderId` string
  - `isActive` boolean

## Other responses

- `400` — Invalid request
- `401` — Unauthorized
- `402` — No payment method on file (code `payment_required`). Sender-ID sends incur carrier fees, so the billing owner needs a card before one can be created.
- `403` — The team is not on usage-based billing, or already holds the maximum of 1,000 active sender IDs (code `sender_id_limit_reached`; raisable via support).
- `409` — Billing setup is incomplete for this team (code `billing_setup_incomplete`); contact support.
- `422` — Sender ID rejected: it appears to impersonate a protected brand or institution.

## Changes

- **2026-09-25** `2c04683ce694` — 4 info
  - added the optional property `details/adAccountId` to the response with the `400` status
  - added the optional property `details/createdObjects` to the response with the `400` status
  - added the optional property `details/stage` to the response with the `400` status
  - added the optional property `details/unconfirmedWrite` to the response with the `400` status
- **2026-09-16** `3e6ddf2a99ea` — 1 info
  - added the optional property `details/budgetScope` to the response with the `400` status
- **2026-09-15** `0dba7d004d75` — 2 info
  - added the optional property `details/quotaExhausted` to the response with the `400` status
  - added the optional property `details/quotaScope` to the response with the `400` status
- **2026-08-31** `bdd771244d76` — 2 info
  - added the non-success response with the status `402`
  - added the non-success response with the status `409`

[Change history](https://skmtc.dev/zernio/apis/zernio-api/changes/v1/sms/sender-ids/post.md)

---

[API](https://skmtc.dev/zernio/apis/zernio-api.md) · [All operations](https://skmtc.dev/zernio/apis/zernio-api/llms.txt) · [OpenAPI document](https://skmtc.dev/zernio/apis/zernio-api/revisions/b2325332041a?raw)
