Bird Verify
Em pré-visualizaçãoA API de verificação sem nada para guardar.
Envie um código único por email, SMS ou WhatsApp e depois verifique-o por destinatário, sem nenhum id de verificação para manter entre as duas chamadas. A ordem dos canais, o remetente e as regras do código são configuração por país, não uma reconstrução. A mesma autenticação e idempotência de todos os outros canais Bird, porque a mesma equipa os construiu. Voice é o próximo a ser lançado.
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();Duas chamadas da instalação a um utilizador verificado
Envie um código e depois verifique-o, na linguagem que já utiliza.
Create-or-retry envia o código; check confirma-o por destinatário. Duas chamadas, e nenhum id de verificação para encadear entre elas.
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();Dez coisas que não precisa de construir
quando a verificação é a API.
Primitivas concretas, nomeadas e configuráveis. Sem ambiguidade.
- 01
Crie ou reenvie numa única chamada.
Reenvie o mesmo destinatário e retomamos a sessão ativa, reenviando quando o cooldown passar. Sem endpoint de reenvio separado, sem verificações duplicadas.
- 02
Verifique por destinatário. Não guarde nada.
Submeta o destinatário e o código; resolvemos a sessão a partir do par configuração-e-destinatário. Não há nenhum id de verificação para persistir entre envio e verificação.
- 03
Email, SMS e WhatsApp no lançamento.
O destinatário que você passa determina o canal: um endereço de e-mail verifica por e-mail, um número de telefone por SMS ou WhatsApp. Mudar de canal é alterar um único campo, não uma nova integração. Voz é o próximo a ser lançado, e o fallback automático entre canais está a caminho.
- 04
Ordem de canais por país, como configuração.
Defina a ordem dos canais, o remetente e quais canais estão ativos, por país, como um recurso de configuração de primeira classe em vez de um ticket de suporte.
- 05
Códigos que nunca vê.
Gerado com uma fonte criptográfica aleatória, armazenado apenas como HMAC, comparado em tempo constante. O código em texto simples nunca toca na sua stack nem nos nossos logs.
- 06
Código, TTL e tentativas configuráveis.
Seis dígitos por padrão, configurável de 4 a 10; janela de 10 minutos; 5 tentativas; intervalo de 60 segundos para reenvio, definido por configuração. O comprimento do código também pode ser sobrescrito por requisição.
- 07
Cada código permanece válido até a sessão terminar.
Uma mensagem atrasada e um código reenviado de fresco ambos verificam, porque não invalidamos o código anterior quando um novo é enviado.
- 08
Um código errado é um 200, não uma exceção.
Valide respostas com um resultado booleano — este código verificou, sim ou não — e um motivo que detalha quando não verificou: inválido, expirado, já verificado ou sem tentativas restantes. Você faz a ramificação com base em um campo, nunca em um erro lançado.
- 09
Rate limits e quotas incluídos.
Limites de envio por destinatário, limite de tentativas por verificação e quota diária por workspace — cada um um 429 com Retry-After — para que a força bruta se esgote antes de si.
- 10
O mesmo contrato que o resto do Bird.
Autenticação Bearer, chave de idempotência, ids tipados vrf_, um envelope de erro. O handler que escreveu para email já serve para verificação.
Explore a plataforma Verify
Cada funcionalidade em detalhe. Uma API, um conjunto de chaves.
Não armazene nada entre o envio e a verificação.
A maioria das APIs de verificação devolve-lhe um id para persistir, consultar e submeter o código. O Bird resolve a sessão a partir do destinatário, por isso não há estado por verificação do seu lado.
A maioria das APIs de verificação
O create devolve um id que armazena, depois consulta a verificação para validar o código.
const { id } = await api.verifications.create({
to: "+15551234567",
});
// persist id somewhere, then later…
await api.verifications.check({ id, code });Bird Verify
Verifique pelo destinatário. Não há nada para encadear entre as duas chamadas.
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();O encaminhamento por país é configuração.
Defina a ordem dos canais, o remetente e quais canais estão ativos por país — WhatsApp primeiro num mercado, apenas SMS noutro. É um recurso de configuração de primeira classe, resolvido no plano de cada verificação. Veja orquestração de canais.
await bird.verify.verifications.configurations.countries.upsert(
"vfc_login",
"BR",
{ channels: [
{ channel: "whatsapp", state: "enabled" },
{ channel: "sms", state: "enabled" },
] },
).safe();A verificação é também uma decisão de produto: a mesma API suporta autenticação de dois fatores e login sem palavra-passe. Quer validar um número primeiro? Combine com o Lookup. Autenticação silenciosa de rede e apps autenticadoras TOTP estão no roadmap.
Porque construímos o Verify
Porque o código que permite a entrada de um utilizador não deveria precisar da sua própria tabela na base de dados.
OTP é o canal onde um código que não chega é um registo que não acontece. O Bird já opera email e SMS em escala, por isso o Verify é essa entrega mais a geração de código, a sessão, o plano de canais por país e os rate limits — atrás de dois endpoints que não armazenam nada do seu lado e respondem com o mesmo formato de qualquer outro canal 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 integrou SMS, já integrou o Verify.
Mesmo modelo de autenticação, mesmo contrato de idempotência, mesmo envelope de erro. A diferença é que o Verify gera o código, escolhe o canal e aplica os rate limits — para que não tenha de o fazer.
Verify
Uma chamada envia o código; outra verifica-o pelo destinatário. Nós gerimos o código, a sessão e os limites.
await bird.verify.verifications.create({
to: { phone_number: "+15551234567" },
});SMS
O envio direto, para quando você quer controlar a geração do código e a política de reenvio.
await bird.sms.send({
from: "Bird",
to: "+15551234567",
text: `Your code is ${code}.`,
});FAQ da Verify API
Como adiciono verificação à minha app?+
Em que canais posso verificar?+
Tenho de guardar um id de verificação?+
O que acontece quando alguém introduz o código errado?+
Como são gerados e armazenados os códigos?+
Quanto custa?+
De quem os meus utilizadores veem o código?+
O remetente que os seus utilizadores veem: Authifly
Os seus utilizadores finais recebem os códigos da Authifly, a marca de verificação da Bird. Nos remetentes partilhados, o e-mail OTP é enviado de otp@verify.authifly.com e o SMS identifica Authifly na mensagem, para que os códigos cheguem sempre sob uma identidade consistente que você não precisa de operar. Se um destinatário receber um código inesperado, authifly.com assegura-lhe que a Authifly envia códigos únicos legítimos em nome de uma empresa. A Authifly é operada pela Bird B.V.
Visite authifly.comVerificação na mesma plataforma que o resto das suas mensagens.
O Verify está em pré-visualização. Comece a construir hoje ou fale connosco sobre os canais, volume e preços de que precisa.