Bird Verify

W wersji preview

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

Konfiguracja w:
Cursor

Wyślij kod jednorazowy przez e-mail, SMS lub WhatsApp, a następnie sprawdź go po odbiorcy — bez identyfikatora weryfikacji do przechowywania między dwoma wywołaniami. Kolejność kanałów, nadawca i reguły kodu to konfiguracja per kraj, nie przebudowa. Ta sama autoryzacja i idempotentność co w każdym innym kanale Bird, bo ten sam zespół je wszystkie zbudował. Voice jest wdrażany jako następny.

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 } = await bird.verify.verifications.check({
  to:   { phone_number: "+15551234567" },
  code: userInput,
}).safe();

Dwa wywołania od instalacji 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
5
6
7
8
9
10
11
12
import { BirdClient } from "@messagebird/sdk";

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

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

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

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.

    Przekazany odbiorca determinuje kanał: adres e-mail oznacza weryfikację przez e-mail, numer telefonu — przez SMS lub WhatsApp. Zmiana kanału to zmiana jednego pola, a nie nowa integracja. Wkrótce pojawi się obsługa połączeń głosowych, a automatyczny fallback między kanałami jest w przygotowaniu.

  4. 04

    Kolejność kanałów per kraj — jako konfiguracja.

    Ustaw kolejność kanałów, nadawcę i aktywne kanały per kraj jako pełnoprawny zasób konfiguracyjny, a nie zgłoszenie do supportu.

  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.

    Domyślnie sześć cyfr, konfigurowalne od 4 do 10; 10-minutowe okno ważności; 5 prób; 60-sekundowy cooldown ponownego wysłania — ustawiane per konfiguracja. Długość kodu można też nadpisać w pojedynczym żądaniu.

  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 i kwoty.

    Limity wysyłek per odbiorca, limit prób per weryfikacja i dzienny limit per workspace — 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 per kraj to konfiguracja.

Ustaw kolejność kanałów, nadawcę i aktywne kanały per kraj — WhatsApp jako pierwszy na jednym rynku, tylko SMS na innym. To pełnoprawny zasób konfiguracyjny, uwzględniany w planie każdej weryfikacji. Zobacz orkiestracja kanałów.

per-country.ts
200
await bird.verify.verifications.configurations.countries.upsert(
  "vfc_login",
  "BR",
  { channels: [
    { channel: "whatsapp", state: "enabled" },
    { channel: "sms", state: "enabled" },
  ] },
).safe();

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 } = await bird.verify.verifications.check({
  to:   { phone_number: "+15551234567" },
  code: userInput,
}).safe();

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

Ten sam model autoryzacji, ten sam kontrakt idempotentności, ta sama koperta błędów. Różnica polega na tym, że Verify generuje kod, wybiera kanał i zarządza limitami — 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}.`,
});

Verify API — FAQ

Jak dodać weryfikację do mojej aplikacji?+
Dwa wywołania: utwórz weryfikację dla odbiorcy, a następnie sprawdź kod, który wprowadził. Sprawdzenie odbywa się po odbiorcy, więc nie trzeba przechowywać żadnego identyfikatora weryfikacji między wywołaniami — wystarczy identyfikator konfiguracji (stała wartość) i adres.
Przez jakie kanały mogę weryfikować?+
Obecnie e-mail, SMS i WhatsApp. Voice jest wdrażany jako dodatkowy kanał, a kolejność kanałów, nadawca i aktywne kanały można konfigurować per kraj — bez zmiany kodu.
Czy muszę przechowywać identyfikator weryfikacji?+
Nie. Ponowne wysłanie to to samo wywołanie create (create-or-retry), a sprawdzenie odbywa się po adresie odbiorcy, więc weryfikacja nie wymaga żadnego stanu po Twojej stronie. Identyfikator jest zwracany, jeśli chcesz później sprawdzić status, ale jest opcjonalny.
Co się dzieje, gdy ktoś wprowadzi błędny kod?+
Sprawdzenie zwraca 200 z wynikiem — invalid, dopóki pozostają próby, następnie failed po ich wyczerpaniu lub expired po upływie okna czasowego. Błędny kod to normalny wynik, na którym rozgałęziasz logikę, a nie błąd HTTP.
Jak kody są generowane i przechowywane?+
Kody są generowane z kryptograficznego źródła losowego i przechowywane wyłącznie jako hash HMAC-SHA256, porównywany w stałym czasie. Kod w postaci jawnej nigdy nie jest zwracany ani zapisywany w Twoim stosie technologicznym czy naszych logach. Długość (4–10 cyfr), TTL i limity prób są konfigurowalne.
Ile to kosztuje?+
Verify jest w wersji preview i nie znajduje się jeszcze w publicznym cenniku. Skontaktuj się z nami, a przedstawimy cennik dla Twoich kanałów i wolumenu.
Od kogo moi użytkownicy widzą kod?+
Authifly — marka weryfikacyjna Bird. To tożsamość na każdym kodzie, który otrzymują Twoi użytkownicy: e-mail przychodzi z otp@verify.authifly.com lub Twojej własnej zweryfikowanej domeny, a SMS i WhatsApp są oznaczone marką Authifly. authifly.com to publiczna strona, która zapewnia odbiorców, że Authifly wysyła prawidłowe kody jednorazowe w imieniu firmy. Bird to platforma, na której budujesz; Authifly to to, co widzi odbiorca.

Nadawca, którego widzą Twoi użytkownicy: Authifly

Twoi użytkownicy końcowi otrzymują kody od Authifly — marki weryfikacyjnej Bird. Na współdzielonych nadawcach e-mail z OTP przychodzi z otp@verify.authifly.com, a SMS zawiera nazwę Authifly w treści wiadomości — dzięki temu kody docierają zawsze pod jedną, spójną tożsamością, którą nie musisz samodzielnie obsługiwać. Jeśli odbiorca otrzyma nieoczekiwany kod, strona authifly.com zapewnia go, że Authifly wysyła legalne kody jednorazowe w imieniu firmy. Authifly jest obsługiwane przez Bird B.V.

Odwiedź authifly.com

Weryfikacja na tej samej platformie co reszta Twojej komunikacji.

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

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