Bird Verify
W wersji previewAPI weryfikacji, w którym nie musisz niczego przechowywać.
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.
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.
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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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
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.
Poznaj platformę Verify
Każda funkcjonalność w szczegółach. Jedno API, jeden zestaw kluczy.
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.
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.
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.
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.
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.
await bird.verify.verifications.create({
to: { phone_number: "+15551234567" },
});SMS
Surowe wysyłanie — gdy chcesz samodzielnie kontrolować generowanie kodu i politykę ponownych prób.
await bird.sms.send({
from: "Bird",
to: "+15551234567",
text: `Your code is ${code}.`,
});Verify API — FAQ
Jak dodać weryfikację do mojej aplikacji?+
Przez jakie kanały mogę weryfikować?+
Czy muszę przechowywać identyfikator weryfikacji?+
Co się dzieje, gdy ktoś wprowadzi błędny kod?+
Jak kody są generowane i przechowywane?+
Ile to kosztuje?+
Od kogo moi użytkownicy widzą kod?+
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.comWeryfikacja 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.