Bird kontra Prelude

Bird kontra Prelude — weryfikacja

Prelude opiera się na werdykcie ryzyka, na podstawie którego można rozgałęzić logikę — Bird nie ma odpowiednika tej funkcji. Poza tym oba API są na tyle podobne, że migracja sprowadza się głównie do zmiany nazw. Na tej stronie wyjaśniamy, który z tych dwóch faktów ma większe znaczenie dla tego, co budujesz.

W czym Prelude jest świetny.
Czym Bird się różni.

W czym Prelude jest świetny

Werdykt, na którym można rozgałęzić logikę. Wywołanie create przyjmuje sygnały IP, urządzenia i fingerprint, a w odpowiedzi zwraca werdykt routingu: success, retry, challenged, blocked lub shadow_blocked — z uzasadnieniem w przypadku odmowy. Wywołanie create w Bird zwraca samą weryfikację: nie ma werdyktu, obiektu sygnałów ani shadow block. Rejestracja uzależniona od tej decyzji musi ją podjąć, zanim wywoła Bird.

Kanały, których Bird nie obsługuje. Połączenie głosowe, RCS, Viber, Zalo i cicha autoryzacja sieciowa — w ponad 230 krajach. Obie platformy obsługują SMS, WhatsApp i Telegram, więc różnica dotyczy tych pięciu kanałów, a nie całego zestawu: numer, do którego Prelude dotarł przez Viber lub Zalo, tutaj wraca na SMS — to kwestia wskaźnika dostarczalności, którą warto zmierzyć w pilotażu, zamiast odkrywać przy pełnym wolumenie.

Treść wiadomości i fallback są pod Twoją kontrolą. Szablon ze zmiennymi, lokalizacja, własny sender ID i niestandardowy kod — wszystko ustawiane per żądanie. max_auto_fallbacks i force_challenge regulują eskalację per wywołanie. W Bird tekst kodu jest ustalony przez Bird, a fallback wynika z planu kanałów dla danego kraju; nadawcy są konfigurowane per kanał, a nie per żądanie, i tylko w przypadku e-maila można użyć własnego adresu.

Czym Bird się różni

Nieudana weryfikacja informuje o rodzaju błędu. Prelude łączy błędny kod i wyczerpanie prób w jeden status failure. Bird odpowiada powodem: incorrect_code, expired lub attempts_exhausted, a obok zwraca attempts_remaining, dzięki czemu ekran może poinformować użytkownika, ile prób mu zostało — bez samodzielnego liczenia.

Zdarzenia dostarczenia to podpisana subskrypcja workspace'u. Prelude wysyła na callback_url ustawiany per weryfikacja. Endpointy Bird rejestruje się raz, każdy subskrybowany na wybrane typy zdarzeń, a każda dostawa jest podpisana zgodnie ze Standard Webhooks — URL nie trafia do body żądania, a odbiorca ma co zweryfikować.

Agent może przeprowadzić cały proces. Hostowany serwer MCP od Bird udostępnia agentowi trzy narzędzia weryfikacyjne w prawdziwym workspace: rozpoczęcie weryfikacji, sprawdzenie kodu i przejście do następnego kanału. Nie może rekonfigurować polityki stojącej za nimi — to celowe, nie przeoczenie.

Macierz porównawcza

Porównanie funkcja po funkcji.

Oba API mają zbliżoną strukturę, więc większość wierszy jest wyrównana, a różnice są niewielkie. Porównaj wiersz dotyczący bezpiecznych ponowień ze stroną Twilio Verify: w obu przypadkach wygrywa Bird, bo żadne z wywołań create nie dokumentuje klucza idempotencji. Warstwa ryzyka Prelude jest ustępstwem opisanym powyżej, a nie wierszem w tabeli, ponieważ Bird nie oferuje niczego porównywalnego.

CapabilityBirdPreludeWho wins?
Żądanie createJSON na /v1/verify/verifications z kluczem bearer. Odbiorca to to.phone_number lub to.email, a ponowne wywołanie create dla aktywnego odbiorcy ponawia próbę zamiast tworzyć nową weryfikację.JSON na endpoint weryfikacji v2 z kluczem bearer. Odbiorca to target.type i target.value, a ponowne wywołanie create dla aktywnego odbiorcy ponawia próbę w ten sam sposób.
Bezpieczne ponowieniaNagłówek Idempotency-Key w żądaniu create sprawia, że ponowienie jest bezpieczne.Dokumentacja ich create nie opisuje klucza idempotencji ani własnego nagłówka, więc ponowienie po timeout-cie może wygenerować drugi kod. dispatch_id nim nie jest: Prelude definiuje go jako identyfikator dispatchu pochodzącego z front-endowego SDK, który pozwala ich warstwie antyfraudowej powiązać przechwycone sygnały z tą weryfikacją.
Co mówi nieudana weryfikacjasuccess równa się false z powodem: incorrect_code, expired lub attempts_exhausted, a obok attempts_remaining.Status failure obejmuje zarówno błędny kod, jak i wyczerpanie prób; expired_or_not_found to osobna wartość. Oba rodzaje niepowodzenia nie są rozróżniane.
Kanały dostarczenia koduE-mail, SMS, WhatsApp i Telegram. Kanał głosowy jest oznaczony jako „Rolling outOpublikowana lista kanałów obejmuje SMS, połączenie głosowe, RCS, WhatsApp, Telegram, Viber, Zalo i cichą autoryzację sieciową — w ponad 230 krajach, z automatycznym fallbackiem między nimi.
Zdarzenia dostarczeniaWebhook workspace'u subskrybowany na wybrane typy zdarzeń weryfikacyjnych, takie jak verify.verification.verified i verify.attempt.delivered, podpisany zgodnie ze Standard Webhooks.callback_url ustawiany per weryfikacja w żądaniu create, więc adres docelowy podąża za każdym wywołaniem.
Kontrola fallbackuPlan kanałów kraju ustala kolejność i jest realizowany automatycznie — timer dostarczenia per próba przesuwa do następnego kanału, gdy nie nadchodzi status dostarczenia. Wywołanie next-channel przesuwa pojedynczą weryfikację na żądanie.max_auto_fallbacks i force_challenge regulują eskalację bezpośrednio w żądaniu create.
Hostowany serwer MCPTrzy narzędzia weryfikacyjne na hostowanym serwerze mcp.bird.com: rozpoczęcie weryfikacji, sprawdzenie kodu i przejście do następnego kanału. Konfiguracja nie jest wśród nich.Prelude publikuje backendowe SDK dla Node.js, Python, Go, Kotlin/Java, Ruby, PHP i C# oraz frontendowe SDK dla Web, Android, iOS, React Native i Flutter — więc historia agentowa to biblioteka wywoływana przez Twoje własne środowisko uruchomieniowe.
Długość koduoptions.code_length przy tworzeniu, w przeciwnym razie domyślna wartość workspace'a.options.code_size przy tworzeniu.

Ta sama weryfikacja

Rozpoczęcie jednej weryfikacji.

Struktury są na tyle podobne, że w większości sprowadza się to do zmiany nazw: target staje się to, a code_size staje się code_length. To, co nie ma odpowiednika w Bird, to obiekt signals, dispatch_id wśród elementów, które go zasilają, oraz brak verdict w odpowiedzi, na podstawie którego można rozgałęziać logikę. To, co pojawia się tylko po stronie Bird, to nagłówek Idempotency-Key.

Prelude

verify.ts
const signupId = crypto.randomUUID();

const response = await fetch("https://api.prelude.dev/v2/verification", {
  method:  "POST",
  headers: {
    Authorization:  `Bearer ${process.env.PRELUDE_API_TOKEN}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    target:      { type: "phone_number", value: "+15551234567" },
    dispatch_id: signupId,
    options:     { code_size: 6 },
  }),
});

const verification = await response.json();
console.log(verification.id, verification.status);

Bird

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

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

const signupId = crypto.randomUUID();

const { data, error } = await bird.verify.verifications
  .create(
    {
      to:      { phone_number: "+15551234567" },
      options: { code_length: 6 },
    },
    { idempotencyKey: signupId },
  )
  .safe();

if (error) console.error(error.message);
else console.log(data.id, data.status);

Koszt migracji

Niski, chyba że korzystasz z warstwy oceny ryzyka.

Oba API opierają się na odbiorcy, a nie na identyfikatorze weryfikacji, więc wywołania przenoszą się niemal bez zmian: target.value staje się to.phone_number lub to.email, code_size staje się code_length, a callback_url przypisany do pojedynczej weryfikacji zostaje zastąpiony webhookiem workspace'a subskrybującym wybrane typy zdarzeń verify. dispatch_id nie ma swojego odpowiednika, ponieważ należy do warstwy oceny ryzyka, a nie do mechaniki wywołania create. Ponadto create w Bird przyjmuje nagłówek Idempotency-Key, którego Prelude nie dokumentuje.

Warstwa oceny ryzyka to część, która w ogóle nie jest zwykłym przeniesieniem. Jeśli rozgałęziasz logikę na podstawie verdict z Prelude, wysyłasz signals przy tworzeniu lub polegasz na shadow block, po stronie Bird nie ma niczego, do czego można przenieść tę logikę — decyzja musi zapaść przed wywołaniem. Najpierw oceń tę lukę, bo cała reszta to jedno popołudnie pracy.

Pytania, które ludzie faktycznie zadają

Czy Bird jest dobrą alternatywą dla Prelude?
Jeśli używasz Prelude jako API weryfikacji — tak: wywołania mają podobną strukturę, migracja sprowadza się niemal do zmiany nazw, a Bird dostarcza więcej informacji o nieudanym sprawdzeniu niż Prelude. Jeśli używasz Prelude jako produktu antyfraudowego — nie. Signals, routing verdict i shadow block nie mają odpowiednika w Bird i to jest kwestia do rozstrzygnięcia przed czymkolwiek innym.
Co się dzieje z signals i verdict z Prelude?
Nic się nie przenosi. Create w Bird nie przyjmuje obiektu signals i zwraca weryfikację zamiast decyzji, więc integracja, która uzależnia rejestracje od verdict Prelude, musi podjąć tę decyzję samodzielnie, zanim wywoła Bird. To, co Bird oferuje w tym obszarze, jest węższe i głównie konfiguracyjne: włączanie/wyłączanie per kraj, aby odciąć destynacje, których nie obsługujesz, oraz limity wysyłek i sprawdzeń na poziomie platformy.
Czy tracę bezpieczne ponowne próby przy migracji?
Zyskujesz je. Dokumentacja create Prelude nie opisuje klucza idempotentności ani własnego nagłówka, a dispatch_id nim nie jest: to identyfikator dispatcha pochodzącego z ich front-endowego SDK, którego warstwa antyfraudowa używa do powiązania przechwyconych sygnałów z weryfikacją. Create w Bird przyjmuje nagłówek Idempotency-Key, a powtórzone żądanie wraca oznaczone jako takie, więc ponowna próba po timeout-cie zwraca weryfikację już w toku zamiast wysyłać drugi kod na urządzenie.
Które kanały tracę?
Połączenie głosowe, RCS, Viber, Zalo i cichą autentykację sieciową. SMS, WhatsApp i Telegram są dostępne na obu platformach, a Bird dodaje e-mail, więc luka jest węższa, niż sugerują same liczby kanałów. Numer, do którego Prelude docierał przez Viber lub Zalo, na Bird przejdzie na SMS, więc mierz wskaźnik dostarczalności dla tych rynków w pilocie, a nie na pełnym wolumenie.

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