Bird vs Prelude

Bird vs Prelude voor Verify

Prelude is gebouwd rond een risico-oordeel waarop u kunt vertakken, en Bird heeft daar geen equivalent voor. De twee API's lijken verder genoeg op elkaar dat een overstap grotendeels een hernoeming is. Op deze pagina leest u welk van die twee feiten zwaarder weegt voor wat u bouwt.

Waar Prelude goed in is.
Waarin Bird verschilt.

Waar Prelude goed in is

Een oordeel waarop u kunt vertakken. De create-aanroep accepteert IP-, apparaat- en fingerprint-signalen en antwoordt met een routeringsoordeel van success, retry, challenged, blocked of shadow_blocked, met een reden wanneer het weigert. Bird's create antwoordt met de verificatie zelf: er is geen oordeel, geen signals-object en geen shadow block. Een aanmeldproces dat op die beslissing wacht, moet die nemen voordat het Bird aanroept.

Kanalen die Bird niet bereikt. Een spraakoproep, RCS, Viber, Zalo en stille netwerkauthenticatie, in meer dan 230 landen. Beide platforms bieden SMS, WhatsApp en Telegram, dus het verschil zit in die vijf en niet in de hele mix: een nummer dat Prelude via Viber of Zalo bereikte, valt hier terug op SMS — een leveringspercentagevraag die het waard is om in een pilot te meten in plaats van bij volledig volume te ontdekken.

Het bericht en de fallback bepaalt u zelf. Een template met variabelen, een locale, uw eigen afzender-ID en een aangepaste code zijn allemaal per aanvraag instelbaar, en max_auto_fallbacks en force_challenge sturen de escalatie per aanroep. Bij Bird is de passcodetekst van Bird en de fallback volgt het kanaalplan van het land; afzenders worden per kanaal geconfigureerd in plaats van per aanvraag, en alleen het e-mailkanaal kan een eigen adres gebruiken.

Waarin Bird verschilt

Een mislukte check vertelt u welk type fout het was. Prelude vouwt een verkeerde code en uitgeputte pogingen samen in één mislukkingsstatus. Bird antwoordt met een reden van incorrect_code, expired of attempts_exhausted, en geeft daarnaast attempts_remaining terug, zodat het scherm een gebruiker kan laten zien hoeveel pogingen er nog over zijn zonder ze zelf bij te houden.

Bezorggebeurtenissen zijn een ondertekend workspace-abonnement. Prelude stuurt naar een callback_url die u per verificatie instelt. Bij Bird worden endpoints eenmalig geregistreerd, elk geabonneerd op de gewenste eventtypen, en elke bezorging wordt ondertekend volgens Standard Webhooks — zo verdwijnt de URL uit de request body en heeft de ontvanger iets om te verifiëren.

Een agent kan de flow uitvoeren. Bird's gehoste MCP-server geeft een agent drie verificatietools tegen een echte workspace: een verificatie starten, een code controleren en doorgaan naar het volgende kanaal. De server kan het beleid erachter niet herconfigureren, en dat is bewust zo — geen omissie.

De matrix

Mogelijkheid per mogelijkheid.

De twee API's zijn gelijkvormig, dus de meeste rijen zijn gelijk en de verschillen zijn klein. Lees de rij over veilige herhaalpogingen naast de Twilio Verify-pagina: het is een Bird-pluspunt bij beide, omdat geen van beide create-aanroepen een idempotency key documenteert. Prelude's risicolaag is hierboven een concessie in plaats van een rij, omdat Bird niets levert om ermee te vergelijken.

CapabilityBirdPreludeWho wins?
Create-aanvraagJSON naar /v1/verify/verifications met een bearer key. De ontvanger is to.phone_number of to.email, en opnieuw create aanroepen voor een actieve ontvanger probeert opnieuw in plaats van een nieuwe verificatie te starten.JSON naar een v2-verificatie-endpoint met een bearer key. De ontvanger is target.type en target.value, en opnieuw create aanroepen voor een actieve ontvanger probeert op dezelfde manier opnieuw.
Veilige herhaalpogingenEen Idempotency-Key-header op de create maakt een herhaalpogíng veilig.Hun create-referentie documenteert geen idempotency key en geen eigen header, dus een herhaalpogíng na een timeout kan een tweede passcode versturen. dispatch_id is er geen: Prelude definieert het als de identifier van de dispatch die uit de front-end SDK kwam, waarmee hun fraudelaag de vastgelegde signalen aan deze verificatie kan koppelen.
Wat een mislukte check u verteltsuccess is false met een reden van incorrect_code, expired of attempts_exhausted, en daarnaast attempts_remaining.Een status van failure dekt zowel een verkeerde code als uitgeputte pogingen, met expired_or_not_found als aparte waarde. De twee soorten mislukkingen worden niet onderscheiden.
Kanalen waarop een passcode kan aankomenE-mail, SMS, WhatsApp en Telegram. Voice is gelabeld als Rolling out in plaats van uitgebracht.Hun gepubliceerde kanaalmix is SMS, voice, RCS, WhatsApp, Telegram, Viber, Zalo en stille netwerkauthenticatie, in meer dan 230 landen, met automatische fallback ertussen.
BezorggebeurtenissenEen workspace-webhook geabonneerd op de verify-eventtypen die u opgeeft, zoals verify.verification.verified en verify.attempt.delivered, ondertekend volgens Standard Webhooks.Een callback_url die per verificatie wordt ingesteld op de create-aanvraag, zodat de bestemming met elke aanroep meereist.
Fallback-beheerHet kanaalplan van het land bepaalt de volgorde en wordt automatisch doorlopen, met een bezorgtimer per poging die doorgaat wanneer er geen bezorgstatus binnenkomt. Een next-channel-aanroep laat één verificatie ook op aanvraag doorgaan.max_auto_fallbacks en force_challenge sturen de escalatie op de create-aanvraag zelf.
Gehoste MCP-serverDrie verificatietools op de gehoste server op mcp.bird.com: een verificatie starten, een code controleren en doorgaan naar het volgende kanaal. Configuratie zit er niet bij.Prelude publiceert backend-SDK's voor Node.js, Python, Go, Kotlin/Java, Ruby, PHP en C#, en frontend-SDK's voor Web, Android, iOS, React Native en Flutter — het agentverhaal is dus een library die uw eigen runtime aanroept.
Codelengteoptions.code_length bij het aanmaken, anders de standaardinstelling van de workspace.options.code_size bij het aanmaken.

Dezelfde verificatie

Eén verificatie starten.

De structuren lijken genoeg op elkaar dat het grotendeels een hernoeming is: target wordt to en code_size wordt code_length. Wat geen Bird-equivalent heeft, is het signals-object, dispatch_id als een van de inputs daarvoor, en er is geen verdict in het antwoord om op te vertakken. Wat alleen aan de Bird-kant verschijnt, is de Idempotency-Key header.

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);

Overstapkosten

Laag, tenzij u de risicolaag gebruikt.

Beide API's gebruiken de ontvanger als sleutel in plaats van een verificatie-ID, dus de aanroepen zijn bijna ongewijzigd over te zetten: target.value wordt to.phone_number of to.email, code_size wordt code_length, en de callback_url per verificatie wordt een workspace-webhook die is geabonneerd op de verify-eventtypes die u opgeeft. dispatch_id heeft geen plek, omdat het bij de onderliggende risicolaag hoort in plaats van bij de mechaniek van de create-aanroep, en Bird's create accepteert een Idempotency-Key header die Prelude niet documenteert.

De risicolaag is het deel dat helemaal geen port is. Als u vertakt op Prelude's verdict, signalen meestuurt met de create, of vertrouwt op een shadow block, is er aan de Bird-kant niets om die logica naartoe te verplaatsen en moet de beslissing vóór de aanroep plaatsvinden. Breng die kloof eerst in kaart, want al het andere hier is een middag werk.

Vragen die mensen daadwerkelijk stellen

Is Bird een goed Prelude-alternatief?
Als u Prelude als verificatie-API gebruikt, ja: de aanroepen zijn vergelijkbaar opgebouwd, de port komt neer op een hernoeming, en Bird vertelt u meer over een mislukte controle dan Prelude. Als u Prelude als fraudeproduct gebruikt, nee. De signalen, het routing-verdict en de shadow block hebben geen Bird-equivalent, en dat is de vraag die u eerst moet beantwoorden.
Wat gebeurt er met Prelude's signalen en verdict?
Niets wordt overgenomen. Bird's create accepteert geen signals-object en antwoordt met de verificatie in plaats van een beslissing, dus een integratie die aanmeldingen blokkeert op basis van Prelude's verdict moet die beslissing zelf nemen voordat Bird wordt aangeroepen. Wat Bird in die ruimte biedt, is beperkter en voornamelijk configuratie: activering per land zodat u bestemmingen kunt uitschakelen die u nooit bedient, en platform-limieten voor verzenden en controleren.
Verlies ik veilige retries door over te stappen?
U wint ze erbij. Prelude's create-referentie documenteert geen idempotentiesleutel en geen eigen header, en dispatch_id is er geen: het is de identifier van de dispatch afkomstig van hun front-end SDK, die hun fraudelaag gebruikt om vastgelegde signalen aan een verificatie te koppelen. Bird's create accepteert een Idempotency-Key header, en een herhaald verzoek wordt als zodanig gemarkeerd teruggegeven, zodat een retry na een timeout de verificatie retourneert die al loopt in plaats van een tweede code naar het toestel te sturen.
Welke kanalen verlies ik?
Een spraakoproep, RCS, Viber, Zalo en stille netwerkauthenticatie. SMS, WhatsApp en Telegram zijn bij beide beschikbaar, en Bird voegt e-mail toe, dus de kloof is kleiner dan het aantal kanalen doet vermoeden. Een nummer dat Prelude via Viber of Zalo bereikte, valt bij Bird terug op SMS — meet daarom het afleverpercentage voor die markten in een pilot in plaats van op vol volume.

Begin met één kanaal.
Voeg de rest toe wanneer je er klaar voor bent.

Een test-API-key is direct beschikbaar. Productietoegang wordt ontgrendeld zodra je een betaalmethode toevoegt en een afzender verifieert.

Gebruik je Claude Code, Cursor of Codex? Kopieer een setup-prompt en je agent installeert de Bird CLI en skills voor je. Kies de jouwe:

Cursor