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 code = generateOtp();
const { data, error } = await bird.sms.send({
from: "Bird",
to: "+15005550006",
text: `Your Bird verification code is ${code}. Reply STOP to opt out.`,
}).safe();
if (error) throw error;
console.log(data.id);
// → "sms_4kT01Lq2m..."Today at 2:14 PM
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, buy it, and point its inbound traffic at a webhook — all from the same SDK you send with. The number is live as soon as any required registration clears.
const { data: available } = await bird.numbers.search({
country: "US",
type: "long-code",
capabilities: ["sms"],
}).safe();
const { data: number } = await bird.numbers.buy({
number: available[0].number,
webhook: "https://example.com/webhooks/bird",
}).safe();
console.log(number.id); // → "num_8KQ2..."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.
SMS numbers FAQ
Which number type should I start with?+
How long does it take to get a number live?+
Can one number both send and receive?+
Do I need to register before I can send?+
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.