Short codes

Built to send at scale.

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.

send-notification.ts
202 · 0.4s
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:       "+15005550006",
  text:     "Your order #4821 has shipped. Track it: bird.ly/t/4821x",
  category: "transactional",
}).safe();

if (error) throw error;
console.log(data.id);
// → "sms_4kT01Lq2m..."
Hi Ada, reminder of your appointment tomorrow at 14:30 with Dr. Kowalski.
Your order #4821 has shipped. Track it: bird.ly/t/4821x
Your subscription renews on 3 Sep for €12/mo. Manage it here: bird.ly/account

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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

short-code.ts
201 · purchased
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.

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.

Start with one channel.
Add the others when you're ready.

A test API key is yours immediately. Production unlocks when you add a payment method and verify a sender.

Using Claude Code, Cursor, or Codex? Copy a setup prompt and your agent installs the Bird CLI and skills for you. Pick yours:

Cursor