Bird Products

Nine surfaces. One platform. Same shape.

Email, SMS, Voice, WhatsApp, Verifications, Lookup, RCS, Push, and Realtime — each a first-class API. Same auth, same idempotency, same webhooks, same error envelope. Learn one, you've learned them all.

Get startedRead docsor

All products. Nine surfaces, one SDK.

01POST /v1/emails

Email. The email API for developers who ship the rest of the message too.

welcome.tsx
await bird.email.send({
  to: ["alex@example.com"],
  subject: "Welcome to Bird",
  html: "<p>You're in. Let's ship.</p>",
});
02POST /v1/sms

SMS. The SMS API for developers who actually need to ship.

notify.ts
await bird.sms.send({
  to: "+15005550006",
  text: "Your code is 847291. Expires in 10 min.",
});
Coming Soon
03POST /v1/voice/calls

Voice. Programmable voice in JSON. Calls, IVR, recording, TTS.

dial.ts
await bird.voice.calls.create({
  to: "+15005550010",
  from: "+14155550199",
  flow: [
    { say: "Your order is confirmed." },
  ],
});
Coming Soon
04POST /v1/whatsapp/messages

WhatsApp. The WhatsApp Business API, without the BSP runaround.

message.ts
await bird.whatsapp.send({
  to: "+15005550006",
  type: "text",
  text: { body: "Order confirmed! 🎉" },
});
Coming Soon
05POST /v1/verification

Verification. The OTP API for developers who need codes to land.

verify.ts
const { id } = await bird.verifications.start({
  to: "+15005550006",
  channel: "sms",
});
await bird.verifications.check({ id, code: userCode });
Coming Soon
06GET /v1/lookup

Lookup. Phone number intelligence: line type, carrier, fraud signals.

lookup.ts
const { lineType, carrier, fraud } =
  await bird.lookup.get("+15005550006");
Coming Soon
07POST /v1/rcs

RCS. RCS Business Messaging — SMS's better-looking sibling.

rich.ts
await bird.rcs.send({
  to: "+15005550006",
  text: "Your order shipped! 📦",
  suggestions: [
    { type: "openUrl", text: "Track it", url },
  ],
});
Coming Soon
08POST /v1/push

Push. Push notifications for iOS, Android, and web.

push.ts
await bird.push.send({
  to: { deviceToken },
  notification: {
    title: "Order shipped!",
    body: "Your package is on its way.",
  },
});
Coming Soon
09POST /v1/realtime/publish

Realtime. Hosted pub/sub over WebSockets. Subscribe, publish, scale.

realtime.ts
await bird.realtime.publish({
  channel: "orders",
  event: "order.shipped",
  data: { orderId, status: "shipped" },
});
Coming Soon

Every product above shares one auth model, one idempotency contract, one error envelope, one webhook contract, one cursor pagination scheme. Learn one, you've learned them all.

/ Auth

/ Idempotency

/ Errors

/ Webhooks

/ Pagination

/ Typed IDs

See the API Endpoints

Start with one channel.
Add the others when you're ready.

A test API key is yours immediately. Production unlocks when you add a payment method and verify a sender.

Get startedRead docsor

Using Claude Code, Cursor, or Codex? Point it at our MCP server — tools for every channel we expose, with scoped agent keys.

Cursor