SMS comparisons

Honest comparisons.

These pages are written by the engineering team, not marketing. Where the other platform is the better pick, we say so, and each page names what it is great at before it names anything else.

Everyone here reaches the same carriers, so the comparison is about what sits on top of them: the shape of the send call, whether registration and delivery events live under the same host and key, and how much of the account an AI agent can operate without you.

If you find a claim on these pages that doesn't hold up, mail devs@bird.com and we'll fix it.

Which SMS API fits an inbound workflow?

Choose Bird when you need inbound text and delivery events on workspace webhooks, with message records you can retrieve through the API. Before choosing a provider, test a receiving number in your target market and the failure paths below.

Your taskCheck before choosingBird workflow and evidence
Receive texts on a numberConfirm number availability, SMS capability and registration requirements for your country and sender type. An alphanumeric sender cannot receive replies.Search number inventory by country and SMS capability. Check one-way and two-way SMS before choosing a sender.
Read an incoming textCheck whether the webhook includes message content and both numbers, and whether you can retrieve the stored message later.Bird's sms.received event carries text, segment details, sms_id, from and to. The message API retrieves the stored record.
Match a reply to your applicationKeep conversation state for the subscriber and receiving number. If several requests are open for that pair, use application context to decide which one the reply answers.Use from and to on incoming events to find that pair. Match outbound delivery events by sms_id; Bird echoes the send's metadata and tags for your own references.
Authenticate eventsVerify the signature against the raw request body and reject stale timestamps before acting on an inbound text or delivery report.Bird signs webhook deliveries using Standard Webhooks. The SDK verifies signatures and timestamps; your handler deduplicates on webhook-id.
Recover from retriesTest a webhook timeout separately from a send timeout. Repeated event delivery and a repeated send request need separate deduplication.Bird's webhook delivery is at-least-once and unordered, with retries after failures. Reuse an Idempotency-Key when retrying the same send within the key's retention window.
Decide whether a message arrivedSeparate API acceptance, carrier handoff and a delivery receipt. A delivered SMS does not prove the recipient read it.Bird distinguishes sms.accepted, sms.sent and sms.delivered, alongside failure events. A delivery receipt reports a delivery outcome; inspect the message timeline when investigating.

Every SMS comparison

Each page follows the same structure: what the other platform is great at, where Bird is different, a matrix table, side-by-side code, and an honest switching-cost estimate.

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