Numbers

Borrow a sender. Then bring your own.

Set up in:
Cursor

Every WhatsApp message leaves from a business number. Bird operates managed senders you can use on your first day with nothing to provision, and connects a number of your own through Meta's embedded signup when you are ready to send as your own brand.

send-notification.ts
202 · 480ms
import { BirdClient } from "@messagebird/sdk";

const bird = new BirdClient({
  apiKey: process.env.BIRD_API_KEY!,
});

const msg = await bird.whatsapp.send({
  to: "+15551234567",
  template: {
    slug: "bird_delivery_update",
    components: [{ type: "body", parameters: [
      { type: "text", name: "ref",  text: "#4821" },
      { type: "text", name: "date", text: "Wednesday" },
    ] }],
  },
});

console.log(msg.id, msg.status);
// → "wam_01krdgeqcxet5s7t44vh8rt9mg", "accepted"
Reminder: you have an appointment on 3 Sep at 14:30. We look forward to seeing you.9:42 AM
Reschedule
Your order #4821 is out for delivery, arriving Wednesday. Thanks for shopping with us.9:43 AM
Your subscription renews on 3 Sep for €12.00. No action is needed.9:44 AM
View plan

Two tiers of sender, one send call.

Numbers are what the Bird WhatsApp API sends from. A number we operate on your behalf carries Bird's managed templates and picks itself from the template's category. A number your workspace connected is yours: it is what free-form content, inbound messages, and templates you authored all require.

The sender is either chosen for you, or named by you.

A Bird-managed template selects its number from its category: authentication sends from a dedicated number, utility and marketing share a notification number. Everything else names a from, and it has to be a number your workspace owns.

Bird-managed

managed
// A Bird-managed template picks its own sender from its category, so
// there is no `from` to choose and nothing to provision first.
await bird.whatsapp.send({
  to:       "+15551234567",
  template: { slug: "bird_delivery_update", components },
});

Shared across workspaces and stocked with managed templates only. Setting a from here is refused, because the category already decided it.

Your own

your-own
// Your own number: name it on every send that is not a Bird-managed
// template. A template you authored has to sit on that number's WABA.
await bird.whatsapp.send({
  to:       "+15551234567",
  from:     "+13124495648",
  template: { slug: "order_update", language: "en", components },
});

Your brand on the sender, your templates, free-form replies, and inbound. Omitting from on a send that needs it is refused rather than guessed at.

What a connected number reports.

Once your number is live, WhatsApp keeps grading it. Bird re-reads that state roughly hourly, so what you see is a reading with a timestamp rather than a live value.

  1. 01

    A quality rating

    Green, yellow, or red, from recipient feedback. Sustained red can restrict the number. This is separate from a template language's own quality score.

  2. 02

    A messaging limit, shared

    How many unique users you can message outside a service window in a rolling 24 hours. WhatsApp calculates it for the whole business portfolio, so every number in it shares one limit and any single number can consume all of it.

  3. 03

    A throughput level

    Standard is 80 messages per second. WhatsApp upgrades an eligible number to 1,000 per second on its own, without an application.

  4. 04

    A data localization region

    The country your message content is stored at rest in. It can differ from the region you asked for when WhatsApp requires a particular country for that number.

  5. 05

    A reason, when a connection fails

    A number still retrying carries its last refusal, so there is something to act on while the retry runs, and it clears once the number connects.

A number, as the API reads it.

Scope says which tier the number belongs to, and meta_synced_at is when its state was last read from WhatsApp. A number Bird operates on your behalf carries no rating, limit, throughput, or sync time at all: those belong to a business account you own.

GET /v1/whatsapp/numbers
wan_
{
  "id":           "wan_01krdgeqcxet5s7t44vh8rt9mg",
  "phone_number": "+13124495648",
  "name":         "Goldcrest Support",
  "scope":        "workspace",
  "status":       "connected",
  "quality_rating":   "green",
  "messaging_limit":  "tier_10k",
  "throughput_level": "standard",
  "meta_synced_at":   "2026-05-19T15:00:04.911Z"
}

Connecting one is a dashboard step.

Your own number is connected through Meta's embedded signup, either by bringing a number that is not already active on the WhatsApp consumer or Business app, or by picking one your workspace already holds at Bird. Numbers are managed in the dashboard rather than provisioned over the public API, and the same step is what makes inbound yours.

Go deeper in the docs.

Read phone number setup for both connection paths and what to do when one fails, and the customer service window for why a number of your own is what free-form content needs.

Number questions, answered.

Managed senders, bringing your own, and how a sender is chosen.

Do I need to provide my own WhatsApp number?
No. Bird provides managed sender numbers. Authentication templates send from a dedicated number, and utility and marketing templates share a notification number. The Numbers page in the dashboard lists the numbers available to your workspace.
Can I bring my own number?
Yes, and connecting one is what unlocks sending as your own brand: your own templates, free-form content inside an open customer service window, and inbound messages. Bird-managed numbers are shared across workspaces and carry managed templates only, so treat them as the zero-setup path to a first send rather than the end state.
How does Bird pick which number to send from?
For a managed template, by its category: authentication uses a dedicated sender number, while utility and marketing share a notification number. Everything else names its own sender in the from field, which has to be a number your workspace owns, and a template you authored has to sit on the same WhatsApp Business Account as that number.

Send today, on your own number tomorrow.

Numbers are one capability of the Bird WhatsApp API: templates, sending, inbound, and analytics ship with them, on infrastructure we have run for a decade.

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