Bird vs Bandwidth
Bird vs Bandwidth para SMS
Bird é a plataforma de SMS que um agente de IA pode operar de ponta a ponta: enviar a mensagem, confirmar a entrega, registar a sua marca 10DLC. Cada uma dessas ações é uma ferramenta no servidor MCP alojado da Bird, pronta no momento em que o seu agente se liga. A Bandwidth divide o canal em dois: o envio vive num host e o registo 10DLC noutro, cada um com o seu próprio caminho de conta. Aqui, envio, registo e eventos de entrega ficam sob um único host e uma única chave.
Em números
Alcance SMS
Rotas de operadoras
Velocidade de entrega
No que a Bandwidth é excelente.
No que a Bird é diferente.
No que a Bandwidth é excelente
They are the carrier. Bandwidth is a licensed US carrier (CLEC) that owns and operates its own 48-state network, with emergency services beside it, which is why their own hero names Voice, Messaging and Emergency together.
Bibliotecas auxiliares em mais linguagens. SDKs oficiais para Java, Node.js, Python, PHP, C# e Ruby. Uma equipa Java ou Ruby trabalha diretamente com a API HTTP da Bird.
No que a Bird é diferente
Um agente opera a própria conta. O servidor MCP alojado em mcp.bird.com dá ao agente ferramentas que enviam SMS, consultam o estado de entrega e registam marcas 10DLC no seu workspace real.
Uma retentativa que não envia duas vezes. Um cabeçalho Idempotency-Key no envio torna a repetição segura; a especificação OpenAPI de mensagens da Bandwidth não contém nenhum campo ou cabeçalho de idempotência.
A intenção da mensagem é um campo de primeira classe. Cada envio de texto livre inclui uma categoria — transacional, marketing, autenticação ou serviço — para a qual o envio da Bandwidth não tem equivalente.
A matriz
Capacidade a capacidade.
A Bandwidth disponibiliza bibliotecas auxiliares em mais linguagens. A Bird ganha com um único host para todo o canal, retentativas seguras, intenção da mensagem e uma superfície de agente acessível a qualquer cliente MCP. As duas coincidem na estrutura do envio, no registo 10DLC e nos eventos de entrega. Ambas as leituras são precisas à data de hoje.
| Capability | Bird | Bandwidth | Who wins? |
|---|---|---|---|
| Pedido de envio | JSON para /v1/sms/messages no seu host regional, com uma chave API bearer. | JSON para um endpoint de mensagens sob o caminho da sua conta no host de mensagens deles, com from, to e text, autenticado via HTTP Basic e com um applicationId. | |
| Retentativas seguras | Um cabeçalho Idempotency-Key no envio torna a retentativa segura. | A especificação OpenAPI de mensagens deles, versão 4.3.0, não contém nenhum campo ou cabeçalho de idempotência, pelo que uma retentativa após um timeout pode enviar a mensagem duas vezes. | |
| Intenção da mensagem | Cada envio de texto livre inclui uma categoria: transacional, marketing, autenticação ou serviço. | tag inclui um rótulo de formato livre e priority define a prioridade de entrega, mas nenhum dos dois declara a razão pela qual a mensagem está a ser enviada. | |
| Servidor MCP alojado | Traga o seu próprio agente. mcp.bird.com é alojado, por isso Claude Code, Cursor, ChatGPT ou o seu próprio runtime autentica-se uma vez e opera o workspace com as mesmas ferramentas. | A Bandwidth publica um servidor MCP e as suas ferramentas operam de facto a conta. Trata-se de um pacote que descarrega e executa localmente, pelo que o cliente tem de o iniciar como um processo local e este obtém as suas credenciais de produção a partir de uma configuração local. | |
| Registo A2P 10DLC | /v1/sms/10dlc/* regista marcas e campanhas através da API. | A API de gestão de campanhas deles regista marcas e campanhas, com verificação de marca e importação de campanhas, como parceiro direto do Campaign Registry. | |
| Um único host para todo o canal | Envio, registo 10DLC e eventos de entrega partilham um URL base e uma chave. | O envio está no host de mensagens e o registo no host principal da API, cada um com o seu próprio caminho de conta — o cliente precisa de manter duas raízes. | |
| Eventos de entrega | Um webhook de workspace subscrito aos tipos de evento SMS que indicar, como sms.sent, sms.delivered e sms.failed, entregues como JSON assinado conforme o Standard Webhooks. | Os callbacks são configurados na Application que a mensagem indica, e não por envio. | |
| Linguagens dos SDKs | SDKs tipados para TypeScript, Python, Go e PHP, além de clientes Realtime para Swift, Kotlin e browser. | SDKs oficiais para Java, Node.js, Python, PHP, C# e Ruby. |
O mesmo envio
A chamada de envio tem uma forma semelhante.
Enviar um SMS. Ambos aceitam JSON com from, to e text, mas a Bandwidth autentica via HTTP Basic e o envio indica um applicationId que contém a configuração de callback. O helper deles lança exceção, por isso o fluxo comum precisa de um try/catch. Bird devolve um resultado tipado que pode desestruturar, e category é o campo sem equivalente na Bandwidth: cada envio de texto livre no Bird declara a sua intenção.
Bandwidth
import { Configuration, MessagesApi } from "bandwidth-sdk";
const config = new Configuration({
clientId: process.env.BW_CLIENT_ID!,
clientSecret: process.env.BW_CLIENT_SECRET!,
});
const messagesApi = new MessagesApi(config);
try {
const response = await messagesApi.createMessage(process.env.BW_ACCOUNT_ID!, {
applicationId: process.env.BW_APPLICATION_ID!,
from: "+15557654321",
to: ["+15551234567"],
text: "Your table is ready.",
});
console.log(response.data);
} catch (err) {
console.error(err);
}
Bird
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const { data, error } = await bird.sms
.send({
from: "+15557654321",
to: "+15551234567",
text: "Your table is ready.",
category: "transactional",
})
.safe();
if (error) console.error(error.message);
else console.log(data.id, data.status);
Quanto custa o SMS por país?
Cada país de destino tem uma tarifa publicada na página de preços de SMS, e as taxas de operadora e 10DLC são discriminadas separadamente em taxas de operadora de SMS em vez de incluídas no valor. Pode calcular o custo de uma campanha antes de falar com alguém.
Custo de migração
Baixo.
Os nomes dos campos mantêm-se. A Bandwidth já os chama from, to e text, e a Application que contém os seus callbacks passa a ser um webhook de workspace subscrito a sms.sent, sms.delivered e sms.failed. Duas coisas mudam de forma: uma chave bearer substitui o HTTP Basic e um host substitui dois.
Dois itens são de agendamento, não de engenharia. A sua marca e campanha 10DLC estão registadas no The Campaign Registry através da Bandwidth, por isso o mesmo registo é submetido novamente através do Bird; e os números que possui na Bandwidth são portados segundo o calendário do suporte. Comece ambos cedo e decorrem em paralelo com a alteração de código.
Perguntas que as pessoas realmente fazem
Bird é uma boa alternativa à Bandwidth para SMS?
Quão diferente é a chamada de envio?
O que é que o agente pode realmente fazer na minha conta?
Bird e Bandwidth suportam ambos o registo A2P 10DLC através de uma API?
Quanto custa o SMS do Bird por país?
Próximos passos
O guia de migração é o melhor ponto de partida: mapeia a API campo a campo.