Bird Verify
In anteprimaL<highlight>API di verifica</highlight> senza nulla da memorizzare.
Invia un codice monouso via email, SMS o WhatsApp, poi verificalo per destinatario, senza alcun id di verifica da conservare tra le due chiamate. L'ordine dei canali, il mittente e le regole del codice sono configurazione per Paese, non una riscrittura. Stessa autenticazione e idempotenza di ogni altro canale Bird, perché lo stesso team li ha costruiti tutti. Voice è il prossimo in arrivo.
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();Due chiamate dall'installazione a un utente verificato
Invia un codice, poi verificalo, nel linguaggio che già utilizzi.
Create-or-retry invia il codice; check lo conferma per destinatario. Due chiamate, senza alcun id di verifica da passare tra le due.
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();Dieci cose che non devi costruire
quando la verifica è l'API.
Primitive concrete, con nome e configurabili. Nessuna vaghezza.
- 01
Crea o riprova in una sola chiamata.
Reinviate lo stesso destinatario e riprendiamo la sessione attiva, reinviando una volta scaduto il cooldown. Nessun endpoint di reinvio separato, nessuna verifica duplicata.
- 02
Verifica per destinatario. Non memorizzare nulla.
Inviate il destinatario e il codice; noi risolviamo la sessione dalla coppia configurazione-destinatario. Non c'è alcun id di verifica da persistere tra invio e controllo.
- 03
Email, SMS e WhatsApp al lancio.
Il destinatario che passi determina il canale: un indirizzo email verifica tramite email, un numero di telefono tramite SMS o WhatsApp. Cambiare canale significa modificare un solo campo, non una nuova integrazione. La voce è in arrivo, e il fallback automatico tra canali è in fase di sviluppo.
- 04
Ordine dei canali per Paese, come configurazione.
Impostate l'ordine dei canali, il mittente e quali canali sono attivi, per Paese, come risorsa di configurazione di prima classe anziché un ticket di supporto.
- 05
Codici che non vedrete mai.
Generato con una fonte crittografica casuale, memorizzato solo come HMAC, confrontato in tempo costante. Il codice in chiaro non tocca mai il vostro stack né i nostri log.
- 06
Codice, TTL e tentativi configurabili.
Sei cifre di default, da 4 a 10 configurabili; una finestra di 10 minuti; 5 tentativi; un cooldown di 60 secondi per il reinvio, impostabile per configurazione. La lunghezza del codice può essere sovrascritta anche per singola richiesta.
- 07
Ogni codice resta valido fino al termine della sessione.
Un messaggio in ritardo e un codice appena reinviato vengono entrambi verificati, perché non invalidiamo il codice precedente quando ne viene generato uno nuovo.
- 08
Un codice errato è un 200, non un'eccezione.
Verifica le risposte con un risultato booleano — il codice è stato verificato, sì o no — e un motivo che dettaglia quando non lo è stato: non valido, scaduto, già verificato o tentativi esauriti. La logica si basa su un campo, mai su un errore sollevato.
- 09
Rate limit e quote integrati.
Limiti di invio per destinatario, limite di tentativi per verifica e quota giornaliera per workspace, ciascuno con un 429 e Retry-After, così il brute force si esaurisce prima di voi.
- 10
Stesso contratto del resto di Bird.
Auth Bearer, idempotency key, ID tipizzati vrf_, un unico envelope di errore. L'handler che avete scritto per l'email funziona già per la verifica.
Esplorate la piattaforma Verify
Ogni funzionalità nel dettaglio. Una sola API, un unico set di chiavi.
Non memorizzate nulla tra invio e verifica.
La maggior parte delle API di verifica vi restituisce un id da persistere, cercare e usare per verificare il codice. Bird risolve la sessione dal destinatario, quindi non c'è alcuno stato per verifica dal vostro lato.
La maggior parte delle API di verifica
La creazione restituisce un id che salvate, poi cercate la verifica per confrontare il codice.
const { id } = await api.verifications.create({
to: "+15551234567",
});
// persist id somewhere, then later…
await api.verifications.check({ id, code });Bird Verify
Verificate tramite destinatario. Non c'è nulla da collegare tra le due chiamate.
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();Il routing per Paese è configurazione.
Impostate l'ordine dei canali, il mittente e quali canali sono attivi per Paese — WhatsApp-first in un mercato, solo SMS in un altro. È una risorsa di configurazione di prima classe, risolta nel piano di ogni verifica. Consultate orchestrazione dei canali.
await bird.verify.verifications.configurations.countries.upsert(
"vfc_login",
"BR",
{ channels: [
{ channel: "whatsapp", state: "enabled" },
{ channel: "sms", state: "enabled" },
] },
).safe();La verifica è anche una decisione di prodotto: la stessa API supporta l'autenticazione a due fattori e il login senza password. Dovete prima validare un numero? Abbinatelo a Lookup. L'autenticazione silenziosa di rete e le app TOTP authenticator sono nella roadmap.
Perché costruiamo Verify
Perché il codice che fa accedere un utente non dovrebbe aver bisogno di una propria tabella nel database.
OTP è il canale dove un codice che non arriva è una registrazione che non avviene. Bird gestisce già email e SMS su larga scala, quindi Verify è quella delivery più la generazione del codice, la sessione, il piano canali per Paese e i rate limit, dietro due endpoint che non memorizzano nulla dal vostro lato e rispondono con la stessa struttura di ogni altro canale 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();Se avete integrato SMS, avete integrato Verify.
Stesso modello di autenticazione, stesso contratto di idempotenza, stesso envelope di errore. La differenza è che Verify genera il codice, sceglie il canale e gestisce i rate limit — così non dovete farlo voi.
Verify
Una chiamata invia il codice; una chiamata lo verifica per destinatario. Noi gestiamo il codice, la sessione e i limiti.
await bird.verify.verifications.create({
to: { phone_number: "+15551234567" },
});SMS
L'invio diretto, per quando vuoi gestire in autonomia la generazione del codice e la policy di retry.
await bird.sms.send({
from: "Bird",
to: "+15551234567",
text: `Your code is ${code}.`,
});FAQ Verify API
Come aggiungo la verifica alla mia app?+
Su quali canali posso verificare?+
Devo memorizzare un id di verifica?+
Cosa succede quando qualcuno inserisce il codice sbagliato?+
Come vengono generati e memorizzati i codici?+
Quanto costa?+
Da chi vedono arrivare il codice i miei utenti?+
Il mittente che i tuoi utenti vedono: Authifly
I tuoi utenti finali ricevono i codici da Authifly, il brand di verifica di Bird. Sui mittenti condivisi, l'e-mail OTP arriva da otp@verify.authifly.com e l'SMS riporta Authifly nel messaggio, così i codici vengono recapitati sotto un'unica identità coerente che non devi gestire tu. Se un destinatario riceve un codice inatteso, authifly.com lo rassicura sul fatto che Authifly invia codici monouso legittimi per conto di un'azienda. Authifly è gestito da Bird B.V.
Visita authifly.comLa verifica sulla stessa piattaforma del resto della tua messaggistica.
Verify è in anteprima. Inizia a sviluppare oggi stesso, oppure parlaci dei canali, dei volumi e dei prezzi di cui hai bisogno.