---
title: "Verify overview"
description: "What Bird Verify is, how the send-and-check passcode flow works, which channels deliver codes, and where every guide in this section lives."
canonical: "https://bird.com/docs/guides/verify/overview"
---

# 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`](/docs/api/reference/create-verification) sends the code, and [`POST /v1/verify/verifications/check`](/docs/api/reference/create-verification-check) checks it. Bird's shared senders require no sender registration or template setup. Email, SMS, and WhatsApp can use **Bird Verify** by default, [Authifly](https://authifly.com), or a sender your workspace owns; Telegram uses its own verified notification account. [Senders and branding](/docs/guides/verify/senders) 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](/docs/guides/verify/countries) 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](https://bird.com/dashboard/w/verify/verifications) page shows every verification and its state; each state and reason is covered in [Sending verifications](/docs/guides/verify/sending-verifications#statuses).

## The Verify app in the dashboard

In the [dashboard](/docs/knowledge-base/getting-started/dashboard-tour), Verify is one of the workspace's apps. Its pages, and where each one's guide lives:

| Page                                                                   | What it's for                                                                                                                                                                                                                          |
| ---------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [**Verifications**](https://bird.com/dashboard/w/verify/verifications) | Every verification your workspace created, with status, recipient, channel, and timing; see [Sending verifications](/docs/guides/verify/sending-verifications)                                                                         |
| [**Countries**](https://bird.com/dashboard/w/verify/countries)         | Per-country delivery: which channels are used, in what order, and whether a country is enabled at all; see [Country configuration](/docs/guides/verify/countries)                                                                      |
| [**Configure**](https://bird.com/dashboard/w/verify/configure)         | Code lifetime, attempt limits, resend cooldown, and the sender each channel uses; see [Sending verifications](/docs/guides/verify/sending-verifications#verification-settings) and [Senders and branding](/docs/guides/verify/senders) |

## Visibility

The [**Verifications**](https://bird.com/dashboard/w/verify/verifications) page lists every verification in the workspace and opens each one's recipient, channel plan, and timing details. Programmatically, the [check response](/docs/guides/verify/sending-verifications#check-the-code) carries the verification's current state. Subscribe to [Verify events](/docs/guides/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](/docs/guides/verify/countries).

| Channel      | Recipient     | How it's delivered                                                                                                 |
| ------------ | ------------- | ------------------------------------------------------------------------------------------------------------------ |
| **Email**    | 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 from a Bird-managed sender or your Sender ID, subject to the destination's sender rules                  |
| **WhatsApp** | Phone number  | Sent from a Bird-managed number or your connected number with an approved authentication template                  |
| **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](/docs/guides/verify/sending-verifications#send-the-code-on-another-channel). [Senders and branding](/docs/guides/verify/senders) shows each message and the available sender controls.

## Defaults and limits

Your 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**](https://bird.com/dashboard/w/verify/configure), and code length also per request; the values and ranges live in [Verification settings](/docs/guides/verify/sending-verifications#verification-settings). On top of these sit abuse guardrails you don't configure: per-recipient send and check caps, listed in [Abuse guardrails](/docs/guides/verify/sending-verifications#abuse-guardrails). The code message itself defaults to the language of the recipient's phone number, one of 40 built-in translations, and `options.language` overrides it per request. See [Message language](/docs/guides/verify/sending-verifications#message-language).

## Next steps

| Page                                                                            | What it covers                                                             |
| ------------------------------------------------------------------------------- | -------------------------------------------------------------------------- |
| [Sending verifications](/docs/guides/verify/sending-verifications)              | The send and check calls, statuses, settings, and limits                   |
| [Country configuration](/docs/guides/verify/countries)                          | Enabling countries and setting per-country channel order and senders       |
| [Senders and branding](/docs/guides/verify/senders)                             | What the code messages look like and how to send from your own domain      |
| [Events](/docs/guides/verify/events)                                            | The verification lifecycle and delivery events, and their webhook payloads |
| [Authentication](/docs/guides/authentication)                                   | API keys and regional hosts                                                |
| [API reference: create a verification](/docs/api/reference/create-verification) | Send-endpoint schema and error details                                     |
| [API reference: check a code](/docs/api/reference/create-verification-check)    | Check-endpoint schema and error details                                    |

## Related resources

- [Verify phone numbers at signup](/learn/series/verify-phone-numbers-at-signup) (video)
- [What does OTP mean? One-time passwords explained](/explained/verify/what-does-otp-mean) (answer)
- [Customer verification](/verify-api) (product)
- [Build your first integration](/learn/paths/integration) (course)

[Get an implementation brief](/learn/workspace?topic=verify)
