Bird Verify

In preview

De verificatie-API zonder iets op te slaan.

Stel in met:
Cursor

Verstuur een eenmalige code via e-mail, SMS of WhatsApp en controleer deze op basis van ontvanger, zonder verificatie-id om tussen de twee calls te bewaren. De kanaalvolgorde, afzender en coderegels zijn configuratie per land, geen herbouw. Dezelfde auth en idempotency als elk ander Bird-kanaal, want hetzelfde team heeft ze allemaal gebouwd. Voice wordt als volgende uitgerold.

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

Twee calls van installatie tot een geverifieerde gebruiker

Verstuur een code en controleer deze, in de taal die u al gebruikt.

Create-or-retry verstuurt de code; check bevestigt deze op basis van ontvanger. Twee calls, zonder verificatie-id om ertussen door te geven.

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

Tien dingen die u niet hoeft te bouwen wanneer verificatie de API is.

Concrete primitieven, benoemd en configureerbaar. Geen vaag handgezwaai.

  1. 01

    Aanmaken of opnieuw proberen in één call.

    Post dezelfde ontvanger opnieuw en we hervatten de actieve sessie en versturen opnieuw zodra de cooldown verstreken is. Geen apart resend-endpoint, geen dubbele verificaties.

  2. 02

    Controleer op basis van ontvanger. Sla niets op.

    Dien de ontvanger en de code in; wij bepalen de sessie op basis van het configuratie-en-ontvangerpaar. Er is geen verificatie-id om te bewaren tussen verzenden en controleren.

  3. 03

    E-mail, SMS en WhatsApp bij lancering.

    De ontvanger die u meegeeft bepaalt het kanaal: een e-mailadres verifieert via e-mail, een telefoonnummer via SMS of WhatsApp. Van kanaal wisselen is een wijziging van één veld, geen nieuwe integratie. Voice wordt als volgende uitgerold, en automatische fallback tussen kanalen is onderweg.

  4. 04

    Kanaalvolgorde per land, als configuratie.

    Stel de kanaalvolgorde, de afzender en welke kanalen actief zijn in, per land, als een eersteklas configuratieresource in plaats van een supportticket.

  5. 05

    Codes die u nooit ziet.

    Gegenereerd met een cryptografische willekeurige bron, alleen opgeslagen als HMAC, vergeleken in constante tijd. De code in platte tekst raakt nooit uw stack of onze logs.

  6. 06

    Configureerbare code, TTL, pogingen.

    Standaard zes cijfers, 4–10 configureerbaar; een tijdvenster van 10 minuten; 5 pogingen; een herverzendings-cooldown van 60 seconden, ingesteld per configuratie. Codelengte kan ook per aanvraag overschreven worden.

  7. 07

    Elke code blijft geldig tot de sessie eindigt.

    Een vertraagd bericht en een opnieuw verzonden code verifiëren allebei, omdat we de eerdere code niet ongeldig maken wanneer er een nieuwe wordt verzonden.

  8. 08

    Een verkeerde code is een 200, geen uitzondering.

    Controleer antwoorden met een booleaans resultaat — is deze code geverifieerd, ja of nee — en een reden die verduidelijkt wanneer dat niet het geval was: ongeldig, verlopen, al geverifieerd of geen pogingen meer. U vertakt op een veld, nooit op een gegooide fout.

  9. 09

    Rate limits en quota's ingebouwd.

    Verzendlimieten per ontvanger, een raadlimiet per verificatie en een dagelijks quotum per workspace — elk een 429 met Retry-After — zodat brute force eerder opraakt dan u.

  10. 10

    Hetzelfde contract als de rest van Bird.

    Bearer-auth, een idempotency key, getypte vrf_-id's, één fout-envelope. De handler die u voor e-mail schreef, past al op verificatie.

Sla niets op tussen verzenden en controleren.

De meeste verificatie-API's geven u een id om op te slaan, op te zoeken en de code tegen te verifiëren. Bird herkent de sessie op basis van de ontvanger, dus er is geen verificatiestatus aan uw kant.

De meeste verificatie-API's

Create retourneert een id dat u opslaat, waarna u de verificatie opzoekt om de code te controleren.

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

Bird Verify

Controleer op basis van ontvanger. Er is niets om tussen de twee calls door te geven.

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

Routering per land is configuratie.

Stel de kanaalvolgorde, afzender en welke kanalen actief zijn per land in — WhatsApp-eerst in de ene markt, alleen SMS in een andere. Het is een eersteklas configuratieresource, toegepast op het plan van elke verificatie. Zie kanaalorkestratie.

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

Verificatie is ook een productbeslissing: dezelfde API ondersteunt tweefactorauthenticatie en wachtwoordloze login. Eerst een nummer valideren? Combineer het met Lookup. Stille netwerkauthenticatie en TOTP-authenticator-apps staan op de roadmap.

Waarom we Verify bouwen

Omdat de code die een gebruiker binnenlaat geen eigen databasetabel nodig zou moeten hebben.

OTP is het kanaal waar een code die niet aankomt een registratie is die niet plaatsvindt. Bird draait al e-mail en SMS op schaal, dus Verify is die bezorging plus de codegeneratie, de sessie, het kanaalplan per land en de rate limits — achter twee endpoints die niets aan uw kant opslaan en antwoorden in dezelfde structuur als elk ander Bird-kanaal.

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

Als u SMS hebt geïntegreerd, hebt u Verify geïntegreerd.

Hetzelfde auth-model, hetzelfde idempotency-contract, dezelfde fout-envelope. Het verschil is dat Verify de code genereert, het kanaal kiest en de rate limits beheert — zodat u dat niet hoeft te doen.

Verify

Eén aanroep verstuurt de code; één aanroep controleert deze per ontvanger. Wij beheren de code, de sessie en de limieten.

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

SMS

De directe verzending, voor wanneer u de codegeneratie en het herhaalpbeleid zelf wilt beheren.

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

Verify API FAQ

Hoe voeg ik verificatie toe aan mijn app?+
Twee aanroepen: maak een verificatie aan voor een ontvanger en controleer vervolgens de code die diegene invoert. De controle gebeurt op basis van de ontvanger, dus er is geen verificatie-id om tussentijds op te slaan — de configuratie-id (een constante) en het adres zijn alles wat u nodig heeft.
Via welke kanalen kan ik verifiëren?+
E-mail, SMS en WhatsApp op dit moment. Voice wordt uitgerold als extra kanaal, en de kanaalvolgorde, afzender en welke kanalen actief zijn, zijn configureerbaar per land — zonder codewijziging.
Moet ik een verificatie-id opslaan?+
Nee. Opnieuw verzenden is dezelfde create-call (create-or-retry), en de controle gaat op basis van het adres van de ontvanger, dus een verificatie vereist geen per-request state aan uw kant. Er wordt een id teruggegeven als u later de status wilt bekijken, maar dat is optioneel.
Wat gebeurt er als iemand de verkeerde code invoert?+
De controle retourneert 200 met een resultaat — invalid zolang er pogingen resteren, vervolgens failed als ze op zijn, of expired zodra het tijdvenster verstreken is. Een verkeerde code is een normaal resultaat waarop u vertakt, geen HTTP-fout.
Hoe worden de codes gegenereerd en opgeslagen?+
Codes worden gegenereerd met een cryptografische willekeurige bron en alleen opgeslagen als een HMAC-SHA256-hash, vergeleken in constante tijd. De plaintext-code wordt nooit geretourneerd en nooit naar uw stack of onze logs geschreven. Lengte (4–10 cijfers), TTL en pogingslimieten zijn configureerbaar.
Wat kost het?+
Verify is in preview en staat nog niet op de openbare prijslijst. Neem contact op en we lichten de prijzen toe voor uw kanalen en volume.
Van wie zien mijn gebruikers de code?+
Authifly, het verificatiemerk van Bird. Het is de identiteit op elke code die uw gebruikers ontvangen: e-mail komt van otp@verify.authifly.com of uw eigen geverifieerde domein, en SMS en WhatsApp zijn Authifly-branded. authifly.com is een openbare pagina die ontvangers geruststelt dat Authifly legitieme eenmalige codes verstuurt namens een bedrijf. Bird is het platform waarop u bouwt; Authifly is wat de ontvanger ziet.

De afzender die uw gebruikers zien: Authifly

Uw eindgebruikers ontvangen hun codes van Authifly, het verificatiemerk van Bird. Via de gedeelde afzenders komt de OTP-e-mail van otp@verify.authifly.com en vermeldt de SMS Authifly in het bericht, zodat codes onder één consistente identiteit aankomen die u niet zelf hoeft te beheren. Als een ontvanger een onverwachte code krijgt, stelt authifly.com hen gerust dat Authifly legitieme eenmalige codes verstuurt namens een bedrijf. Authifly wordt beheerd door Bird B.V.

Bezoek authifly.com

Verificatie op hetzelfde platform als de rest van uw berichtenverkeer.

Verify is beschikbaar als preview. Begin vandaag met bouwen, of neem contact met ons op over de kanalen, volumes en prijzen die u nodig heeft.

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