Bird vs Twilio
Bird vs Twilio for Verify
Bird Verify keeps channel routing and code checks on the recipient: send a code, advance the delivery plan and check the answer with the same email address or phone number.
Trusted every day by teams that
build world-class software.
Which verification flow fits your application?
When Twilio Verify fits
Twilio’s verification resource accepts call and silent network authentication alongside SMS, WhatsApp and email. Keep a relied-on voice or SNA path with a provider that supports it; Bird’s resolved channel plan supports SMS, WhatsApp, email and Telegram.
Twilio Services group verification configuration, including code length and friendly name. The create request also accepts a template, locale and custom code. Inventory those choices before moving to Bird’s workspace settings and built-in messages.
Twilio’s SMS riskCheck enables or bypasses active fraud protections per attempt, including Fraud Guard and Geo Permissions. Preserve the application’s risk decisions during migration rather than treating Bird’s resend and check limits as the same control.
Why choose Bird Verify?
Bird resolves delivery from the recipient and country. A request can trim or reorder the available plan with options.channels, and delivery failure can advance it automatically. The same recipient identifies the check and the next-channel request.
Bird’s check result exposes success, reason and attempts_remaining. Use success: true to record the application’s verified state; an HTTP 200 can also carry an incorrect-code result.
Bird’s hosted MCP server and CLI operate the same Verify flow: create, check and next-channel. An agent can request another delivery channel using the recipient already held by the application.
The matrix
How do the Verify APIs compare?
Compare the request and lifecycle controls your application uses. Channel availability depends on the recipient’s country and the account’s enabled capabilities.
| Capability | Bird | Twilio Verify | Who wins? |
|---|---|---|---|
| Create request | JSON with a bearer key to /v1/verify/verifications; to contains an email address, phone number or both. | Form-encoded create under a Service SID, with a recipient and channel. | |
| Safe retries | Idempotency-Key replays a request. Recipient resends reuse the live verification, respect a cooldown and issue a fresh code after it. | Twilio keeps the same token during its validity period until verification succeeds, including when another request arrives. | |
| What a failed check tells you | success: false, a reason such as incorrect_code and attempts_remaining. Store success: true; a finalized verification returns 404 on another check. | Verification Check returns status, including pending, approved and max_attempts_reached. Approved, expired and maximum-attempt verifications are deleted; a later check returns 404. | |
| Channels a passcode can arrive on | SMS, WhatsApp, email and Telegram, restricted to the recipient’s resolved country plan. | SMS, email, WhatsApp and call; the same resource also offers sna and auto for silent authentication workflows. | |
| Per-request configuration | options.code_length, options.channels and options.language; sender and default settings come from workspace configuration. | Service selection plus request options for a template, locale, custom code and friendly name. | |
| Hosted MCP server | Authenticated hosted MCP runs create, check and next-channel; the bird CLI exposes the same operations. | Twilio’s hosted docs MCP searches and retrieves documentation without executing API calls. Twilio Labs’ MCP proof of concept loads selected API services; the Twilio CLI makes API requests. | |
| Delivery events | Session and attempt events on workspace webhooks, signed with Standard Webhooks. Delivery and successful code use are separate events. | Verify Events is Pilot with self-serve onboarding. It streams verification and message status for SMS, WhatsApp, RCS and Voice to a webhook or Amazon Kinesis. | |
| Channel fallback | Delivery failure advances the resolved plan. The next-channel operation lets the application advance it and sends a fresh code; earlier codes remain valid. | Automatic SMS Fallback tries SNA and falls back to SMS. Twilio labels it Pilot and requires contacting sales for access. |
Who advances fallback, and which code still works?
Bird advances the recipient’s resolved plan when a delivery fails. Your application can also call next-channel when the user reports that no code arrived. Each call advances at most one channel and sends a fresh passcode; all earlier passcodes for that verification stay valid.
Bird: create with to → resolved plan → delivery failure or next-channel → fresh passcode → check with the same to. An exhausted plan returns NoNextChannel. Preserve a completed success before offering another send.
Twilio: create with Service SID and channel: auto → SNA attempt → SMS fallback when needed → Verification Check. The automatic-channel guide describes this specific SNA-to-SMS flow and labels access Pilot. Twilio’s token stays the same throughout its validity period until success.
What should your application store after a check?
Store the successful authentication outcome. Bird identifies a verification by the exact to set: if creation used both phone and email, repeat both. A response with success: false and reason: incorrect_code is a failed check even with HTTP 200. A later 404 E13000 cannot undo an earlier success: true.
Twilio also accepts a recipient for checking, or a Verification SID, under the Service SID. Use status: approved as its successful result. Its valid boolean is a legacy property; the reference directs integrations to status.
Which abuse controls belong in the migration?
Bird’s abuse guardrails include a resend cooldown, recipient send cap and check-rate limits. Requesting the next channel bypasses the resend cooldown and hourly send cap, but the finite channel plan bounds advancement. Keep your own account and session risk controls around these operations.
Twilio’s SMS riskCheck can enable or bypass Fraud Guard and Geo Permissions for an attempt. Map those settings and their operational decisions explicitly; a delivery retry limit does not establish equivalent fraud detection.
How are verification and delivery billed?
There's no plan, seat, or platform fee for Bird Verify. Each delivery is charged at that channel's rate for the destination. A resend, or a fallback that moves delivery to a second channel, is a new send and a new charge.
A verdict compares only published delivery rates with the same channel, destination, currency, billing unit and sender type. Per-success verification fees and per-send charges are Not comparable: your own sends and successful checks determine usage.
Pricing verdict: Not comparable
| Published item | Twilio Verify | Bird billing policy |
|---|---|---|
| Base pricing Per successful verification | $0.05 USD Per successful verification plus standard channel fees. as published | There's no plan, seat, or platform fee for Bird Verify. Channel sends are billed separately. Check the live channel rates below. |
| SMS (US) Per SMS Destination: US | $0.0083 USD Per SMS (US). The successful-verification fee is charged separately. as published | There's no plan, seat, or platform fee for Bird Verify. Channel sends are billed separately. Check the live channel rates below. |
| WhatsApp (US) Per authentication template message Destination: US | $0.0034 USD Per authentication template message (US). The successful-verification fee is charged separately. as published | There's no plan, seat, or platform fee for Bird Verify. Channel sends are billed separately. Check the live channel rates below. |
| Voice Per successful verification | $0.05 USD Per successful verification. Voice channel pricing applies separately. as published | There's no plan, seat, or platform fee for Bird Verify. Channel sends are billed separately. Check the live channel rates below. This method is outside Bird’s documented Verify channel plan. |
| Email Per successful verification | $0.05 USD Per successful verification. Email channel pricing applies separately. as published | There's no plan, seat, or platform fee for Bird Verify. Channel sends are billed separately. Check the live channel rates below. |
| Silent Network Auth Per successful verification | $0.05 USD Per successful verification plus per-country channel fee. as published | There's no plan, seat, or platform fee for Bird Verify. Channel sends are billed separately. Check the live channel rates below. This method is outside Bird’s documented Verify channel plan. |
| Push Per approved or denied request | Push channel fee is included in the verification fee. It’s charged when a request is approved or denied. as published | There's no plan, seat, or platform fee for Bird Verify. Channel sends are billed separately. Check the live channel rates below. This method is outside Bird’s documented Verify channel plan. |
| TOTP Per approved request | TOTP channel fee is included in the verification fee. It’s charged when a request is approved. as published | There's no plan, seat, or platform fee for Bird Verify. Channel sends are billed separately. Check the live channel rates below. This method is outside Bird’s documented Verify channel plan. |
| Volume pricing Custom volume | Contact sales Contact sales for volume-based discounts. as published | There's no plan, seat, or platform fee for Bird Verify. Channel sends are billed separately. Check the live channel rates below. |
Bird published SMS channel rates
Bird's SMS catalogue rates are shown by sender type, per message segment. Carrier fees and sender costs may apply separately. These channel rates are not a total verification quote. SMS pricing; carrier fees.
| Destination | Sender type | Per SMS segment |
|---|---|---|
| US | long_code | EUR 0.003 |
| US | long_code | USD 0.0035 |
| US | toll_free | EUR 0.003 |
| US | toll_free | USD 0.0035 |
| US | short_code | EUR 0.006 |
| US | short_code | USD 0.007 |
Bird email pricing and Bird WhatsApp pricing publish the other delivery channels.
The same verification
How do you start a verification?
Twilio’s Node SDK creates a verification beneath a Service. Bird’s create endpoint takes the recipient directly. Reuse the application’s idempotency key for retries of the same Bird request.
Twilio Verify
import twilio from "twilio";
const client = twilio(process.env.TWILIO_ACCOUNT_SID!, process.env.TWILIO_AUTH_TOKEN!);
try {
const verification = await client.verify.v2
.services(process.env.TWILIO_VERIFY_SERVICE_SID!)
.verifications.create({
to: "+15551234567",
channel: "sms",
});
console.log(verification.sid, verification.status);
} catch (err) {
console.error(err);
}
Bird
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const { data, error } = await bird.verify.verifications
.create(
{
to: { phone_number: "+15551234567" },
options: { code_length: 6, channels: ["sms"] },
},
)
.safe();
if (error) console.error(error.message);
else console.log(data.id, data.status);
Switching cost
What must change before cutover?
Inventory each Service’s channels, templates, risk rules and recovery path. Map supported recipients and configuration using the Twilio migration guide. Retain or redesign any relied-on call, SNA or custom-message path that the Bird contract does not offer.
Cut over new creates, then route each check to the provider that issued its code until outstanding verifications expire. Persist the successful application outcome and test resend, next-channel, expired-code and exhausted-attempt behavior. Bird’s sender guide shows the identities and messages users receive.
What should you check before choosing?
Is Bird a Twilio Verify alternative for SMS and email?
Does a second Twilio request generate a different code?
Can I move every Twilio template and locale setting?
Does a 404 mean the user failed verification?
Put it into practice.
Continue with the documentation, guides and examples for this topic. Resources are in English.
Where to go next
The migration guide is the one to start with: it maps the API field by field.
Make verification part of your product.
Talk through your channels, verification flow, and expected traffic with our team.