Create a broadcast as a draft, point it at an audience, and send now or schedule it. Same keys, same deliverability, and the same webhooks as your transactional mail. No second vendor for campaigns.
import { BirdClient } from "@messagebird/sdk";
import { render } from "@react-email/render";
import { WelcomeEmail } from "./emails/welcome";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const { data, error } = await bird.email.send({
from: "Bird <hello@bird.com>",
to: ["ada@example.com"],
subject: "Your invite is ready",
html: await render(<WelcomeEmail name="Ada" />),
}).safe();
if (error) throw error;
console.log(data.id);
// → "em_2bX91Yk8h..."You can sign in any time at bird.com/login.
Your test API key is on your dashboard, ready to send.
Campaigns, with a transactional API's discipline.
Broadcasts are marketing email on the Bird Email API, the same network that carries your transactional mail. You target a single audience, schedule with an explicit timestamp, and cancel a send mid-flight if you have to. One targeting concept, no juggling lists and segments.
Five things a broadcast does.
Draft, target, schedule, cancel, measure.
- 01
Draft-first lifecycle.
Create a broadcast as a draft, refine the content, and send it when you're ready.
- 02
Audience targeting.
Point a broadcast at a single audience. One targeting field, no stacking lists and segments to reason about.
- 03
Send now or schedule.
Dispatch immediately, or schedule with an explicit timestamp from 30 seconds to 30 days out.
- 04
Cancel mid-flight.
Cancel a scheduled broadcast, or even one already fanning out. It moves to canceled from any non-terminal state.
- 05
Per-broadcast analytics.
Delivery and engagement metrics for each broadcast, alongside the rest of your email analytics.
Draft, target, and schedule in one call.
A broadcast is one content definition pointed at a stored audience. Pass an audience ID and a schedule and Bird resolves the recipients at send time, drops anyone suppressed, then fans the message out and tracks it through to sent.
// Point a campaign at an audience and schedule it.
const { data } = await bird.email.broadcasts.create({
from: "Bird <news@bird.com>",
audienceId: "aud_2bX91Yk8h",
subject: "Spring product update",
html: await render(<SpringUpdate />),
scheduledAt: "2026-07-01T15:00:00Z",
}).safe();
console.log(data.id, data.status);
// → "eb_01krdgeqcx..." "scheduled"Targeting that respects consent.
A broadcast targets one audience, and Bird applies your marketing suppressions before it sends. Anyone who's unsubscribed or complained is dropped automatically, so you can't re-mail someone who opted out. Topic-level preferences, for finer per-content opt-in, are on the roadmap as a filter on top of the same audience.
Works with the rest of Email.
Build the list you target on the audiences page, send transactional mail through the same send API, and watch results in email analytics.
Broadcasts FAQ
How do I target a broadcast?+
Can I schedule a broadcast?+
Can I cancel a send?+
Is this the same as the transactional Email API?+
The rest of the Email platform
One API, one set of keys. Explore the other capabilities.
About 40% of the world's commercial email already runs on Bird.
Transactional and marketing email on infrastructure we've run for a decade. Broadcasts are one capability of the Bird Email API: sending, audiences, deliverability, suppression, and analytics ship with it.