Sign inGet Started

cURL

Verstuur je eerste e-mail met alleen curl: exporteer een API-key, POST een bericht, en GET het terug om de aflevering te volgen. Dit is de onbewerkte HTTP-flow; alles wat de SDK's doen begint hier.

1. Exporteer je API-key

Maak een key aan in het dashboard onder Developers > API keys (Verstuur je eerste e-mail legt de stappen uit) en exporteer deze:
Codevoorbeeld
export BIRD_API_KEY="bk_us1_..."
Het regioprefix bepaalt je API-host: bk_us1_-keys benaderen https://us1.platform.bird.com, en bk_eu1_-keys benaderen https://eu1.platform.bird.com. De voorbeelden voor verzenden gebruiken us1; wijzig de host als je key een andere regio heeft.

2. Verstuur een e-mail

POST naar /v1/email/messages, waarbij je verzendt vanaf ons gedeelde onboardingdomein naar het delivered@messagebird.dev-sandboxadres. Je hebt geen domeinverificatie of een echt postvak nodig. Selecteer het cURL-tabblad voor deze quickstart.
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"
De API antwoordt met 202: Bird heeft de e-mail geaccepteerd en levert deze asynchroon af. De *_count-velden volgen ontvangers door de afleverstatussen. In het eerste antwoord is één ontvanger geaccepteerd en geen enkele afgeleverd:
Codevoorbeeld
{
  "id": "em_01ky7ma8y2es1s2akzk53tmjn0",
  "status": "accepted",
  "category": "marketing",
  "from": { "email": "onboarding@messagebird.dev" },
  "to": [{ "email": "delivered@messagebird.dev" }],
  "subject": "Hello from Bird",
  "accepted_count": 1,
  "processed_count": 0,
  "delivered_count": 0,
  "deferred_count": 0,
  "bounced_count": 0,
  "complained_count": 0,
  "rejected_count": 0,
  "open_count": 0,
  "click_count": 0,
  "track_opens": true,
  "track_clicks": true,
  "created_at": "2026-07-23T13:58:20.866Z"
}
Raw HTTP heeft geen SDK die een idempotentiesleutel voor je genereert. Geef voor bescherming bij opnieuw proberen een sleutel mee bij de eerste poging en hergebruik die bij een nieuwe poging. Zie Idempotentie voor een voorbeeld en replay-limieten.

3. Volg de aflevering

GET het bericht op basis van zijn em_-ID en volg hoe de status verandert van accepted via processed naar delivered. Selecteer opnieuw het cURL-tabblad:
const msg = await bird.email.get("em_abc123");
msg.status; // "accepted" | "processed" | "delivered" | "bounced" | …
msg.delivered_count;
msg.bounced_count;
Omdat de ontvanger het delivered@messagebird.dev-sandboxadres is, is aflevering gegarandeerd: het bericht doorloopt de echte pipeline van Bird maar raakt nooit een echt postvak.

Volgende stappen