# Verify for developers

Confirm access. Keep it simple. Verify control of a phone number or email address.

[Get started](/dashboard/signup?returnTo=%2Fdashboard%2Fw%2Fverify)

[Contact Sales](/demo?product=verify)

[Read customer stories](/customers)

[Explore Enterprise](/enterprise)

- [Airwallex](/customers/airwallex)
- [Glovo](/customers/glovo)
- [Zillow](/customers/zillow)
- Uber
- [Binance](/customers/binance)
- Adobe
- Meta
- PayPal
- Pinterest
- Square
- [Al Jazeera](/customers/aljazeera)
- [Aramex](/customers/aramex)
- [Bazaar Technologies](/customers/bazaar)
- [ComparaOnline](/customers/compara)
- [Emma](/customers/emma)

## From a code to confirmed.

Send a code and check the recipient’s answer. Build with your agent, terminal or preferred SDK.

**MCP**: `Bird MCP`

```json
https://mcp.bird.com
```

## A code received.  A recipient confirmed.

Bring the verification into your sign-in flow. Collect the code, check the answer, and help the customer continue.

 Harbor Secure account access

### Confirm your number

We sent a six-digit code to  +1 555 123 4567

  MESSAGES now Bird Verify Your verification code is 123456 .
 1 2 3 4 5 6
 Code confirmed
 Recipient confirmed `success: true`

Your application decides whether to grant access.

Correct codeWrong codeExpired

[Explore recipient verification](/docs/guides/verify/sending-verifications#check-the-code)
Illustrative product records. These controls change the example only; no request or purchase is made.

## Another channel.  The same verification.

Keep signup moving when the first code does not arrive. Use the next eligible channel in the recipient’s plan.

 Delivery failedNo code received

 Verification delivery `vrf_…1048`
 A +1 555 123 4567 One recipient · Two eligible channels

- WhatsApp Delivery failed
Failed
- SMS Next eligible channel
Code sent Harbor Your verification code is 123456.  Delivered
 Continue on SMS

The recipient can now enter the code.

Same verification Same expiry `pending`

[User-requested fallback](/docs/guides/verify/sending-verifications#send-the-code-on-another-channel)
[Explore channel configuration](/verify-api/features/orchestration)
Illustrative product records. These controls change the example only; no request or purchase is made.

## Follow every attempt.  Keep the final answer.

See delivery, checks and the final answer together. Give every signup a traceable result.

 Verifications `Production / Signup 1048`
 A Recipient +1 555 123 4567 Verified

Verification
vrf_…1048

Channel
SMS

Created
10:42:00 UTC

Activity
- Verification created Code generated and delivery requested
10:42:00
- Code delivered Recipient check still pending
10:42:02
- Correct code checked The recipient supplied a matching code
10:42:18Check response `200 OK`
`{ "success": true }`verified

 VerifiedExpiredAttempts exhausted

Store this definitive result in your application.

 [Verification settings](/docs/guides/verify/sending-verifications#verification-settings)
[Explore verification events](/docs/guides/verify/sending-verifications#track-verifications-in-the-dashboard)
Illustrative product records. These controls change the example only; no request or purchase is made.

## Explore Verify.

From requesting a code to checking the result. Make every step clear.

[Verify API

Send a passcode. Check whether the answer is correct.](#integrate)[SMS verification

Deliver a verification code by text message.](/verify-api/features/sms)[Email verification

Confirm control of an email address.](/verify-api/features/email)[WhatsApp verification

Deliver a managed passcode through WhatsApp.](/verify-api/features/whatsapp)[Fallback delivery

Give an undelivered code another configured route.](/verify-api/features/orchestration)[Country controls

Choose where and how verification delivery is attempted.](/docs/guides/verify/countries)[Sender branding

Choose the identity customers see with the code.](/docs/guides/verify/senders)[Code controls

Set code lifetimes, attempt limits and resend cooldowns.](/docs/guides/verify/sending-verifications#options)[Verification logs

Inspect the state and timing of a verification attempt.](/docs/guides/verify/sending-verifications#track-verifications-in-the-dashboard)[Webhooks

React to verification lifecycle events.](/docs/guides/verify/events)

## Scale without  losing control.

Organize teams in workspaces, control API access, and trace changes through audit logs.

Harbor Organization
Workspaces Production Sandbox

### Delivery agent

API key · Customer operations team
Active
Permissions Access
Email Read & write
SMS Read & write
WhatsApp Read Read & write
AL Alex Lee Admin  Permissions updated

### Audit log

Production
 API key updated Alex Lee · 09:42:18 UTC

Workspace
Production

Resource
Delivery agent

WhatsApp
Read Read & write

Succeeded

 [Workspaces](/docs/guides/workspaces)[Team roles](/docs/guides/users-teams-roles)[API authentication](/docs/guides/authentication)
[Explore Enterprise](/enterprise)

Examples: [MCP](/de-de/verify-api.mcp.md) · [CLI](/de-de/verify-api.cli.md) · [TypeScript](/de-de/verify-api.ts.md) · [Python](/de-de/verify-api.py.md) · [Go](/de-de/verify-api.go.md) · [PHP](/de-de/verify-api.php.md) · [cURL](/de-de/verify-api.curl.md)

## Start with Verify. Build across channels with Bird.

[Get started](/dashboard/signup?returnTo=%2Fdashboard%2Fw%2Fverify) · [Contact Sales](/demo?product=verify)

[Email](/email-api) · [SMS](/sms-api) · [WhatsApp](/whatsapp-api) · [Apple Messages](/apple-messages-api) · [Voice](/voice-api)



## Related resources

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

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