Bird Verify

API weryfikacji, w którym nie musisz niczego przechowywać.

Wyślij jednorazowy kod przez e-mail, SMS lub WhatsApp, a następnie zweryfikuj go po odbiorcy — bez konieczności przechowywania identyfikatora weryfikacji między dwoma wywołaniami. Kolejność kanałów, nadawca i reguły kodu są już automatycznie rozstrzygane dla każdego kraju. Ta sama autoryzacja i idempotentność jak w każdym innym kanale Bird, ponieważ ten sam zespół zbudował je wszystkie. Obsługa głosowa jest wdrażana jako następna.

Cursor
verify.ts
200 · pending
import { BirdClient } from "@messagebird/sdk";

const bird = new BirdClient({
  apiKey: process.env.BIRD_API_KEY!,
});

// Send the code, then check it by recipient.
await bird.verify.verifications.create({
  to: { phone_number: "+15551234567" },
}).safe();

const { data, error } = await bird.verify.verifications.check({
  to:   { phone_number: "+15551234567" },
  code: userInput,
}).safe();
if (error) throw error;
Verification flow

Your account

Confirm it’s you.

Enter the code sent to

+1 ••• ••• 4567

Example verification code

482691
Code verified
Send a code. Confirm the recipient.

Zaufanie zespołów, które tworzą oprogramowanie najwyższej klasy

Poznaj więcej historii klientów

Dwa wywołania od npm install do zweryfikowanego użytkownika

Wyślij kod, a następnie sprawdź go — w języku, którego już używasz.

Create-or-retry wysyła kod; check potwierdza go po odbiorcy. Dwa wywołania i żaden identyfikator weryfikacji do przekazywania między nimi.

1
2
3
4
const verification = await bird.verify.verifications.create({
  to: { phone_number: "+15551234567" },
});
console.log(verification.id, verification.status);

Dziesięć rzeczy, których nie budujesz, gdy weryfikacja jest w API.

Konkretne elementy, nazwane i konfigurowalne. Żadnego zamydlania oczu.

  1. 01

    Utwórz lub ponów jednym wywołaniem.

    Wyślij ponownie tego samego odbiorcę, a my wznowimy aktywną sesję i wyślemy kod po upływie cooldownu. Bez osobnego endpointu ponownego wysyłania, bez zduplikowanych weryfikacji.

  2. 02

    Sprawdzaj po odbiorcy. Nie przechowuj niczego.

    Prześlij odbiorcę i kod; my rozwiążemy sesję na podstawie pary konfiguracja–odbiorca. Nie ma identyfikatora weryfikacji do przechowywania między wysłaniem a sprawdzeniem.

  3. 03

    E-mail, SMS i WhatsApp na start.

    The recipient you pass picks the channel: an email address verifies by email, a phone number by SMS or WhatsApp. Switching channels is a one-field change, not a new integration. Delivery failure can advance the verification to the next available channel. Voice is rolling out next.

  4. 04

    Kolejność kanałów w podziale na kraj — już rozstrzygnięta.

    Kolejność kanałów, nadawca i dostępne kanały różnią się w zależności od kraju. Baza Bird w podziale na kraj decyduje o tym automatycznie, więc wywołanie create od razu rozstrzyga właściwy plan w każdym miejscu.

  5. 05

    Kody, których nigdy nie widzisz.

    Generowany z kryptograficznego źródła losowego, przechowywany wyłącznie jako HMAC, porównywany w stałym czasie. Kod w postaci jawnej nigdy nie trafia na Twój stos ani do naszych logów.

  6. 06

    Konfigurowalny kod, TTL, liczba prób.

    Six-digit default, 4–8 configurable per request; a 10-minute window; 5 attempts; a 60-second resend cooldown.

  7. 07

    Każdy kod pozostaje ważny aż do zakończenia sesji.

    Opóźniona wiadomość i świeżo wysłany ponownie kod — oba weryfikują, ponieważ nie unieważniamy wcześniejszego kodu po wygenerowaniu nowego.

  8. 08

    Błędny kod to 200, nie wyjątek.

    Sprawdzaj odpowiedzi za pomocą wyniku logicznego — czy kod został zweryfikowany, tak lub nie — oraz powodu, który wyjaśnia niepowodzenie: nieprawidłowy, wygasły, już zweryfikowany lub wyczerpane próby. Rozgałęziasz logikę na podstawie pola, nigdy na podstawie rzuconego błędu.

  9. 09

    Wbudowane limity częstotliwości.

    Limity wysyłek per odbiorca i limit prób per weryfikacja — każdy jako 429 z Retry-After, więc brute force wyczerpie się, zanim Ty się wyczerpiesz.

  10. 10

    Ten sam kontrakt co reszta Bird.

    Autoryzacja Bearer, klucz idempotentności, typowane identyfikatory vrf_, jedna koperta błędów. Handler, który napisałeś dla e-maila, pasuje też do weryfikacji.

Nie przechowuj niczego między wysłaniem a sprawdzeniem.

Większość API weryfikacji zwraca identyfikator, który musisz zapisać, wyszukać i przesłać kod do porównania. Bird rozwiązuje sesję na podstawie odbiorcy, więc po Twojej stronie nie ma żadnego stanu per weryfikacja.

Większość API weryfikacji

Create zwraca identyfikator, który zapisujesz, a potem wyszukujesz weryfikację, żeby sprawdzić kod.

id-keyed.ts
const { id } = await api.verifications.create({
  to: "+15551234567",
});
// persist id somewhere, then later…
await api.verifications.check({ id, code });

Bird Verify

Sprawdzaj po odbiorcy. Nie musisz przekazywać niczego między dwoma wywołaniami.

by-target.ts
await bird.verify.verifications.create({
  to: { phone_number: "+15551234567" },
}).safe();
// no id to store; check by the same recipient
await bird.verify.verifications.check({
  to: { phone_number: "+15551234567" }, code,
}).safe();

Routing już zna kraj.

Kolejność kanałów, nadawcy i dostępne kanały różnią się w zależności od kraju: WhatsApp jako pierwszy na jednym rynku, wyłącznie SMS na innym. Baza Bird w podziale na kraj decyduje o tym automatycznie, więc wywołanie create od razu rozstrzyga właściwy plan. Zobacz orkiestracja kanałów.

per-country.ts
200
// Brazil already resolves WhatsApp, then SMS.
const { data, error } = await bird.verify.verifications.create({
  to: { phone_number: "+5511998765432" },
}).safe();
if (error) throw error;

Weryfikacja to również decyzja produktowa: to samo API obsługuje uwierzytelnianie dwuskładnikowe i logowanie bez hasła. Najpierw walidujesz numer? Połącz to z Lookup. Ciche uwierzytelnianie sieciowe i aplikacje TOTP są w planie rozwoju.

Dlaczego budujemy Verify

Bo kod, który wpuszcza użytkownika, nie powinien potrzebować własnej tabeli w bazie danych.

OTP to kanał, w którym kod, który nie dotrze, to rejestracja, która się nie wydarzy. Bird już obsługuje e-mail i SMS na dużą skalę, więc Verify to ta sama dostarczalność plus generowanie kodu, sesja, plan kanałów per kraj i limity częstotliwości — za dwoma endpointami, które nie przechowują niczego po Twojej stronie i odpowiadają w tym samym formacie co każdy inny kanał Bird.

verify.ts
200 · pending
import { BirdClient } from "@messagebird/sdk";

const bird = new BirdClient({
  apiKey: process.env.BIRD_API_KEY!,
});

// Send the code, then check it by recipient.
await bird.verify.verifications.create({
  to: { phone_number: "+15551234567" },
}).safe();

const { data, error } = await bird.verify.verifications.check({
  to:   { phone_number: "+15551234567" },
  code: userInput,
}).safe();
if (error) throw error;

Jeśli zintegrowałeś SMS, zintegrowałeś Verify.

Ten sam model uwierzytelniania, ten sam kontrakt idempotentności, ta sama struktura błędów. Różnica polega na tym, że Verify generuje kod, wybiera kanał i zarządza limitami częstotliwości — więc Ty nie musisz.

Verify

Jedno wywołanie wysyła kod, drugie sprawdza go po odbiorcy. Kod, sesja i limity są po naszej stronie.

verify.ts
await bird.verify.verifications.create({
  to: { phone_number: "+15551234567" },
});

SMS

Surowe wysyłanie — gdy chcesz samodzielnie kontrolować generowanie kodu i politykę ponownych prób.

notify.ts
await bird.sms.send({
  from:     "Bird",
  to:       "+15551234567",
  text:     `Your code is ${code}.`,
  category: "authentication",
});

Wybierz nadawcę, którego widzą Twoi użytkownicy

Kody są domyślnie wysyłane przez Bird Verify i nie wymaga to rejestracji ani konfiguracji szablonów. Przełącz kanał na Authifly, a Twoi użytkownicy zobaczą neutralną tożsamość weryfikacyjną zamiast nazwy dostawcy platformy: e-mail z OTP przychodzi z adresu otp@verify.authifly.com, a SMS wyświetla nadawcę Authifly wszędzie tam, gdzie kraj docelowy zezwala na nadawcę markowego. Bird obsługuje obie tożsamości, więc wybór nie wiąże się z żadnymi dodatkowymi kosztami — dokonujesz go per kanał i per kraj. W przypadku e-maila możesz pójść dalej i wysyłać z domeny, którą samodzielnie zweryfikujesz. Jeśli odbiorca otrzyma nieoczekiwany kod, strona authifly.com zapewni go, że Authifly wysyła legalne kody jednorazowe w imieniu firmy. Authifly jest operowany przez Bird B.V.

Odwiedź authifly.com

Wyślij pierwsze żądanie, zanim napiszesz choćby linijkę kodu.

Całe publiczne API to kolekcja Postman, skonwertowana z tej samej specyfikacji OpenAPI, z której generowane są SDK, z przykładowym żądaniem i odpowiedzią na każdym endpoincie. Zforkuj ją do własnego obszaru roboczego, ustaw klucz API i wyślij żądanie na żywo.

Weryfikacja na tej samej platformie co reszta Twojej komunikacji.

Zacznij budować już dziś lub porozmawiaj z nami o kanałach, wolumenie i cenach, których potrzebujesz.

Twoje dane

Wszystkie pola kontaktowe są wymagane.

Dzięki temu nasz zespół może skontaktować się z Tobą w sprawie demo.

Produkty, które Cię interesują

Opcjonalne

Skontaktujemy się z Tobą, aby umówić demo.
Polityka prywatności

Zacznij od jednego kanału.
Dodaj kolejne, gdy będziesz gotowy.

Testowy klucz API otrzymasz od razu. Dostęp produkcyjny odblokujesz po dodaniu metody płatności i weryfikacji nadawcy.

Używasz Claude Code, Cursor lub Codex? Skopiuj prompt konfiguracyjny, a Twój agent zainstaluje za Ciebie Bird CLI i umiejętności. Wybierz swój:

Cursor