Eén API voor elke
e-mail die je verstuurt.

Transactioneel of marketing, één bericht of honderd, verstuurd via dezelfde Email API, met idempotentie, suppressie en webhooks ingebouwd. Stuur ruwe HTML mee of render je React Email-templates.

welcome.tsx
200 · 1.2s
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..."

Verstuur je al via SMTP?

Behoud je bestaande SMTP-client en verbind deze met de relay van Bird. Gebruik de SMTP-setuppagina voor regionale hosts, TLS-poorten en authenticatie. Als je applicatie berichten moet ontvangen en verwerken, begin dan met inbound e-mail.

Verstuur je eerste e-mail in vijf minuten.

Vanuit de taal die je al gebruikt.

Verzenden is de kern van de Bird Email API. Je eerste verzending kan naar een sandbox-adres (delivered@messagebird.dev), zodat je het hele platform (verzendingen, webhooks, suppressie) kunt testen voordat je een domein verifieert.

1
2
3
4
5
6
7
const msg = await bird.email.send({
  from: { email: "onboarding@messagebird.dev", name: "Bird" },
  to: ["delivered@messagebird.dev"],
  subject: "Hello from Bird",
  html: "<p>My first Bird email.</p>",
});
console.log(msg.id, msg.status); // "em_…", "accepted"

Vijf dingen die je niet zelf hoeft te bouwen.

Hetzelfde contract op elk Bird-kanaal.

  1. 01

    Transactioneel + marketing.

    Hetzelfde endpoint verstuurt een wachtwoordreset of een campagne. Een categorieveld bepaalt hoe suppressie en uitschrijvingen worden toegepast.

  2. 02

    Templates op jouw manier.

    Stuur ruwe HTML mee, render React Email-templates naar HTML in je app en verstuur het resultaat, of geef een opgeslagen template op en laat die voor je renderen. Je toolchain, ongewijzigd.

  3. 03

    Batch tot 100.

    Tot 100 onafhankelijke berichten per aanroep, elk met een eigen ontvanger en variabelen, als één geheel gevalideerd zodat je nooit half verstuurt.

  4. 04

    Idempotent bij contract.

    Elke verzending accepteert een idempotency-key, zodat een herhaald verzoek na een timeout het oorspronkelijke resultaat teruggeeft in plaats van dubbel te versturen.

  5. 05

    Een webhook bij elke statuswijziging.

    Geaccepteerd, afgeleverd, geopend, geklikt, gebounced, klacht ingediend. Elk HMAC-ondertekend, replay-beveiligd, idempotent, dezelfde envelope op elk kanaal.

Doe het eerste verzoek vanuit je applicatie.

Maak een account en API-key aan en volg daarna de verzendgids met een testontvanger.

Aan de slag

Verstuur je nu ergens anders? Stap over in een middag.

De aanroep die je al doet verandert nauwelijks: wissel de client, behoud je templates, richt je webhooks op één endpoint. Migratiegidsen behandelen SendGrid, Amazon SES, Mailgun en Resend.

sendgrid.ts
SendGrid
import sgMail from "@sendgrid/mail";

sgMail.setApiKey(process.env.SENDGRID_API_KEY!);

await sgMail.send({
  from:    "hello@yourdomain.com",
  to:      "delivered@messagebird.dev",
  subject: "Your invite is ready",
  html:    "<p>Welcome aboard, Ada.</p>",
});
bird.ts
Bird
import { BirdClient } from "@messagebird/sdk";

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

await bird.email.send({
  from:    "hello@yourdomain.com",
  to:      ["delivered@messagebird.dev"],
  subject: "Your invite is ready",
  html:    "<p>Welcome aboard, Ada.</p>",
});

Eén bericht of honderd, één aanroep.

Batch tot 100 onafhankelijke berichten in één request, elk met een eigen ontvanger en variabelen. De batch wordt als geheel gevalideerd: één fout bericht weigert de aanroep met een 422, zodat je nooit half verstuurt. Eén idempotency-key maakt het hele verzoek veilig om opnieuw te proberen.

digest.ts
202 · batch
import { BirdClient } from "@messagebird/sdk";
import { render } from "@react-email/render";
import { Digest } from "./emails/digest";

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

const messages = await Promise.all(
  users.map(async (u) => ({
    from:    "Acme <hello@yourdomain.com>",
    to:      [u.email],
    subject: "Your weekly digest",
    html:    await render(<Digest user={u} />),
  })),
);

const { data: batch, error } = await bird.email
  .sendBatch(messages)
  .safe();

if (error) throw error;
console.log(`queued ${batch.data.length} messages`);

Koppel je eigen context aan elke verzending.

Tags zijn een eersteklas, filterbare dimensie: splits aflevering en engagement op campagne, template of experiment in de statistieken-API (tot 20 per bericht). Metadata is willekeurige JSON, tot 2 KB, die ongewijzigd meereist bij elke read en webhook, zodat je eigen ID's meereizen met het bericht.

tagged.ts
await bird.email.send({
  from:     "Acme <hello@yourdomain.com>",
  to:       ["delivered@messagebird.dev"],
  subject:  "Your invite is ready",
  html:     "<p>Welcome aboard, Ada.</p>",
  tags:     [{ name: "campaign", value: "spring-2026" }],
  metadata: { user_id: "u_2bX91", order_id: "ord_5512" },
});

Volg elk bericht door zijn hele levenscyclus.

Een verzending retourneert direct 202; het resultaat komt als webhook per ontvanger. Verifieer één handtekening, schakel op het type: dezelfde envelope die je al verwerkt voor SMS, voice en WhatsApp.

app/api/webhooks/bird/route.ts
signed
import { bird } from "@/lib/bird";

export async function POST(req: Request) {
  const event = bird.webhooks.unwrap(
    await req.text(),
    Object.fromEntries(req.headers),
  );

  switch (event.type) {
    case "email.delivered":
      await markDelivered(event.data.email_id);
      break;
    case "email.bounced":
      await flag(event.data.recipient, event.data.bounce_type);
      break;
  }

  return new Response(null, { status: 204 });
}

Hard bounces en klachten werken de onderdrukkingslijst van ontvangers bij. Uitschrijvingen registreren een opt-outvoorkeur. Deze records worden gecontroleerd bij het verwerken van latere verzendingen.

  • email.acceptedDe verzending is geaccepteerd en wordt voorbereid voor aflevering.
  • email.processedIn de wachtrij voor de mailserver van de ontvanger.
  • email.deliveredDe mailserver van de ontvanger heeft het bericht geaccepteerd.
  • email.deferredTijdelijk geweigerd, we proberen het opnieuw.
  • email.bouncedPermanent mislukt: bouncetype en SMTP-code in de payload.
  • email.openedDe ontvanger heeft het bericht geopend. Kan meer dan eens afgaan.
  • email.clickedDe ontvanger heeft op een getrackte link geklikt.
  • email.complainedDe ontvanger heeft het bericht als spam gemeld.
  • email.unsubscribedDe ontvanger heeft zich uitgeschreven via een getrackte uitschrijflink.

Test elke uitkomst voordat je live gaat.

In de sandbox bepaalt het ontvangeradres het resultaat, niet je accountstatus. Stuur naar delivered@messagebird.dev voor een schone aflevering, of naar bounce@, softbounce@, deferred@, complaint@ en suppressed@ om elk foutpad door de echte pipeline en de echte webhooks te sturen. Geen domein te verifiëren, geen risico voor je reputatie. Productie is bewust afgeschermd: je verifieert eerst een domein, en een nieuw domein of dedicated IP doorloopt een warmup voordat het volledig volume draagt.

Duik dieper in de docs.

Lees de verzendgids, koppel e-mailevents en webhooks, of volg een migratiegids van SendGrid, SES, Mailgun of Resend als je overstapt van een andere provider.

Test het gedrag rondom het verzenden.

Een werkende verzendaanroep is het begin van een integratie. Oefen met bounces en klachten, verwerk dubbele webhookafleveringen en bepaal hoe je applicatie berichten plant of antwoorden ontvangt.

161%

Stijging in e-mail open rates zoals gerapporteerd in het klantverhaal van Zillow.

Lees het verhaal van Zillow

Gebouwd met Bird

Als de juiste woning verschijnt, moet de e-mail aankomen.

Zillow bracht tijdgevoelige woningmeldingen naar Bird, met de capaciteit om verzendpieken op te vangen en de analytics om betrokkenheid te begrijpen. Het team rapporteerde een stijging van 161% in open rates in de eerste maand.

Een migratie of hogere verzendvolumes gepland?

Neem contact op met sales

Vragen over het verzenden van e-mail

Kan ik zowel transactionele als marketing-e-mail versturen?
Ja, beide gaan via dezelfde send-API. Het enige verschil is het categorieveld, dat bepaalt hoe suppressies en uitschrijvingen worden toegepast. Kies transactional voor wachtwoordresets en bonnetjes, en marketing voor campagnes.
Wat gebeurt er als een verzoek een time-out heeft en ik het opnieuw probeer?
Stuur een Idempotency-Key-header mee bij elke logische verzending. Als het eerste verzoek is geslaagd maar u het antwoord nooit hebt gezien, geeft het opnieuw afspelen met dezelfde sleutel u het oorspronkelijke resultaat terug met een Idempotency-Replay-header, in plaats van de e-mail twee keer te versturen.
Kan ik een verzending inplannen voor later?
Stel scheduled_at in op een tijdstip tussen 30 seconden en 30 dagen vooruit. De verzending komt direct terug als geaccepteerd en blijft ingepland totdat deze wordt verstuurd, zodat u op elk moment ervoor kunt annuleren.
Kan ik bestanden bijvoegen?
Ja, als base64 in de attachments-array. Om een afbeelding inline weer te geven, geeft u deze een content_id en verwijst u ernaar vanuit uw HTML met cid:. Houd de ruwe bestanden op of onder 15 MB zodat het bericht nog binnen de limiet van 20 MB past zodra het is gecodeerd, en houd er rekening mee dat uitvoerbare bestanden en script-contenttypes worden geweigerd vóór verzending.

Praat met ons e-mailteam

Bouw je volgende e-mailintegratie.

Bespreek transactionele berichten, batchverzendingen en aflevergebeurtenissen. We helpen je bij het plannen van je integratie, verzendvolume en migratie.

Maak een account aan, maak vervolgens een API-key aan en verstuur een testbericht.

Je gegevens

Producten van interesse

Optioneel

Privacybeleid

Schaal zonder
controle te verliezen.

Organiseer teams in werkruimtes, beheer API-toegang en traceer wijzigingen via auditlogs.

BirdHarborOrganization
WorkspacesProductionSandbox

Delivery agent

API key · Customer operations team
Active
PermissionsAccess
EmailRead & write
SMSRead & write
ALAlex Lee AdminPermissions updated

Audit log

Production
Workspace
Production
Resource
Delivery agent
WhatsApp
ReadRead & write
Succeeded

Begin met Email.
Bouw over kanalen heen met Bird.

Jouw volgende idee.
Klaar om te verbinden.