Verify overview
Bird Verify confirms that a user controls an email address or phone number. Ask Bird to send a one-time passcode, collect it in your app, and ask Bird whether it matches. The flow uses two API calls: POST /v1/verify/verifications sends the code, and POST /v1/verify/verifications/check checks it. Bird's shared senders require no sender registration or template setup. Email, SMS, and WhatsApp send under one of two Bird-managed identities, Bird Verify by default or Authifly, which keeps any platform vendor out of sight of your users; Telegram uses its own verified notification account. Senders and branding covers the choice.
How a verification works
You create a verification with a recipient: an email address, a phone number, or both. Bird generates a numeric passcode and delivers it over the recipient's channels. An email address gets the code by email; a phone number gets it by SMS or WhatsApp, in the order and availability your country configuration sets for the destination country. The user types the code into your app, and you submit it to the check endpoint, which answers success: true or false with a reason.
A verification walks a small lifecycle: it starts pending, and ends verified (a correct code arrived in time), failed (too many wrong attempts), or expired (the window elapsed). The Verifications page shows every verification and its state; each state and reason is covered in Sending verifications.
The Verify app in the dashboard
In the dashboard, Verify is one of the workspace's apps. Its pages, and where each one's guide lives:
| Page | What it's for |
|---|---|
| Verifications | Every verification your workspace created, with status, recipient, channel, and timing; see Sending verifications |
| Countries | Per-country delivery: which channels are used, in what order, and whether a country is enabled at all; see Country configuration |
| Configure | Code lifetime, attempt limits, resend cooldown, and the sender each channel uses; see Sending verifications and Senders and branding |
Visibility
The Verifications page lists every verification in the workspace and opens each one's recipient, channel plan, and timing details. Programmatically, the check response carries the verification's current state. Subscribe to Verify events for creation, delivery, and successful verification updates. List and read endpoints are available to the dashboard but not the public API.
Channels
Verify delivers codes over four channels. Which one a recipient gets depends on the recipient type and, for phone numbers, your country configuration.
| Channel | Recipient | How it's delivered |
|---|---|---|
| Email address | Sent from the Bird Verify or Authifly shared address; point it at your own verified sending domain any time | |
| SMS | Phone number | Delivered under Bird Verify or Authifly, as a branded sender ID or a local number depending on the destination |
| Phone number | Sent from the Bird Verify or Authifly business number as an authentication-template message | |
| Telegram | Phone number | Delivered by the Telegram Gateway to a number registered with Telegram, from its own verified notification account |
For a phone recipient, WhatsApp is tried first and SMS acts as a fallback in most countries, though some default to SMS first. Telegram sits after SMS and before email in the platform fallback order. You can change the order or turn off a channel per country. If a send fails, delivery advances to the next channel in the plan. You can also advance it when a user reports that the code did not arrive; see Send the code on another channel. Senders and branding shows each message and the available sender controls.
Defaults and limits
Every workspace starts on Bird's platform defaults for the code itself (length, lifetime), the check attempt limit, and the resend cooldown. Each is adjustable in the dashboard under Configure, and code length also per request; the values and ranges live in Verification settings. On top of these sit abuse guardrails you don't configure: per-recipient send and check caps, listed in Abuse guardrails.
Next steps
| Page | What it covers |
|---|---|
| Sending verifications | The send and check calls, statuses, settings, and limits |
| Country configuration | Enabling countries and setting per-country channel order and senders |
| Senders and branding | What the code messages look like and how to send from your own domain |
| Events | The verification lifecycle and delivery events, and their webhook payloads |
| Authentication | API keys and regional hosts |
| API reference: create a verification | Send-endpoint schema and error details |
| API reference: check a code | Check-endpoint schema and error details |