Verify FAQ
How do I add verification to my app?
Two calls: create a verification for a recipient, then check the code they enter. The check is by recipient, so there's no verification id to store between the two: the configuration id (a constant) and the address are all you need.
Which channels can I verify over?
Email, SMS, and WhatsApp today. Voice is rolling out as an additional channel, and the channel order, sender, and which channels are on are configurable per country, without a code change.
Do I have to store a verification id?
No. Re-sending is the same create call (create-or-retry), and checking is by the recipient address, so a verification needs no per-request state on your side. An id is returned if you want to read status later, but it's optional.
Who do my users see the code from?
One of two Bird-managed identities, and you pick per channel: Bird Verify by default, or Authifly. Email arrives from otp@verify.bird.com, from Authifly's otp@verify.authifly.com, or from your own verified domain, and WhatsApp sends from that identity's business number. SMS shows the identity as its sender ID wherever a country permits a branded one, and a short code or local number where one is required. Authifly is the one to pick when you want no platform vendor visible to your users at all, and authifly.com is a public page that reassures recipients Authifly sends legitimate one-time codes on a business's behalf. Authifly is operated by Bird B.V.
How much does it cost?
Verify isn't on the public price list yet. Get in touch and we'll walk you through pricing for your channels and volume.
Do I pay extra for using Verify?
No. There's no Verify plan or platform fee. You pay the delivering channel's normal rate for each code sent, nothing more.
What does checking a code cost?
Nothing. Only sends bill; a check call, whether it succeeds or fails, is always free.
If a send falls back to a second channel, do I pay twice?
Yes, because two sends went out: the original delivery and the fallback delivery, each at its own channel's rate. A resend to the same channel works the same way.
How long is the code, and how long does it last?
Six numeric digits for ten minutes, out of the box. Both are configurable: 4 to 8 characters, and anything up to about 16 hours. Only numeric codes are issued today.
What happens when someone enters the wrong code?
The check returns 200 with a result: invalid while attempts remain, then failed once they're exhausted, or expired once the window passes. A wrong code is a normal outcome you branch on, not an HTTP error.
How many guesses does a user get?
Five by default, and you can set anywhere from 1 to 10. Once the budget is spent the verification fails and that code is dead, so the user starts a new one.
How often can I resend a code to the same person?
There's a cooldown between sends to one recipient, 60 seconds by default and configurable up to an hour, plus a per-recipient hourly cap on how many codes can go out at all. Both exist to bound what a spammer or a pumping attack can cost you.
What is SMS OTP?
An SMS one-time passcode is a short code texted to a phone number that the user types back to prove they control that number. It's the most widely used second factor and signup check because almost every phone receives SMS.
Which countries can I reach?
SMS sends on a Bird-managed shared sender, Bird Verify or Authifly. Sender-ID rules are country-specific: some countries permit a branded sender ID, and others require a short code or a local number. Registered and dedicated senders extend reach over time.
How do you stop SMS pumping and brute force?
Per-recipient send caps and a per-verification guess limit are built in today. Deeper fraud signals and SMS-pumping protection are coming next.
When should I verify by email instead of SMS?
Email needs no phone number and reaches anyone with an inbox, which makes it a strong default for signup and account-recovery flows and a natural fallback when you don't have a verified phone number. Many products offer both and let the user choose.
Can I send from my own domain?
Yes. Codes go from a Bird-managed shared sender by default (otp@verify.bird.com, or Authifly's otp@verify.authifly.com if you pick that identity), and you can override to a domain you've already verified for sending with Bird, so the code arrives from your own address.
Do you check the suppression list before sending an OTP?
OTP email is transactional system mail, so it isn't gated on the marketing suppression list. Delivery is handled asynchronously by the email pipeline, the same as any transactional send.
Is WhatsApp verification available today?
Yes. WhatsApp ships as a launch channel alongside email and SMS, an orderable entry in the per-country plan, with no change to the create or check calls. Voice is the channel still rolling out.
Why verify over WhatsApp instead of SMS?
WhatsApp authentication-template messages are branded and arrive in an app many users already keep open. In markets with heavy WhatsApp use, ordering it ahead of SMS lets you meet people on the channel they prefer, with SMS still in reserve.
What happens if the user isn't on WhatsApp?
A phone target carries its whole phone-family channel plan, so SMS sits next in line behind WhatsApp. As delivery-driven advancement rolls out, a WhatsApp-first verification moves on to SMS in the same session, and every code in that session stays valid until it verifies, expires, or runs out of attempts.
Is voice verification available today?
It's rolling out. Email, SMS, and WhatsApp verification are available now; voice lands as an additional orderable channel in the same per-country plan, with no change to the create or check calls.
When should I use voice OTP?
Voice reaches landlines and users who can't receive SMS, and it's a strong fallback when a text doesn't arrive. It's also the more accessible option for users who can't read a code on screen.
How does voice fit with SMS?
Both are phone-family channels addressed by the same number. Order them in the channel plan (commonly SMS first, voice as fallback), and a single verification can move from one to the other while every code in the session stays valid.
Which channel should I use for the second factor?
Use the address you already have: a phone number verifies over SMS or WhatsApp, an email address over email. Per-country configuration controls the order and senders per market.
Does adding 2FA mean storing verification state?
No. Bird checks by recipient, so your login handler sends the code and later checks it by the same address: there's no verification id or pending-code record to keep on your side.
How is passwordless different from 2FA?
With two-factor, the code is a second proof on top of a password. Passwordless removes the password and uses the code as the only credential. Both are the same Bird Verify send-then-check flow: what changes is whether a password sits in front of it.
Is passwordless less secure without a password?
It removes the most-attacked credential: passwords get reused, phished, and breached. The one-time code is generated cryptographically, stored only as a hash, and guarded by attempt lockout and send caps, so possession of the channel is the factor.
Can users log in without typing a code at all?
That's where silent (carrier-network) authentication is headed: confirming the phone number through the mobile network with no code to enter. It's designed into the Verify model as a future channel, so adopting it later won't mean re-architecting your login.
What is the configuration cascade?
It's how a verification's settings resolve: per-request options, then your per-country overrides, then your configuration defaults, then Bird's per-country base. The highest tier that sets a value wins, and anything you leave unset falls through to the tier below, so you only configure what you want to change.
What does Bird's per-country base give me?
A sensible starting point in every country without any setup: which channels are worth trying, which senders are allowed, and reasonable code defaults, maintained by Bird from years of running email and SMS. You build on top of it rather than rediscovering it.
Does a per-country override replace the whole plan?
No. It merges. You set the fields that differ for that country and the rest still inherits from your configuration and Bird's base, so an override is a small, targeted change rather than a full re-specification.
Can I enable a channel Bird doesn't offer in a country?
No. Per-country availability is a ceiling, not a default: you can only enable what Bird supports there. Enabling an unavailable channel is a no-op rather than a silent failure, so a plan can never promise a channel that can't actually send.
How is the country determined?
From the recipient's E.164 phone number, at resolve time. You don't pass a country; Bird derives it and applies the matching route. Email is country-independent.
How are the codes generated and stored?
With a cryptographic random source, and stored only as an HMAC-SHA256 hash that is compared in constant time. The plaintext code is never returned by the API and never written to your stack or our logs.
How do you stop someone brute-forcing the code?
Each session has a bounded number of checks (5 by default), and each one is compared in constant time so timing leaks nothing. Once the budget is spent the session fails, so an attacker can't keep guessing.
Do these protections cost extra?
No. Cryptographic generation, hashed storage, constant-time checks, attempt lockout, and send caps are how every verification behaves: there's no security tier to buy.
Where is my data stored?
In the region your organization is hosted in, either us1 or eu1. Your API key carries it in its prefix (bk_us1_…, bk_eu1_…), which is how the SDKs and the CLI pick the right endpoint without you configuring one.
What can an API key actually do?
Only what you scope it to. A key carries a list of scopes, each at read or write, so a key that creates verifications need not carry anything else. You can also pin a key to a set of CIDR ranges, and rotate it with a grace period (24 hours by default) so a roll needs no downtime.
Where do I get your security and data-protection paperwork?
Certifications and security documentation live in the Trust Center at trust.bird.com. The data processing agreement, privacy statement and acceptable use policy are published at bird.com/legal. For a vendor questionnaire, your Bird account team handles it.