A API de SMS para developers que precisam mesmo de entregar.
150+ countries, 240 direct-to-carrier connections, one auth model. About 40% of the world's commercial SMS volume transits the Bird network. We've been at this a decade. 95% of messages delivered in under 2.5 seconds.
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const code = generateOtp();
const { data, error } = await bird.sms.send({
from: "Bird",
to: "+15005550006",
text: `Your Bird verification code is ${code}. Reply STOP to opt out.`,
category: "authentication",
}).safe();
if (error) throw error;
console.log(data.id);
// → "sms_4kT01Lq2m..."
Today at 2:14 PM
5 minutos do npm install ao primeiro envio
Envie um SMS na linguagem que já utiliza.
SDKs em todos os principais runtimes. O primeiro envio vai para um destinatário de teste autorizado (+15005550006) para que possa incluir um check de CI antes de provisionar um número.
const msg = await bird.sms.send({
from: "+15557654321",
to: "+14155550100",
text: "Your verification code is 123456.",
category: "authentication",
});
console.log(msg.id, msg.status);Dez coisas que nós registamos, configuramos e encaminhamos para que não tenha de o fazer.
Encaminhamento, conformidade e primitivas de entrada — nomeadas e auditáveis.
- 01
Cobertura em mais de 150 países
Uma API unificada, um único relacionamento de faturação. Sem contratos por região para gerir.
- 02
240 direct-to-carrier links
No middleman aggregator skimming margin or dropping receipts between us and the MNO.
- 03
Routing de nível operador
Real-time route reselection when a carrier path degrades; failover happens before you notice.
- 04
SMS bidirecional de entrada
Inbound messages arrive as HMAC-signed webhooks on the number you provisioned.
- 05
Números de todos os tipos
Códigos longos, códigos curtos, toll-free e sender IDs alfanuméricos, provisionados através de um único endpoint.
- 06
A2P 10DLC in-dashboard
Registo de marca e campanha gerido na consola; o estado pode ser consultado via API.
- 07
MNP lookup before send
Resolvemos a operadora atual do destinatário em cada envio para que a rota esteja sempre correta.
- 08
Conformidade STOP / HELP
Palavras-chave de opt-out respeitadas automaticamente por destinatário; a lista de supressão pode ser consultada.
- 09
Delivery receipts as webhooks
Cada transição de estado dispara um evento assinado: de sms.accepted até sms.delivered ou sms.failed.
- 10
Segment and Unicode safety
O SDK conta os segmentos antes do envio e avisa sobre alterações de encoding que dividiriam a mensagem.
Explore the SMS platform
Cada capacidade em detalhe. Uma API, um único conjunto de chaves.
Envio.
A API de envio: segmentos, segurança Unicode, lotes e idempotência.
Números.
Long codes, short codes, toll-free e sender IDs alfanuméricos.
Two-way.
SMS recebidos e respostas conversacionais como webhooks assinados com HMAC.
Compliance.
Registo A2P 10DLC, opt-out com STOP/HELP e regras de sender ID.
Roteamento.
Mais de 150 países, 240 ligações direct-to-carrier e failover.
Análises.
Métricas de entrega e interação a partir dos recibos de entrega do operador.
Destinos.
Tipos de remetente por país, regras de registo e cobertura.
O SMS é um canal dentro de um conjunto de ferramentas mais amplo. Verifique utilizadores com códigos de uso único através de Verifications, confirme o tipo de linha e o operador de um número antes de enviar com Lookup, ou alcance o mesmo dispositivo com cartões enriquecidos por RCS.
Por que criamos o SMS
SMS é o canal complicado. Construímos a API que o torna aborrecido.
Every country has different rules, every carrier has different routes, every region has different sender-ID conventions. We've been running SMS for ten years, so that knowledge lives behind one endpoint, one auth model, one webhook contract. Whatever changes upstream, the call you wrote against bird.sms.send doesn't.
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const code = generateOtp();
const { data, error } = await bird.sms.send({
from: "Bird",
to: "+15005550006",
text: `Your Bird verification code is ${code}. Reply STOP to opt out.`,
category: "authentication",
}).safe();
if (error) throw error;
console.log(data.id);
// → "sms_4kT01Lq2m..."
Cada mudança de estado é um webhook.
Payloads assinados com HMAC, protegidos contra replay, idempotentes. O mesmo envelope em todos os canais Bird: aprenda um e terá aprendido todos.
{
"type": "sms.delivered",
"timestamp": "2026-05-19T15:42:01.221Z",
"data": {
"sms_id": "sms_4kT01Lq2m",
"workspace_id": "ws_8KQ2",
"to": "+15005550006",
"from": "Bird",
"tags": [{ "name": "campaign", "value": "otp" }],
"metadata": { "user_id": "usr_12345" },
"carrier": "Verizon",
"mcc_mnc": "311480"
}
}
Calendário de tentativas: 5s, 30s, 5m, 30m, 2h, 6h, 12h. Dead-letter após a última tentativa; cada evento em dead-letter pode ser reenviado a partir do dashboard ou da API.
sms.acceptedAceite pela API e colocado em fila para entrega à operadora.sms.sentSubmetido ao SMSC da operadora de destino.sms.deliveredRecibo de entrega recebido da operadora (DLR).sms.rejectedRejeitado antes do envio à operadora: destino inválido, supressão ou política de conteúdo.sms.undeliveredA operadora reportou uma falha não permanente na entrega.sms.failedFalha terminal: a mensagem não será entregue.
Se já integrou SMS, já integrou WhatsApp.
O mesmo modelo de autenticação, o mesmo contrato de idempotência, o mesmo envelope de erros, a mesma forma de webhook. A diferença está no que cada um faz, não em como o invoca.
SMS
Um verbo. Texto simples. To/from numérico. A estrutura que qualquer developer já tem na memória muscular.
await bird.sms.send({
to: "+15005550006",
text: `Your code is ${code}.`,
category: "authentication",
});
Same verb. Different payload: templated, opted-in, in the channel two billion people open daily.
await bird.whatsapp.send({
from: "+15551234567",
to: "+15005550006",
template: { name: "otp", variables: { code } },
});
Preços
From sub-cent to a few cents per segment
Com preço por utilização e país de destino. A tabela completa por país está na página de preços, e os descontos por volume aplicam-se automaticamente ao nível da conta. Sem taxa de plataforma, sem taxa por lugar, sem funcionalidades bloqueadas por trás de compromissos anuais.