Long codes, short codes, toll-free numbers, and alphanumeric sender IDs: provisioned, registered, and routed through one endpoint. The sender you send from decides throughput, cost, and which compliance regime applies.
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const { data, error } = await bird.sms.send({
from: "Bird",
to: "+31612345678",
text: "Your order #4821 has shipped. Track it: bird.ly/t/4821x",
category: "transactional",
}).safe();
if (error) throw error;
console.log(data.id);
// → "sms_01m11jw130e7svjzv70kgqr38w"
Four sender types, one API.
Numbers are the foundation of the Bird SMS API. Search availability, buy a number, and route inbound to a webhook with the same client you already send with. Which type you pick depends on volume, geography, and how much registration you can take on.
Which sender should I use?
Throughput, reach, and registration effort differ by sender type. Most US application traffic starts on a 10DLC long code; high-volume one-to-many programs move to a short code.
| Sender type | Best for | Registration |
|---|---|---|
| Long code (10DLC) | Two-way conversations, OTP, alerts at moderate volume | A2P 10DLC brand + campaign |
| Short code | High-volume one-to-many marketing and alerts | Carrier-vetted, lead time in weeks |
| Toll-free | US/Canada traffic without 10DLC, higher throughput than a long code | Toll-free verification |
| Alphanumeric sender ID | One-way branded alerts where the country allows it | Pre-registration in many countries |
Pick a number type
Each sender type in depth: reach, throughput, and what it takes to register.
Search, buy, and route in a few calls.
Find a number by country and capability and buy it, from the same SDK you send with. Inbound traffic is routed by a workspace webhook subscribed to sms.received rather than per number, so one subscription covers every number you hold. The number is live as soon as any required registration clears.
const { data: page, error: searchError } = await bird.numbers.available
.list({
country_code: "US",
number_type: "local",
capabilities: ["sms"],
})
.safe();
if (searchError) throw searchError;
const { data: order, error: orderError } = await bird.numbers.orders
.create({ number: page.data[0].number })
.safe();
if (orderError) throw orderError;
console.log(order.status, order.number_id); // → "completed" "nda_0ydh2yfw..."
Registration, handled where it's required.
Most US application traffic needs A2P 10DLC brand and campaign registration; toll-free needs verification; many countries require sender-ID pre-registration. Bird runs each of these from the dashboard, and the compliance surface tracks status from the API.
The rest of the SMS platform
One API, one set of keys. Explore the other capabilities.
Provision the right number, route it in minutes.
Numbers are one capability of the Bird SMS API: sending, two-way inbound, compliance, routing, and analytics ship with it.