专为需要快速交付的开发者打造的 SMS API。
190+ 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 { data, error } = await bird.sms.send({
from: "Bird",
to: "+31612345678",
text: "Your order #4821 has shipped. Track it: bird.ly/t/4821x",
category: "transactional",
}).safe();
if (error) throw error;
console.log(data.id);
// → "sms_01m11jw130e7svjzv70kgqr38w"
从 npm install 到首次发送仅需 5 分钟
用您熟悉的编程语言发送 SMS。
支持所有主流运行时的 SDK。发送至授权测试接收号码 +15005550006,Bird 会模拟从发送到送达的完整生命周期,因此 CI 检查无需经过运营商。该号码为美国号码,因此发送时仍需使用您自己的美国号码作为发送方。
const msg = await bird.sms.send({
from: "+15557654321",
to: "+14155550100",
text: "Your verification code is 123456.",
category: "authentication",
});
console.log(msg.id, msg.status);我们代您处理十项申报、配置和路由工作。
路由、合规与入站基础能力,命名清晰、可审计。
- 01
190+ country coverage
统一 API,统一账单关系。无需逐区域追签合同。
- 02
240 条运营商直连线路
我们与移动运营商之间没有中间聚合商抽取利润或丢失回执。
- 03
运营商级路由
当运营商路径质量下降时实时重新选路;故障切换在您察觉之前已完成。
- 04
双向 SMS 入站
入站消息以 HMAC 签名的 webhook 形式送达到您已分配的号码上。
- 05
各种类型的号码
长号码、短号码、免费电话号码和字母数字发送方 ID,通过一个端点即可配置。
- 06
A2P 10DLC 控制台内注册
品牌和活动注册在控制台中完成;状态可通过 API 查询。
- 07
发送前 MNP 查询
我们在每次发送时解析接收方的当前运营商,确保路由始终正确。
- 08
STOP / HELP 合规
自动按接收方识别退订关键词;退订列表可通过 API 查询。
- 09
以 webhook 形式接收送达回执
每次状态变更都会触发一个签名事件:从 sms.accepted 到 sms.delivered 或 sms.failed。
- 10
分段与 Unicode 安全
SDK 在发送前计算分段数,并在编码切换可能导致消息拆分时发出警告。
SMS 只是更大工具集中的一个渠道。通过 验证 用一次性密码验证用户,发送前用 号码查询 检查号码的线路类型和运营商,或通过 RCS 用富媒体卡片触达同一部手机。
正在将 Bird 与现有方案进行比较?Bird vs Twilio SMS 对比将两者的发送调用、10DLC 接入方式以及各自为编码代理提供的功能逐一对照呈现。
我们为何构建 SMS
SMS 是最复杂的通信渠道。我们构建了让它变得简单可控的 API。
每个国家有不同的规则,每家运营商有不同的路由,每个地区有不同的发送者 ID 规范。我们运营 SMS 已有十年,所有这些知识都整合在一个端点、一个认证模型、一套 Webhook 契约之后。无论上游如何变化,您调用的 bird.sms.send 接口始终不变。
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const { data, error } = await bird.sms.send({
from: "Bird",
to: "+31612345678",
text: "Your order #4821 has shipped. Track it: bird.ly/t/4821x",
category: "transactional",
}).safe();
if (error) throw error;
console.log(data.id);
// → "sms_01m11jw130e7svjzv70kgqr38w"
每次状态变更都是一个 webhook。
HMAC 签名载荷,防重放保护,幂等设计。所有 Bird 渠道使用相同的消息信封:学会一个,全部通用。
{
"type": "sms.delivered",
"timestamp": "2026-05-19T15:42:01.221Z",
"data": {
"sms_id": "sms_4kT01Lq2m",
"workspace_id": "ws_8KQ2",
"to": "+15005550006",
"from": "+12025550188",
"tags": [{ "name": "campaign", "value": "otp" }],
"metadata": { "user_id": "usr_12345" },
"carrier": "Verizon",
"mcc_mnc": "311480",
"cost": {
"amount": "0.0079",
"currency_code": "USD",
"transaction_amount": "0.0079",
"passthrough_amount": null
}
}
}
重试计划:5秒、5分钟、30分钟、2小时、5小时,然后10小时重试两次。最后一次重试后,投递将永久失败,可通过仪表板或 API 进行重放恢复。
sms.accepted已被 API 接受并排队等待运营商交接。sms.sent已提交至目标运营商的 SMSC。sms.delivered已收到运营商的送达回执(DLR)。sms.rejected在运营商交接前即被拒绝:无效目标号码、被抑制或触发内容策略防护。sms.undelivered运营商报告了一个非永久性投递失败。sms.failed终态失败:消息将不会被送达。
集成了 SMS,就等于集成了 WhatsApp。
相同的鉴权模型、相同的幂等性约定、相同的错误信封、相同的 webhook 结构。区别在于各自能做什么,而不是你如何调用。
SMS
一个动词。纯文本。数字格式的收发号码。每位开发者都已形成肌肉记忆的格式。
await bird.sms.send({
from: "Bird",
to: "+31612345678",
text: `Your code is ${code}.`,
category: "authentication",
});相同的调用方式,不同的载荷:模板化、用户已授权、在每天二十亿人打开的渠道中触达。
await bird.whatsapp.send({
to: "+15005550006",
template: {
slug: "bird_otp",
language: "en",
components: [
{ type: "body", parameters: [{ type: "text", text: code }] },
],
},
});