Sign inGet Started

cURL

Verstuur je eerste e-mail met alleen curl: exporteer een API-sleutel, verstuur een bericht met POST en haal het met GET op om de bezorging te volgen. Dit is de kale HTTP-flow; alles wat de SDK's doen, begint hier.

1. Exporteer je API-sleutel

Maak een sleutel aan in het dashboard onder Platform tools > API keys (Verstuur je eerste e-mail legt het stap voor stap uit) en exporteer hem daarna:

Codevoorbeeld
export BIRD_API_KEY="bk_us1_..."

Het regiovoorvoegsel bepaalt je API-host: bk_us1_-sleutels roepen https://us1.platform.bird.com aan en bk_eu1_-sleutels roepen https://eu1.platform.bird.com aan. De verzendvoorbeelden gebruiken us1; wijzig de host als je sleutel bij een andere regio hoort.

2. Verstuur een e-mail

Doe een POST naar /v1/email/messages en verstuur vanaf ons gedeelde onboardingdomein naar het delivered@messagebird.dev-sandboxadres. Je hebt geen domeinverificatie of echte mailbox nodig. Kies het tabblad cURL 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 bezorgt hem asynchroon. Met de *_count-velden volg je de ontvangers door de bezorgstatussen. In het eerste antwoord is één ontvanger geaccepteerd en is er nog geen bezorgd:

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"
}

Bij kale HTTP is er geen SDK die een idempotentiesleutel voor je genereert. Wil je beschermd zijn bij opnieuw proberen, geef dan bij de eerste poging een sleutel mee en gebruik die opnieuw bij elke nieuwe poging. Zie Idempotentie voor een voorbeeld en de limieten voor herhaalde verzoeken.

3. Volg de bezorging

Haal het bericht op met GET via zijn em_-ID en zie de status van accepted via processed naar delivered gaan. Selecteer opnieuw het tabblad cURL:

const msg = await bird.email.get("em_abc123");
msg.status; // "accepted" | "processed" | "delivered" | "bounced" | …
msg.delivered_count;
msg.bounced_count;
console.log(msg.subject, msg.subject_recipient_id);

Omdat de ontvanger het delivered@messagebird.dev-sandboxadres is, is aflevering gegarandeerd: het bericht doorloopt de echte pipeline van Bird, maar komt nooit in een echte mailbox terecht.

Volgende stappen