Bird Products

Eleven surfaces. One platform. Same shape.

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

Set up in:
Cursor

All products. Eleven 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/email/mailboxes

Mailbox. The Mailbox API for agents that answer their own email.

claim-mailbox.sh
curl -X POST https://us1.platform.bird.com/v1/email/mailboxes \
  -H "Authorization: Bearer $BIRD_API_KEY" \
  -d '{"domain": "inbox.ai", "receive_policy": "open"}'

{
  "id": "mbx_01krdgeqcxet5s7t44vh8rt9mg",
  "address": "k7mq3vx2npr5wcj4tzh6@inbox.ai",
  "state": "active"
}
03POST /v1/sms/messages

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.",
  category: "authentication",
});
04POST /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." },
  ],
});
Voice is being upgraded
05POST /v1/whatsapp/messages

WhatsApp. Engage customers worldwide with WhatsApp API.

message.ts
await bird.whatsapp.send({
  from: "+15557654321",
  to:   "+15005550006",
  text: { body: "Order confirmed! 🎉" },
});
06POST /v1/verify/verifications

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

verify.ts
await bird.verify.verifications.create({
  to: { phone_number: "+15005550006" },
});
// check by target — no id to store
await bird.verify.verifications.check({
  to: { phone_number: "+15005550006" }, code: userCode,
});
07POST /v1/lookup/phone-number

Lookup. Check a phone number or an email address before you send to it.

lookup.ts
await bird.lookup.phoneNumber({
  phone_number: "+31612345678",
});
08POST /v1/rcs

RCS. The RCS for Business API, SMS's better-looking sibling.

rich.ts
await bird.rcs.send({
  to: "+15005550006",
  text: "Your order shipped! 📦",
  suggestions: [
    { type: "openUrl", text: "Track it", url },
  ],
});
RCS is being upgraded
09POST /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.",
  },
});
Push is being upgraded
10POST /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" },
});
11POST /v1/esims

eSIM. Corporate eSIMs, employee phone plans, connectivity in your product.

esim.ts
await bird.esim.issue({
  recipient: { externalId: employeeId },
  plan: { region: "eu", dataMb: 5_000 },
  policy: { blockStreaming: true },
});
The eSIM API is coming to Bird

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.

Using Claude Code, Cursor, or Codex? Copy a setup prompt and your agent installs the Bird CLI and skills for you. Pick yours:

Cursor