SMS API FAQ
How fast can I send my first SMS?
Install the SDK and send to the sanctioned test recipient +15005550006 in about five minutes. You can ship a CI check before you provision a number.
What does Bird's SMS API include?
One send endpoint, two-way inbound, number provisioning (long codes, short codes, toll-free, and alphanumeric sender IDs), A2P 10DLC and opt-out compliance, direct-to-carrier routing, and delivery analytics, all on one API.
Which countries can I send to?
Bird reaches 150+ countries over 240 direct-to-carrier connections, with operator-grade route reselection when a carrier path degrades.
Do you handle STOP and HELP keywords?
Yes, automatically per recipient. STOP opts a recipient out and adds them to a queryable suppression list, HELP returns an automatic help reply, and START opts them back in.
Do I need to register for A2P 10DLC?
To send application-to-person traffic to US numbers, yes. Brand and campaign registration is handled in the dashboard, and status is queryable from the API.
Which number type should I start with?
For US application traffic, a 10DLC long code covers most two-way and OTP use cases. High-volume one-to-many programs move to a short code; toll-free is an option for US/Canada without 10DLC.
How long does it take to get a number live?
A long code or toll-free number is available immediately and starts sending once its registration or verification clears. Short codes are carrier-vetted and typically take weeks.
Can one number both send and receive?
Yes. Long codes, short codes, and toll-free numbers are two-way: point a number's inbound traffic at a webhook and replies arrive as signed events. Alphanumeric sender IDs are one-way only.
Do I need to register before I can send?
It depends on the sender type and country. US application traffic needs A2P 10DLC, toll-free needs verification, and many countries require sender-ID pre-registration, all handled from the dashboard.
What is an alphanumeric sender ID?
It's a short text string, usually your brand name, that shows in the recipient's "from" field instead of a phone number. It's a label on the message, not a number you own.
Can someone reply to an alphanumeric sender?
No. Alphanumeric senders are one-way. There's no number behind them to route a reply to, so recipients can't text back. Use a long code, short code, or toll-free number when you need two-way traffic.
How long can the sender string be?
Keep it short: typically up to 11 characters on GSM networks. The exact constraint depends on the destination country and carrier, and what each one accepts.
Do I have to register the sender ID first?
Often, yes. Many countries require an alphanumeric sender ID to be pre-registered before it will deliver, and some block unregistered ones outright. Register the ID per country before you rely on it.
What is a toll-free SMS number?
A toll-free number is an 8xx number (800, 888, 877, and the rest of the toll-free prefixes) that sends and receives SMS across the US and Canada. It carries application traffic without A2P 10DLC, once it has passed toll-free verification.
Do toll-free numbers need 10DLC registration?
No. Toll-free numbers sit outside the A2P 10DLC system. Instead they go through toll-free verification, where the carriers review the use case and message content before the number is allowed to send at full volume.
Can a toll-free number receive replies?
Yes. Toll-free numbers are two-way: route the number's inbound at a webhook and replies arrive as HMAC-signed events, the same as any other Bird SMS number.
When should I use a long code instead of toll-free?
Reach for a long code when you want a local area code or your US traffic already runs through A2P 10DLC. A toll-free number wins when you want one 8xx sender that covers both the US and Canada without registering 10DLC campaigns.
What is a 10DLC long code?
A 10-digit long code (10DLC) is a standard local phone number sanctioned for application-to-person SMS in the US once its brand and campaign are registered with the carriers.
How much throughput does a long code get?
Registered 10DLC long codes get vetted throughput that depends on the brand's trust score and campaign type: more than an unregistered number, less than a short code.
Can a long code receive replies?
Yes. Long codes are two-way: route the number's inbound at a webhook and replies arrive as HMAC-signed events.
When should I move to a short code instead?
When one-to-many volume outgrows what a long code's throughput supports, or when a program needs the higher, more predictable rate a carrier-vetted short code provides.
What is an SMS short code?
A short code is a 5–6 digit number that carriers approve for high-volume one-to-many SMS: marketing campaigns, alerts, and high-rate OTP. It's the highest-throughput sender type, and it goes through carrier vetting before it can send.
How long does a short code take to provision?
Plan in weeks, not minutes. Carriers vet every short code program before it goes live, so a short code carries a real lead time, unlike a long code, which you can buy and start sending on as soon as registration clears.
Dedicated or shared short code?
A dedicated short code is yours alone, so its sending reputation is entirely your own. A shared short code splits a number across senders behind keywords: cheaper, faster to start, but you inherit the reputation of everyone else on it.
When should I use a long code instead?
When traffic is two-way and conversational, or volume doesn't justify the vetting and lead time. A long code is local, two-way by default, and live as soon as its 10DLC campaign clears.
What do I have to register before I can send?
It depends on where you send and what you send. US application traffic needs A2P 10DLC brand and campaign registration. Many countries require sender-ID pre-registration for alphanumeric senders. Opt-out handling applies everywhere and needs no setup.
Do I have to build opt-out handling myself?
No. STOP, HELP, and START keywords are honored automatically on every send. A STOP suppresses the recipient, HELP triggers a help response, and START resubscribes them. The suppression list is queryable through the API.
How do I know when a registration is approved?
Bird files each registration with the carriers or registries and reports its status through the API. Your code can poll the registration's state and wait for approval rather than send into a campaign that isn't live yet.
Is compliance separate from the rest of the SMS API?
No. It uses the same client and keys as sending, numbers, and two-way. Registration status and the suppression list are API resources alongside the send call, so one integration covers both sending and the rules around it.
Do I have to handle STOP myself?
No. Bird recognizes STOP on every send, suppresses the recipient, and blocks further messages to that number. You don't write or maintain any keyword logic.
What do STOP, HELP, and START each do?
STOP suppresses the recipient and stops messages. HELP returns an automatic help response. START reverses a prior opt-out and resubscribes the recipient. Each is acted on per recipient.
What counts as an alphanumeric sender ID for registration?
It's a sender shown as a name rather than a phone number: your brand in the from field. It's one-way only, and where the destination country allows it, it makes a message recognizably yours.
Why do I have to register one?
To curb spoofing, many countries only deliver alphanumeric sender IDs that have been pre-registered with the local carriers or regulator. Where that rule applies, an unregistered branded sender is rejected or rewritten.
Who files the registration?
Bird does. You submit the sender ID and destination from the dashboard, Bird carries it to the local registry, and the API reports its status so you know when the sender is live.
How long does it take?
Approval runs through external carriers and registries and varies by country, typically days to weeks. Poll the registration's status through the API and wait for it before sending from that sender ID.
What is A2P 10DLC?
A2P 10DLC is the US carrier framework for application-to-person SMS sent over standard 10-digit long codes. A business registers the brand behind its traffic and a campaign describing the messages, and the carriers vet both before granting throughput.
What's the difference between a brand and a campaign?
The brand is the legal entity sending the traffic. A campaign describes a specific messaging use case under that brand. One brand can have several campaigns, and you associate numbers with a campaign rather than the brand.
How long does approval take?
Brand and campaign vetting runs through the carriers and registry and typically takes days to weeks. Query the campaign's status through the API so your code waits for approval before it sends.
Does 10DLC apply outside the US?
No. 10DLC is a US framework. Other countries have their own rules, many requiring sender-ID pre-registration instead, and opt-out keyword handling applies wherever you send.
Can a recipient who opted out come back?
Yes. Opt-out is reversible. A recipient who texts START is removed from the suppression list and can receive messages again. The choice stays with the recipient.
How do I check if a number is suppressed?
The suppression list is a queryable API resource. Look up a number before you build an audience so an opted-out recipient never re-enters a send.
How long can an SMS be?
A GSM-7 message fits 160 characters per segment; switching to Unicode (UCS-2) for emoji or non-Latin scripts drops that to 70. Longer messages are concatenated across segments, and the SDK reports the count before you send.
Can I send to many recipients in one request?
Yes. Batch independent messages in a single call, each with its own recipient and text. The batch validates as a unit, and one idempotency key covers the whole request.
What happens if I retry a send after a timeout?
Pass an idempotency key and a retried request returns the original result instead of sending twice. Without one, a retry is treated as a new message.
How do I know whether a message was delivered?
Every state change fires an HMAC-signed webhook (queued, sent, delivered, or failed), carrying the carrier delivery receipt and the segment count.
How does an inbound SMS reach my app?
Every message sent to your provisioned number arrives as an HMAC-signed sms.received webhook. You verify one signature, read the from, to, and text, and route it into your own logic, the same envelope you already handle for delivery receipts.
Can I reply to an inbound message?
Yes. Reply by sending from the same number the message came in on. Set from to your number and to to the original sender, and the thread stays on one number end to end.
What happens when someone texts STOP?
Bird adds the sender to your suppression list and fires sms.opted_out, and blocks later sends to that number automatically. HELP returns a help reply and START opts them back in, all handled before they reach your code, so you stay compliant without writing the keyword logic yourself.
Do I need a special number for two-way?
You need a two-way-capable number. Long codes, short codes, and toll-free numbers support inbound; alphanumeric sender IDs are send-only and can't receive replies.
What does direct-to-carrier routing mean?
Your message hands off straight to the mobile operator over one of our 240 direct connections, not through a chain of resellers. Fewer hops means fewer places for a message to stall or a delivery receipt to go missing.
What happens when a carrier route degrades?
Bird reselects the route in real time. If a path starts dropping receipts or slowing down, the next message takes a healthier connection to the same operator, and the send you wrote never changes.
How do I know a message actually reached the handset?
Every message returns a carrier delivery receipt as an sms.delivered or sms.failed webhook, carrying the mcc_mnc, country, and latency_ms. That is the operator's own confirmation, not an inference from our side.
Do you check the recipient's carrier before sending?
Yes. We run an MNP lookup on every send to resolve the recipient's current operator, so a ported number routes to the carrier that actually holds it. For standalone number intelligence, see Lookup.
Can I choose least-cost over highest-quality routing?
Routing balances cost and delivery quality per destination. Transactional traffic like one-time passcodes favors the highest-quality path; bulk traffic can lean toward least cost. The selection happens per message, behind the same API call.
Where do the delivery numbers come from?
From the carrier delivery receipt (DLR) for each send. Bird records the receipt against the message, then rolls those receipts up into delivery, failure, and latency figures. A delivered count is the carrier confirming receipt, not Bird guessing.
Can I break a report down by carrier?
Yes. The stats API takes a groupBy of country, carrier (by MCC/MNC), sender, and time bucket, in any combination. A failure rate that looks fine nationally often turns out to be one carrier rejecting one sender ID.
Do I have to poll the API, or can I stream events?
Either. Every delivery state already arrives as a webhook, so you can build your own store from the event stream. The stats API is there when you want Bird to do the aggregation instead of keeping a counter yourself.
Can I look up what happened to one specific message?
Pass the message ID to the events endpoint and you get its full timeline: queued, sent, delivered or failed, each with a timestamp and, on failure, the carrier reason code. That is the report you actually need when a customer says a text never arrived.