---
title: "Create an SMS sender"
canonical: "https://bird.com/docs/api/reference/create-workspace-sms-sender"
---

# Create an SMS sender

`POST /v1/sms/senders`

Claims an alphanumeric sender string for your workspace. Country and sender-type policies determine whether registration is unavailable, optional, or required before sending.

## Code samples

**TypeScript**

```ts
await bird.smsSenders.create({ type: "alpha", sender: "GOLDCREST" });
```

Examples: [TypeScript](/docs/api/reference/create-workspace-sms-sender.ts.md) · [Python](/docs/api/reference/create-workspace-sms-sender.py.md) · [Go](/docs/api/reference/create-workspace-sms-sender.go.md) · [PHP](/docs/api/reference/create-workspace-sms-sender.php.md) · [CLI](/docs/api/reference/create-workspace-sms-sender.cli.md) · [MCP](/docs/api/reference/create-workspace-sms-sender.mcp.md) · [cURL](/docs/api/reference/create-workspace-sms-sender.curl.md)

## Example response `201`

```json
{
  "id": "snd_01krdgeqcxet5s7t44vh8rt9mg",
  "source_kind": "number",
  "sender_type": "long_code",
  "country_code": "US",
  "number_id": "nda_01krdgeqcxet5s7t44vh8rt9mg",
  "status": "active",
  "next": [
    {
      "kind": "operation"
    }
  ],
  "destinations": {
    "active": [
      "US"
    ],
    "pending": [
      "US"
    ],
    "needs_attention": [
      "US"
    ]
  }
}
```

## Request body

- `type` (string, required)

  The kind of sender to create. Only `alpha` (an alphanumeric sender string) is customer-creatable. Dedicated numbers become senders when you allocate them from inventory. This endpoint cannot create their senders.

  Possible values: `alpha`
- `sender` (string, required): The alphanumeric sender string to create, for example "BIRD". 3–11 letters, digits, spaces, dashes, underscores, or dots, at least one of them a letter, and no separator at either end.

## Response body

- `id` (string, required): Identifier of this sender.
- `sender` (string, required): The value messages are sent from: a number in E.164 format, a shortcode, or an alphanumeric sender string.
- `source_kind` (string, required)
- `sender_type` (string): The kind of sender identity this is, which decides what each destination country asks of it. It is finer than source_kind: a short code and an ordinary long code are both numbers but follow different rules.
- `country_code` (nullable string): The country of the number this sender sends from. Null for an alphanumeric sender.
- `number_id` (string): The number this sender sends from, as returned in the `id` field of `GET /v1/numbers`. Present only when `source_kind` is `number` or `shared_number`; an alphanumeric sender has no number behind it. Exactly one sender exists per number, so this is also how you go the other way: `GET /v1/sms/senders?number_id={id}` returns this sender.
- `status` (string, required)
- `next` (array of object)

  What to do next about this sender, given the state it is in. Present on reads that
  compute it: an empty list means there is nothing to do, and the field is absent entirely
  on responses that do not report next actions.

  This routes rather than advises. A sender only knows about itself, so where the work is
  per-country it names the requirements read rather than guessing which country you meant.
- `next.kind` (string, required)

  What you do about this step.

  - `operation`: call the operation named in `operation`, then
    read again.
  - `external`: act somewhere this API does not reach, then read
    again.
  - `wait`: nothing is asked of you, so read again later.
  - `terminal`: nothing you do resolves this, so stop retrying.

  Tolerate a value you do not recognize: show the `description` and
  offer no action.

  Possible values (may grow over time): `operation`, `external`, `wait`, `terminal`
- `next.description` (string, required): A short, human-readable label for the step, suitable for display.
- `next.operation` (string): The operationId to call. Present only when `kind` is `operation`. The operation's own schema says how to call it; this says only which one, and what to address it with.
- `next.params` (object): The parameters that address the operation, by name: `{"sender_id": "…"}` for an operation on `/v1/sms/senders/{sender_id}/requirements`. A parameter the operation takes in its query string is given the same way, so an operation addressed as `?subject_id=` carries `{"subject_id": "…"}`. Every parameter the call needs is here, whether its value came from the thing you were acting on or is fixed for this step, so you can make the call from this object alone. Present only when `kind` is `operation` and the operation names a subject. A request body, when the operation takes one, is described by the operation's own schema and never appears here.
- `next.url` (string): A URL to open. Present only when `kind` is `external`, and only when the step has one. An external step whose `description` says to go and do something with no URL to open is normal.
- `destinations` (object, required)
- `destinations.active` (array of string, required): Countries you can send to today: switched on in your SMS destination settings, and either asking for no registration or holding an approved one. A country counts here however it became usable, including one enabled for you automatically when your organization set its business address.
- `destinations.pending` (array of string, required): Countries whose registration is under way and waiting on us or on a carrier. Nothing is asked of you for these; they move to `active` when the registration is approved.
- `destinations.needs_attention` (array of string, required): Countries you have registered for that are not working, and so are waiting on you: the registration was refused or withdrawn, or it is approved but the destination is switched off in your SMS destination settings. While this sender's number is missing the paperwork proving you own it, every country you have registered for is listed here, because none of them can carry a message until that is settled.
- `created_at` (string, required)
- `updated_at` (string, required)

## Related resources

- [Should I use a Bird SDK or call the API directly?](/explained/platform/should-i-use-an-sdk-or-call-the-api-directly) (answer)
- [Build your first integration](/learn/paths/integration) (course)
- [Send your first email](/docs/get-started/send-your-first-email) (docs)

[Get an implementation brief](/learn/workspace?topic=api-basics)
