Messaging infrastructure for developers.

A developer API for email, SMS, voice, and WhatsApp.
Running on the network that already carries 40% of the world's commercial messages.

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

Trusted every day by teams that build world-class software

Read more customer stories

Drop it in.

Same shape, every stack.

SDKs in every major runtime. REST when you need it and SMTP coming soon. MCP for the agent on your shoulder.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import express from 'express';

import { BirdClient } from '@messagebird/sdk';

const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const app = express();
app.use(express.json());

app.post('/welcome', async (req, res) => {
  await bird.email.send({
    from: 'onboarding@bird.dev',
    to: [req.body.email],
    subject: 'Welcome to Bird',
    html: '<p>You are in.</p>',
  });
  res.json({ sent: true });
});

01 Direct sending IPs / React Email rendering (Soon) / Managed warm-up

Send Email. HTML and plain text, React Email soon. Delivered on the network the ISPs already trust.

Read Email Docs

Direct sending IPs, managed warm-up, ISP-aware routing, SPF/DKIM/DMARC handled. Templates render in HTML and plain text; React Email coming soon.

email.tsx
200 · 1.2s
import { BirdClient } from '@messagebird/sdk';

const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });

await bird.email.send({
  from: 'onboarding@bird.dev',
  subject: 'Hello from Bird',
  html: '<p>Your first email is <strong>live</strong>.</p>',
});
View on Github
Per-ISP delivery breakdown
Per-message audit log

02 A2P 10DLC / Tier-1 carriers / voice OTP fallback

SMS is being upgraded

Send SMS. Tier-1 carriers, 190+ countries, with the compliance overhead handled for you.

A2P 10DLC, alpha sender IDs, DLT entity registration — we file what you have to file. Smart routing per destination. Voice OTP fallback when SMS degrades. A 6-digit code lands in under three seconds on the lines that matter.

sms.ts
200 · 0.4s
import { BirdClient } from '@messagebird/sdk';

const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });

await bird.sms.send({
  from: 'Bird',
  to: '+14155550182',
  text: 'Your Bird code is 482917.',
});

Today at 2:14 PM

Hey Ada — your Bird sign-in code is 482917. It'll expire in 10 minutes. Don't share it with anyone.
482917
Delivered
10DLC application + brand vetting in 48h
Route diversity per destination
Voice OTP fallback (opt-in per account)
Segment-accurate pricing in the response

03 PSTN + SIP / streaming TTS / declarative flows

Voice is being upgraded

Use Voice. Programmable voice, on PSTN and SIP, with TTS that doesn't sound robotic.

Outbound and inbound. Declarative flow JSON for IVR. Recording and live transcription. Streaming TTS in thirty languages with sub-250 ms first-byte audio — the model loads before the call connects.

voice.ts
201 · 0.4s
import { BirdClient } from '@messagebird/sdk';

const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });

await bird.calls.create({
  from: '+14155550100',
  to: '+14155550182',
  flow: [{ say: 'Your verification code is four, eight, two...' }],
});

Bird Verify

+1 (415) 555-0182

Yourverificationcodeisfoureighttwonineoneseven.

Streaming TTS in 30+ languages
Declarative flows: say, gather, dial, transfer
Recording + live transcript over WebSocket
PSTN + SIP termination, BYOC supported

04 Cloud API / template messages / interactive replies

WhatsApp is being upgraded

Send WhatsApp. Official Cloud API. Templates, interactive buttons, and media — on the channel three billion people already use.

Pre-approved templates, session messaging, and interactive replies. Delivery and read receipts on every message. One number, every conversation — with the same typed API as email and SMS.

whatsapp.ts
200 · 480ms
import { BirdClient } from '@messagebird/sdk';

const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });

await bird.whatsapp.send({
  to: '+14155550182',
  template: 'order_shipped',
  variables: { order: 'RG-29481', carrier: 'UPS' },
});

Order RG-29481 shipped

Hey Ada — your order is on the way. Carrier UPS, ETA Wednesday.

Track order
Contact support
9:42 AM
Official Cloud API access
Template + session messaging
Interactive buttons and lists
Delivery + read receipts

We are a team of engineers who love building tools for other engineers.

Test mode, real-time webhooks, and an MCP server for the agent on your shoulder.

202 Accepted: { "id": "em_01kove1gv2hs72p4rq94zmt" }
202 Accepted: { "id": "em_01k50rmp0fe5kbyt8rah4ja" }
202 Accepted: { "id": "em_01km947y1ofmto7ilsfudgv" }
202 Accepted: { "id": "em_01k3eho76xg32xg32tk7idg" }
202 Accepted: { "id": "em_01kkju9g76dgb6psfupkna1" }
202 Accepted: { "id": "em_01k1o7qlcfexojyhwvqxw7i" }

Test mode. Simulate every state — delivered, bounced, complained, queued — without burning real budget or hitting a real recipient.

POST /webhooks/bird
15:42:16200sms.failed128ms
15:42:13500email.delivered42ms
15:42:10200whatsapp.read55ms
15:42:07200voice.completed91ms
15:42:04200sms.failed128ms
15:42:01200email.delivered42ms

Modular webhooks. Real-time event webhooks, per channel. email.delivered, sms.failed, voice.completed, whatsapp.read. HMAC-signed. Replay-protected. Same shape every channel.

MCP for agents. Connect Claude or Cursor to Bird's hosted MCP server, or run it locally with the bird CLI. Your agent gets typed tools across every channel — scoped keys, full audit, no leakage.

Five products.

One shared layer.

Email, SMS, voice, WhatsApp, and Realtime — all built on the same primitives. Learn the platform once, ship across every channel.

Auth. One key format. Scoped to send vs. manage, read vs. write. Prefix + fingerprint so you know which key did what. Multiple keys live at once, so you rotate on your schedule.

Idempotency. Idempotency-Key on every POST, PATCH, and DELETE. Replays come back free and flagged. Reuse a key with a different body and you get a 409, not a surprise.

Errors. One envelope. One closed type union. Every code ships with a docs link and a message that tells you what to do.

Webhooks. Standard Webhooks spec: HMAC-SHA256, per-endpoint secrets, 5-minute replay window — verify with any off-the-shelf library. Rotate secrets with a 24-hour dual-signing overlap. Attempt logs and replay built in.

Pagination. Cursor-based. Stable order on every list, enforced by construction — no page drift, ever.

Rate limits. IETF RateLimit headers on every response — not just the 429. You can see your budget before you hit the wall, and Retry-After when you do.

Suppressions. Bounces, complaints, unsubscribes — managed automatically, queryable and editable via API. Transactional streams can bypass marketing unsubscribes. Idempotent by design.

Your messages, actually arriving.

Real-time signals on inbox placement, bounce rates, and send volume — across every channel, every region. No guesswork.

40%

World's commercial messages, by volume, transit the Bird network.

190+

Countries with direct carrier relationships, route diversity, and local compliance handled.

10 years

Running this infrastructure. The team behind it is the team building the API.

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: