A short code is a 5–6 digit number built for high-volume one-to-many SMS: marketing, alerts, and high-rate OTP. Carriers vet every program before it can send, so provisioning lead time is measured in weeks rather than minutes.
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
Where a short code fits.
A short code is one of the four sender types on Bird SMS numbers, part of the broader Bird SMS API. It's the option you reach for when one number has to push high volume to many recipients — and you're willing to trade provisioning speed for the throughput and carrier trust that comes with it.
What a short code gives you.
High throughput, carrier-vetted, made for one-to-many.
- 01
The highest throughput of any sender type.
A short code is engineered for one number to carry a heavy outbound load, which is what makes a same-day campaign or alert fan-out land in time.
- 02
Dedicated or shared.
Take a dedicated short code and its sending reputation is yours alone; share one behind keywords to start faster and cheaper, at the cost of inheriting your neighbors' reputation.
- 03
Carrier-vetted before it sends.
Every short code program is reviewed by the carriers, so the number arrives with their trust already established rather than earning it under live traffic.
- 04
Best for one-to-many.
Marketing sends, transactional alerts, and high-rate OTP all fit a short code. For two-way conversational traffic a long code is usually the better starting point.
Search, buy, and route it.
Provisioning a short code uses the same client and the same call shape as any other sender type — only the type field changes. Search by country and capability, buy the number, and point its inbound at a webhook.
const { data: available } = await bird.numbers.search({
country: "US",
type: "short-code",
capabilities: ["sms"],
}).safe();
const { data: number } = await bird.numbers.buy({
number: available[0].number,
webhook: "https://example.com/webhooks/bird",
}).safe();Vetting buys you throughput.
The tradeoff is direct: a short code earns its high, carrier-trusted throughput by going through vetting first, so plan for a lead time in weeks. Reach for one when a program's volume outgrows what a long code supports, or when you need a sending rate that's high and predictable from day one. If your traffic is two-way and conversational, or volume is moderate, a long code is live sooner and costs less to start.
Short code FAQ
What is an SMS short code?+
How long does a short code take to provision?+
Dedicated or shared short code?+
When should I use a long code instead?+
Other ways to send
Short codes are one of four sender types. Compare the rest.
Pick the sender type your volume calls for.
A short code is one sender type on the Bird SMS numbers surface. Provision one when volume and throughput justify the vetting, and route inbound from the same API you send with.