Sign inGet started

Batch-Versand

POST /v1/email/batches nimmt bis zu 100 vollständige Versand-Payloads in einem Request entgegen. Jedes Element ist eine unabhängige Nachricht mit eigenem Absender, eigenen Empfängern und eigenem Inhalt. Verwenden Sie einen Batch, um Belege, Benachrichtigungen oder andere empfängerspezifische Nachrichten mit weniger API-Requests zu übermitteln. Für eine einzelne Nachricht siehe E-Mail senden.

Wann Sie was verwenden

  • Unabhängige Nachrichten, die Sie bereits vorliegen haben. Verwenden Sie einen Batch und übergeben Sie alle in einem Request.
  • Ein gleichmäßiger Strom mit hohem Volumen. Den Einzelversand-Endpoint in einer Schleife aufzurufen ist eine solide Architektur, und ein Batch macht keine einzelne Nachricht günstiger oder schneller zuzustellen. Was sich ändert, ist der Durchsatz, weil Batch-Requests die email_batch-Rate-Limit-Gruppe nutzen statt der email_send-Gruppe und jeder bis zu 100 Nachrichten fasst.
  • Eine E-Mail an eine gespeicherte Zielgruppe. Das ist ein Broadcast, der die Zielgruppe in Empfänger auflöst und pro Kontakt personalisiert.

Batch-Versand

Der Request-Body ist ein JSON-Objekt, dessen messages-Array 1 bis 100 Nachrichtenobjekte enthält. Jedes Element ist ein vollständiger, unabhängiger Versand-Request mit eigenem from, to, subject, Inhalt und optional eigenem category, ip_pool_id, Tags und Metadaten. Das Element-Schema entspricht exakt dem Einzelversand-Payload, daher gilt alles aus E-Mail senden pro Element, einschließlich des category-Standardwerts marketing und des Versands per Template.
Das schließt scheduled_at ein, sodass ein Batch Nachrichten mischen kann, die sofort versendet werden, mit solchen, die später versendet werden – jede zu ihrem eigenen Zeitpunkt. Die Regeln und das Kontingent unter geplanter Versand gelten pro Element, und ein geplantes Element wird über seine eigene ID storniert wie jede andere geplante Nachricht.
const batch = await bird.email.sendBatch({
  messages: [
    {
      from: { email: "onboarding@messagebird.dev", name: "Bird" },
      to: ["alice@example.com"],
      subject: "Your receipt",
      html: "<p>Thanks, Alice.</p>",
    },
    {
      from: { email: "onboarding@messagebird.dev", name: "Bird" },
      to: ["bob@example.com"],
      subject: "Your receipt",
      html: "<p>Thanks, Bob.</p>",
    },
  ],
});
for (const item of batch.data) console.log(item.id, item.status);

Alles-oder-nichts-Validierung

Jedes Element wird validiert, bevor ein Element in die Warteschlange kommt. Wenn eine Nachricht fehlschlägt – ein Validierungsfehler auf Feldebene oder eine nicht verifizierte Absenderdomain – wird der gesamte Batch mit einem 422 abgelehnt und nichts versendet: Beheben Sie das betroffene Element und senden Sie den Batch erneut.
Unterdrückung ist nicht Teil dieser Prüfung. Ein Element, dessen Empfänger alle unterdrückt sind, wird trotzdem akzeptiert und erhält seine eigene em_-ID, und diese Empfänger erscheinen als status: rejected, sobald die Nachricht verarbeitet ist (siehe Unterdrückungen).

Die 202-Antwort verarbeiten

Ein erfolgreicher Batch gibt 202 Accepted mit einem Eintrag pro Nachricht zurück, in Einreichungsreihenfolge:
Codebeispiel
{
  "data": [
    { "id": "em_01ky7q1vmkerwa7fxyycfe5ks1", "status": "accepted", "category": "transactional" },
    { "id": "em_01ky7q1vmkesr9h1y52tkqng9f", "status": "accepted", "category": "marketing" },
    { "id": "em_01ky7q1vmkesyr1z1h4s48jjxm", "status": "accepted", "category": "transactional" }
  ]
}
Jedes untergeordnete Element ist eine gewöhnliche Nachricht: Verfolgen Sie es über seine em_-ID durch GET /v1/email/messages/{message_id}, seine Empfänger- und Event-Endpoints sowie Webhooks, genau so, als hätten Sie es einzeln gesendet. Dasselbe asynchrone Modell gilt, d. h. 202 bedeutet dauerhaft akzeptiert, und Ergebnisse pro Empfänger treffen danach ein.

Idempotente Wiederholungen

Senden Sie einen Idempotency-Key-Header mit dem Batch mit, wie es der Beispiel-Request zeigt. Wenn der Request erfolgreich war, Sie die Antwort aber nie erhalten haben, liefert ein erneutes Absenden mit demselben Schlüssel das ursprüngliche Ergebnis zurück – dieselben untergeordneten Nachrichten-IDs und einen Idempotency-Replay-Header –, anstatt jede Nachricht erneut zu senden. Ein versehentliches Duplikat kostet Sie hier bis zu 100 E-Mails, behandeln Sie den Schlüssel also in Produktion als Pflichtfeld. Siehe Idempotenz.

Anhänge und das Body-Limit

Jedes Batch-Element kann eigene attachments haben, mit demselben Feldvertrag und demselben Größenbudget pro Nachricht wie ein Einzelversand (siehe Anhänge). Ein weiteres Limit gilt für den Batch als Ganzes: Der serialisierte JSON-Request-Body ist auf 20 MB begrenzt, und ein größerer Body wird mit einem 413 abgelehnt. Base64-kodierte Anhänge zählen dagegen, daher erreichen anhangslastige Batches das Limit schnell. Teilen Sie sie auf mehrere Batches auf oder senden Sie sie einzeln.

Broadcasts

Ein Broadcast sendet eine E-Mail an eine gespeicherte Zielgruppe. Die aktuellen Mitglieder der Zielgruppe werden beim Versandstart abzüglich Unterdrückungen in die Empfängerliste aufgelöst, und die Kontakteigenschaften jedes Empfängers füllen die Variablen des Templates. Starten Sie einen Broadcast über das Dashboard, über /v1/email/broadcasts oder mit den bird email broadcasts-Befehlen. Broadcasts enthält die Schritt-für-Schritt-Anleitung.

Nächste Schritte

  • E-Mail senden: das vollständige Element-Payload, einschließlich Felder, Limits und Tags vs. Metadaten
  • Broadcasts: eine E-Mail an eine gespeicherte Zielgruppe, personalisiert pro Kontakt
  • Kategorien: marketing und transactional, und was jede für die Unterdrückungsrichtlinie bedeutet
  • Idempotenz: Schlüsselformat, Aufbewahrung und Replay-Semantik
  • API-Referenz: die vollständigen Batch-Request- und -Response-Schemas
  • 100 E-Mails in einem API-Aufruf senden: ein Video, das einen Batch-Versand zeigt und wie jede Nachricht zurückmeldet

Verwandte Ressourcen

Weiter mit der Dokumentation, Anleitungen und Beispielen zu diesem Thema. Die Ressourcen sind auf Englisch.

Implementierungs-Briefing erhalten