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.
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"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
// 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 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.
- 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.
- 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.
- 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.
- 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.
- 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.
{
"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.
Apakah saya perlu menyediakan nomor WhatsApp sendiri?
Bisakah saya menggunakan nomor sendiri?
Bagaimana Bird memilih nomor pengirim?
The rest of the WhatsApp platform
One API, one set of keys. Explore the other capabilities.
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.