Zum Inhalt springen
Doku

Kampagnen erstellen, ihre Kontaktlisten und Segmente wählen und sie senden oder planen.

Basis-URLhttps://api.emailit.com/v2AuthentifizierungFehlerRate Limits

Kampagne erstellen

Erstellt eine Kampagne mit dem Status draft. Erfordert einen API-Schlüssel mit dem Scope full. Löst das Event campaign.created aus.

Eine neue Kampagne hat keine Empfänger. Wählen Sie ihre Kontaktlisten und Segmente mit Kampagne aktualisieren aus und senden oder planen Sie sie anschließend. Credits werden beim Versand der Kampagne berechnet: 2 Credits pro E-Mail.

POST/campaigns

Body-Parameter

namestringerforderlich
Interner Name der Kampagne. Empfänger sehen ihn nicht. Andere Kampagnen-Endpunkte akzeptieren den Namen anstelle der ID; halten Sie die Namen also eindeutig, wenn Sie sie so verwenden.
subjectstring
Betreffzeile. Unterstützt Platzhalter wie {{first_name}}.
from_emailstring
Absenderadresse. Sie muss zu einer verifizierten Versanddomain im Workspace gehören, zum Beispiel news@acme.com.
from_namestring
Anzeigename des Absenders, zum Beispiel Acme. Die Nachricht wird dann von Acme <news@acme.com> gesendet.
reply_tostring
Reply-To-Adresse. Standardwert beim Versand der Kampagne: from_email.
htmlstring
HTML-Inhalt, den Emailit versendet und für jeden Empfänger mit Temple rendert. Unterstützt die Platzhalter {{first_name}}, {{last_name}}, {{email}}, {{unsubscribe_url}} und {{cf.<key>}} für eigene Felder, mit Ersatzwerten und {{#if}}-Blöcken. Legen Sie den Inhalt beim Erstellen der Kampagne fest.
textstring
Nur-Text-Inhalt. Unterstützt dieselben Platzhalter wie html.
preview_textstring
Vorschautext, der im Posteingang nach dem Betreff angezeigt wird. Unterstützt Platzhalter. Beim Versand der Kampagne fügt Emailit ihn als versteckten Text oben in den HTML-Inhalt ein, es sei denn, das HTML enthält denselben Text bereits in einem versteckten Element (zum Beispiel aus einem <mj-preview> in MJML).
contentstring
Editor-Quelltext des Inhalts (zum Beispiel MJML), unverändert gespeichert. Wenn Sie weder html noch text übergeben und content_type html oder text ist, sendet Emailit content als HTML- bzw. Nur-Text-Inhalt.
content_typestringStandardwert: html
Format von content: html, text oder mjml. Für das Emailit-Team kompiliert Emailit Inhalte vom Typ mjml zu html (Alpha). Für alle anderen ist mjml nur eine Bezeichnung: Senden Sie das kompilierte HTML in html.
utm_trackingbooleanStandardwert: false
Setzen Sie den Wert auf true, damit Emailit beim Versand der Kampagne UTM-Parameter an jeden http- und https-Link anhängt und Ihre Webanalyse die Besuche der Kampagne zuordnet. Parameter, die ein Link bereits hat, bleiben erhalten, und Abmeldelinks und Links zur Webversion werden nicht verändert. Siehe Versandoptionen.
utm_paramsobject | null

UTM-Werte, die verwendet werden, wenn utm_tracking aktiviert ist. Jeder Schlüssel setzt einen utm_-Parameter:

  • source (Standardwert emailit), medium (Standardwert email) und campaign (Standardwert {campaign_name}).
  • content, term und id, die standardmäßig nicht hinzugefügt werden.

Werte sind Text mit bis zu 191 Zeichen und können die Tokens {campaign_name} (der Kampagnenname in Kleinbuchstaben, mit Bindestrichen), {campaign_id}, {subject}, {variant} (der Name der A/B-Test-Version) und {send_date} (YYYY-MM-DD) enthalten. Unbekannte Schlüssel und Tokens geben 422 zurück. Schlüssel, die Sie nicht setzen, behalten ihre Standardwerte; null oder {} setzt alle zurück.

smart_sending_hoursinteger | null
Überspringt Kontakte, denen eine andere Kampagne des Workspaces innerhalb dieser Anzahl von Stunden eine E-Mail gesendet hat, von 1 bis 168. null (Standardwert) deaktiviert Smart Sending. Wird geprüft, wenn der Versand der Kampagne beginnt. E-Mails aus Automatisierungen und der E-Mail-API zählen nicht.
exclude_unengagedbooleanStandardwert: false
Setzen Sie den Wert auf true, um Kontakte zu überspringen, denen in den letzten 90 Tagen 3 oder mehr Kampagnen-E-Mails gesendet wurden und die keine davon geöffnet oder geklickt haben.
tagsstring[]
Labels zum Organisieren von Kampagnen. Bis zu 20 Tags mit jeweils bis zu 50 Zeichen. Leere Tags werden verworfen und Duplikate ohne Beachtung der Groß-/Kleinschreibung entfernt. Wenn Sie tags senden, wird die Liste ersetzt.
send_strategystringStandardwert: immediate
Wie der Versand zeitlich verteilt wird: immediate, throttled, local_time oder smart_time. Wird mit der Kampagne gespeichert und verwendet, wenn Sie sie ohne Strategie senden.
send_optionsobject | null
Optionen von send_strategy, unverändert gespeichert und beim Versand der Kampagne vollständig geprüft. Siehe Kampagne senden oder planen.
ab_testobject | null

Ein A/B-Test mit 2 bis 5 Versionen. Ein zufälliger Anteil der Empfänger wird gleichmäßig auf die Versionen aufgeteilt. Nach duration_hours erhalten die übrigen Empfänger die Version mit dem besten Ergebnis. Während der Test läuft, hat die Kampagne den Status testing. A/B-Tests senden mit der Strategie immediate, sofort oder zu einem geplanten Zeitpunkt.

  • enabled (boolean, Standardwert true): false deaktiviert den Test.
  • winner_metric (string, Standardwert opened): opened, clicked, orders (zugeordnete Bestellungen pro gesendeter E-Mail) oder revenue (zugeordneter Umsatz pro gesendeter E-Mail). orders und revenue gehören zu Commerce, das in der Alpha ist: Andere Anfragen geben 403 mit error: "commerce_alpha" zurück.
  • test_size_percent (integer, Standardwert 20): Anteil der Empfänger im Test, von 10 bis 100. Bei 100 sind alle im Test, und es wird keine Gewinnerversion gesendet.
  • duration_hours (integer, Standardwert 4): wie lange der Test läuft, bevor die Gewinnerversion gesendet wird, von 1 bis 168.
  • variants (object[], erforderlich): 2 bis 5 Versionen. Jede kann name (bis zu 100 Zeichen, Standardwerte A, B, C und so weiter), subject, preview_text, from_name, from_email, reply_to, html und text festlegen. Felder, die eine Version weglässt, stammen aus der Kampagne. Mindestens eine Version muss einen Betreff, einen Vorschautext, einen Absendernamen, eine Absenderadresse oder einen Inhalt festlegen.

Rückgabe

Gibt 201 Created mit dem Kampagnen-Objekt zurück. status ist draft. Die Antwort gibt html, text und content nicht zurück. Sie enthält die oben genannten Einstellungen, send_completes_at und send_summary (beide null, bis die Kampagne gesendet wird) sowie ab_test mit den Versionen und ihren IDs (cvr_…). Siehe Kampagne abrufen.

Gibt 400 zurück, wenn name fehlt, 403, wenn der API-Schlüssel den Scope full nicht hat, und 422, wenn eine Einstellung oder der A/B-Test ungültig ist.

POST/campaigns
Terminal
curl -X POST https://api.emailit.com/v2/campaigns \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "October newsletter",
    "subject": "October news for {{first_name}}",
    "from_email": "news@acme.com",
    "from_name": "Acme",
    "reply_to": "support@acme.com",
    "html": "<p>Hi {{first_name}},</p><p>Here is what changed this month.</p><p><a href=\"{{unsubscribe_url}}\">Unsubscribe</a></p>",
    "text": "Hi {{first_name}}, here is what changed this month. Unsubscribe: {{unsubscribe_url}}"
  }'
JSON
{
  "object": "campaign",
  "id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
  "name": "October newsletter",
  "status": "draft",
  "subject": "October news for {{first_name}}",
  "from_email": "news@acme.com",
  "from_name": "Acme",
  "reply_to": "support@acme.com",
  "preview_text": null,
  "content_type": "html",
  "created_at": "2026-10-01T09:30:12.482193Z",
  "updated_at": "2026-10-01T09:30:12.482193Z",
  "utm_tracking": false,
  "utm_params": null,
  "smart_sending_hours": null,
  "exclude_unengaged": false,
  "tags": [],
  "send_strategy": "immediate",
  "send_options": null,
  "send_completes_at": null,
  "send_summary": null,
  "ab_test": {
    "enabled": false,
    "variants": []
  }
}

Kampagne abrufen

Ruft eine Kampagne anhand ihrer ID oder ihres Namens ab. Erfordert einen API-Schlüssel mit dem Scope full.

GET/campaigns/{id}

Pfadparameter

idstringerforderlich
Die Kampagnen-ID (cmp_…) oder der Name der Kampagne. Namen mit Leerzeichen oder Sonderzeichen müssen Sie URL-kodieren.

Rückgabe

Gibt das Kampagnen-Objekt zurück.

objectstring
Immer campaign.
idstring
Kampagnen-ID mit dem Präfix cmp_.
statusstring
draft, scheduled, queued, sending, testing, sent, canceled oder archived. queued bedeutet, dass eine geplante Kampagne ihren Sendezeitpunkt erreicht hat und auf einen Worker wartet. testing bedeutet, dass ein A/B-Test läuft und die Gewinnerversion noch nicht gesendet wurde. Ein zeitlich verteilter Versand bleibt sending, bis sein letzter Batch fällig ist.
namestring
Interner Name der Kampagne.
subjectstring
Betreffzeile mit nicht aufgelösten Platzhaltern.
from_emailstring
Absenderadresse. "", solange sie nicht festgelegt ist.
from_namestring
Anzeigename des Absenders. "", solange er nicht festgelegt ist.
reply_tostring
Reply-To-Adresse. "" bedeutet, dass Antworten an from_email gehen.
preview_textstring | null
Vorschautext, der im Posteingang nach dem Betreff angezeigt wird.
content_typestring
Formatbezeichnung des Editor-Quelltexts: html, text oder mjml bei Kampagnen, die per API erstellt wurden. Kampagnen, deren MJML Emailit kompiliert hat (Alpha), geben außerdem ein Objekt mjml mit den Versionen des Dokuments zurück.
scheduled_atstring | null
Sendezeitpunkt einer geplanten Kampagne, in UTC.
sent_atstring | null
Beginn des Versands.
utm_trackingboolean
Ob UTM-Parameter an die Links der Kampagne angehängt werden.
utm_paramsobject | null
UTM-Werte, die die Standardwerte ersetzen, oder null. Siehe Kampagne erstellen.
smart_sending_hoursinteger | null
Kontakte, denen eine andere Kampagne innerhalb dieser Anzahl von Stunden eine E-Mail gesendet hat, werden übersprungen. null, wenn Smart Sending deaktiviert ist.
exclude_unengagedboolean
Ob Kontakte übersprungen werden, denen in den letzten 90 Tagen 3 oder mehr Kampagnen-E-Mails gesendet wurden und die keine davon geöffnet oder geklickt haben.
tagsstring[]
Die Tags der Kampagne.
send_strategystring
immediate, throttled, local_time oder smart_time.
send_optionsobject | null
Optionen der Strategie. Siehe Kampagne senden oder planen.
send_completes_atstring | null
Bei einem Versand, der über mehr als eine Minute verteilt ist, der Zeitpunkt, zu dem sein letzter Batch fällig ist. Danach wechselt die Kampagne zu sent.
send_summaryobject | null

Was der letzte Versand bewirkt hat, oder null, bevor die Kampagne gesendet wird:

  • recipients: Kontakte in den Kontaktlisten und Segmenten, einmal pro Adresse.
  • suppressed: übersprungen, weil die Adresse gesperrt ist.
  • smart_sending_skipped: durch smart_sending_hours übersprungen.
  • unengaged_skipped: durch exclude_unengaged übersprungen.
  • sent: Kontakte, denen die Kampagne gesendet wurde. Bei einem A/B-Test nur die Testgruppe.
  • batches: Anzahl der Versand-Batches.
  • completes_at: wie send_completes_at.
ab_testobject

Der A/B-Test. Ohne Test: { "enabled": false, "variants": [] }. Mit Test: enabled, winner_metric, test_size_percent, duration_hours und variants. Jede Version hat id (cvr_…), name, subject, preview_text, from_name, from_email, reply_to, html, text (null, wenn die Version den Wert der Kampagne verwendet) und is_winner. Siehe Kampagne erstellen.

recipientsobject[]
Kontaktlisten und Segmente, an die sich die Kampagne richtet. Jeder Eintrag hat entweder audience_id (aud_…) oder segment_id (seg_…) sowie exclude (true für einen Ausschluss).

Der Inhalt (html, text und content) ist nicht in der Antwort enthalten. Für Engagement und Umsatz verwenden Sie Kampagnenstatistiken abrufen oder den Bericht in der Weboberfläche unter Email MarketingCampaigns.

Gibt 404 zurück, wenn keine Kampagne im Workspace zu id passt.

GET/campaigns/{id}
Terminal
curl https://api.emailit.com/v2/campaigns/cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
JSON
{
  "object": "campaign",
  "id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
  "name": "October newsletter",
  "status": "scheduled",
  "subject": "October news for {{first_name}}",
  "from_email": "news@acme.com",
  "from_name": "Acme",
  "reply_to": "support@acme.com",
  "preview_text": null,
  "content_type": "html",
  "sent_at": null,
  "scheduled_at": "2026-10-08 09:00:00+00",
  "created_at": "2026-10-01 09:30:12.482193+00",
  "updated_at": "2026-10-01 10:02:47.118204+00",
  "utm_tracking": true,
  "utm_params": {
    "campaign": "{campaign_name}-{send_date}"
  },
  "smart_sending_hours": 16,
  "exclude_unengaged": true,
  "tags": ["newsletter", "q4"],
  "send_strategy": "throttled",
  "send_options": {
    "per_hour": 5000
  },
  "send_completes_at": null,
  "send_summary": null,
  "ab_test": {
    "enabled": false,
    "variants": []
  },
  "recipients": [
    { "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV", "exclude": false },
    { "segment_id": "seg_3Kq8VbN2xYt5Lm9Pw1Rc7Hd4Zf0", "exclude": true }
  ]
}

Kampagne aktualisieren

Aktualisiert die übergebenen Felder und lässt die übrigen unverändert. Damit wählen Sie die Kontaktlisten und Segmente der Kampagne aus, bevor Sie sie senden. Erfordert einen API-Schlüssel mit dem Scope full. Löst das Event campaign.updated aus.

Eine geplante Kampagne sendet den Stand, der zu ihrem Sendezeitpunkt gespeichert ist; Sie können sie also auch nach dem Planen noch bearbeiten.

POST/campaigns/{id}

Pfadparameter

idstringerforderlich
Die Kampagnen-ID (cmp_…) oder der Name der Kampagne.

Body-Parameter

namestring
Interner Name der Kampagne.
subjectstring
Betreffzeile. Unterstützt Platzhalter.
from_emailstring
Absenderadresse auf einer verifizierten Versanddomain.
from_namestring
Anzeigename des Absenders.
reply_tostring
Reply-To-Adresse. Ein leerer String bedeutet, dass Antworten an from_email gehen.
preview_textstring
Vorschautext, der im Posteingang nach dem Betreff angezeigt wird. Beim Versand der Kampagne fügt Emailit ihn als versteckten Text oben in den HTML-Inhalt ein. Siehe Kampagne erstellen.
contentstring
Editor-Quelltext des Inhalts, unverändert gespeichert. Wenn Sie content oder content_type ändern und das Format html oder text ist, sendet Emailit content als neuen HTML- bzw. Nur-Text-Inhalt.
content_typestring
Format von content: html, text oder mjml. Für das Emailit-Team kompiliert Emailit Inhalte vom Typ mjml zu html (Alpha). Für alle anderen ist mjml nur eine Bezeichnung.
utm_trackingboolean
UTM-Parameter beim Versand an die Links der Kampagne anhängen. Siehe Kampagne erstellen.
utm_paramsobject | null
UTM-Werte: source, medium, campaign, content, term und id. Ersetzt das gespeicherte Objekt; null stellt die Standardwerte wieder her. Siehe Kampagne erstellen.
smart_sending_hoursinteger | null
Überspringt Kontakte, denen eine andere Kampagne innerhalb dieser Anzahl von Stunden eine E-Mail gesendet hat, von 1 bis 168. null deaktiviert die Option.
exclude_unengagedboolean
Überspringt Kontakte, denen in den letzten 90 Tagen 3 oder mehr Kampagnen-E-Mails gesendet wurden und die keine davon geöffnet oder geklickt haben.
tagsstring[]
Bis zu 20 Tags mit jeweils bis zu 50 Zeichen. Ersetzt die aktuellen Tags.
send_strategystring
immediate, throttled, local_time oder smart_time. Wird verwendet, wenn Sie die Kampagne senden, ohne eine Strategie anzugeben.
send_optionsobject | null
Optionen von send_strategy, beim Versand der Kampagne vollständig geprüft. Siehe Kampagne senden oder planen.
ab_testobject | null

Der A/B-Test mit den Feldern, die unter Kampagne erstellen beschrieben sind. Wenn Sie ab_test senden, werden der Test und seine Versionen ersetzt. Um die ID einer Version und damit ihre Ergebnisse zu behalten, geben Sie ihre id (cvr_…) in der Version an. null oder "enabled": false deaktiviert den Test und löscht die Versionen.

recipientsobject[]

Die Kontaktlisten und Segmente, an die sich die Kampagne richtet, bis zu 100 Einträge. Ersetzt die aktuelle Liste. Geben Sie mindestens einen Eintrag mit exclude auf false an. Jeder Eintrag hat entweder audience_id oder segment_id, nicht beides:

  • audience_id (String): eine Kontaktlisten-ID (aud_…) in diesem Workspace.
  • segment_id (String): eine Segment-ID (seg_…) in diesem Workspace. Segmente sind in der Alpha: Nur das Emailit-Team kann ein Segment hinzufügen, andere Anfragen geben 403 mit error: "segments_alpha" zurück. Segmente, die die Kampagne bereits hat, können bleiben.
  • exclude (Boolean, Standardwert false): true lässt die Abonnenten der Kontaktliste oder die Kontakte des Segments aus, auch wenn sie zugleich in einem eingeschlossenen Eintrag sind.

Doppelte Einträge werden ignoriert. Beim Versand sendet Emailit jedem Kontakt genau eine E-Mail, wenn er bei einer eingeschlossenen Kontaktliste angemeldet ist oder einem eingeschlossenen Segment entspricht, in keinem ausgeschlossenen Eintrag ist, nicht global abgemeldet ist, bei mindestens einer Kontaktliste angemeldet ist und nicht gesperrt ist. Segmente werden beim Versand ausgewertet. Existiert eine ausgeschlossene Kontaktliste oder ein ausgeschlossenes Segment bis dahin nicht mehr, wird die Kampagne nicht gesendet.

Den HTML- und Textinhalt legen Sie beim Erstellen der Kampagne fest. Unbekannte Felder im Body werden ignoriert.

Rückgabe

Gibt das aktualisierte Kampagnen-Objekt einschließlich recipients und ab_test zurück. Siehe Kampagne abrufen.

Gibt 422 zurück, wenn recipients keine eingeschlossene Kontaktliste und kein eingeschlossenes Segment enthält, mehr als 100 Einträge hat, einen Eintrag mit beiden IDs enthält oder auf eine Kontaktliste oder ein Segment außerhalb des Workspaces verweist. Gibt außerdem 422 zurück, wenn eine Einstellung oder der A/B-Test ungültig ist oder wenn Sie ab_test für eine Kampagne senden, die weder ein Entwurf noch geplant ist, und 404, wenn die Kampagne nicht existiert.

POST/campaigns/{id}
Terminal
curl -X POST https://api.emailit.com/v2/campaigns/cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "subject": "Your October update, {{first_name}}",
    "recipients": [
      { "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV" },
      { "segment_id": "seg_3Kq8VbN2xYt5Lm9Pw1Rc7Hd4Zf0", "exclude": true }
    ]
  }'
JSON
{
  "object": "campaign",
  "id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
  "name": "October newsletter",
  "status": "draft",
  "subject": "Your October update, {{first_name}}",
  "from_email": "news@acme.com",
  "from_name": "Acme",
  "reply_to": "support@acme.com",
  "preview_text": null,
  "content_type": "html",
  "scheduled_at": null,
  "created_at": "2026-10-01 09:30:12.482193+00",
  "updated_at": "2026-10-01 10:02:47.118204+00",
  "utm_tracking": false,
  "utm_params": null,
  "smart_sending_hours": null,
  "exclude_unengaged": false,
  "tags": [],
  "send_strategy": "immediate",
  "send_options": null,
  "send_completes_at": null,
  "send_summary": null,
  "ab_test": {
    "enabled": false,
    "variants": []
  },
  "recipients": [
    { "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV", "exclude": false },
    { "segment_id": "seg_3Kq8VbN2xYt5Lm9Pw1Rc7Hd4Zf0", "exclude": true }
  ]
}

Kampagnen auflisten

Gibt die Kampagnen des Workspaces zurück, neueste zuerst. Erfordert einen API-Schlüssel mit dem Scope full.

GET/campaigns

Query-Parameter

pageintegerStandardwert: 1
Seitennummer, beginnend bei 1.
limitintegerStandardwert: 10
Kampagnen pro Seite, von 1 bis 100.
statusstring
Kurzfilter für den Status: draft, scheduled, sending (erfasst auch queued), sent, canceled, archived oder all.
matchstring

all (Standardwert) verlangt, dass alle Filter zutreffen. or trifft zu, wenn ein beliebiger Filter passt. Siehe Filtern und Sortieren.

orderstring

Sortierschlüssel für diese Liste. Siehe die Sortierschlüssel unten.

directionstring

asc oder desc.

Filterschlüssel

Filter verwenden Query-Parameter der Form key.condition=value, zum Beispiel status.exact=sent oder created_at.after=2026-09-01. Die Bedingungen pro Typ finden Sie unter Filtern.

Schlüssel Typ Hinweise
name string
subject string
status enum draft, scheduled, queued, sending, sent, archived
created_at date
sent_at date

Sortierschlüssel für order: name, subject, status, created_at, sent_at.

Rückgabe

Gibt eine Seite mit Kampagnen-Objekten ohne reply_to, preview_text, content_type und recipients zurück, und von den Versandoptionen nur mit tags, send_strategy und send_completes_at. Die übrigen Felder liefert Kampagne abrufen.

dataobject[]
Kampagnen auf dieser Seite.
total_recordsinteger
Anzahl der Kampagnen, die der Abfrage entsprechen.
next_page_urlstring | null
Pfad der nächsten Seite oder null auf der letzten Seite. Er enthält nur page und limit; fügen Sie Ihre Suche und Filter also erneut hinzu, wenn Sie ihm folgen.
previous_page_urlstring | null
Pfad der vorherigen Seite oder null auf der ersten Seite.
GET/campaigns
Terminal
curl -G https://api.emailit.com/v2/campaigns \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -d limit=20 \
  -d status=sent \
  -d order=sent_at \
  -d direction=desc
JSON
{
  "data": [
    {
      "object": "campaign",
      "id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
      "name": "October newsletter",
      "status": "sent",
      "subject": "Your October update, {{first_name}}",
      "from_email": "news@acme.com",
      "from_name": "Acme",
      "sent_at": "2026-10-08 09:00:04+00",
      "scheduled_at": "2026-10-08 09:00:00+00",
      "created_at": "2026-10-01 09:30:12.482193+00",
      "updated_at": "2026-10-08 09:00:31+00",
      "tags": ["newsletter"],
      "send_strategy": "immediate",
      "send_completes_at": null
    }
  ],
  "total_records": 34,
  "next_page_url": "/v2/campaigns?page=2&limit=20",
  "previous_page_url": null
}

Kampagne senden oder planen

Sendet die Kampagne sofort oder plant sie, wenn Sie ein zukünftiges scheduled_at übergeben. Erfordert einen API-Schlüssel mit dem Scope full und einen verifizierten Workspace: Nicht verifizierte Workspaces können keine Kampagnen senden und erhalten 403. Nur Entwürfe und geplante Kampagnen können gesendet werden: Eine Kampagne, die gerade gesendet wird oder gesendet wurde, gibt 422 zurück, sodass eine wiederholte Anfrage nicht noch einmal E-Mails an alle sendet.

Stellen Sie vor dem Versand sicher, dass die Kampagne eine from_email auf einer verifizierten Domain, einen Betreff, einen html- oder text-Inhalt und mindestens eine eingeschlossene Kontaktliste oder ein eingeschlossenes Segment hat (festgelegt mit Kampagne aktualisieren). Jede E-Mail kostet 2 Credits.

POST/campaigns/{id}/send

Pfadparameter

idstringerforderlich
Die Kampagnen-ID (cmp_…) oder der Name der Kampagne.

Body-Parameter

scheduled_atstring

Sendezeitpunkt. Akzeptiert ISO 8601 (2026-10-08T09:00:00Z), einen Unix-Zeitstempel in Sekunden oder natürliche Sprache wie tomorrow at 9am (in UTC interpretiert). Der Zeitpunkt muss in der Zukunft liegen und die Kampagne muss ein Entwurf (draft) sein.

Lassen Sie den Parameter weg, um sofort zu senden. Um eine geplante Kampagne früher zu senden, rufen Sie diesen Endpunkt ohne scheduled_at auf.

send_strategystring

Wie der Versand zeitlich verteilt wird. Standardmäßig gilt die in der Kampagne gespeicherte Strategie, sonst immediate. Die Strategie und ihre Optionen werden in der Kampagne gespeichert. Siehe Versandoptionen.

  • immediate: alle auf einmal, sofort oder zu scheduled_at.
  • throttled: gleichmäßig mit per_hour E-Mails pro Stunde, ab sofort oder ab scheduled_at.
  • local_time: eine Uhrzeit in der Zeitzone jedes Kontakts. scheduled_at wird ignoriert.
  • smart_time: jeder Kontakt zu der Stunde, in der er üblicherweise öffnet oder klickt, innerhalb eines Zeitfensters ab dem Start.

Kampagnen mit einem A/B-Test senden nur mit immediate.

send_optionsobject

Optionen der Strategie. Standardmäßig gelten die in der Kampagne gespeicherten Optionen.

  • throttled: per_hour (integer, erforderlich), von 100 bis 1.000.000 E-Mails pro Stunde.
  • local_time: local_time (string, erforderlich), die Uhrzeit im Format YYYY-MM-DDTHH:mm, zum Beispiel 2026-10-08T09:00, und timezone (string, Standardwert UTC), die IANA-Zeitzone für Kontakte, deren Zeitzone nicht bekannt ist. Die Zeitzonen der Kontakte stammen aus dem Tracking-Skript. Der Versand beginnt, wenn die früheste Zeitzone (UTC+14) die Uhrzeit erreicht; Kontakte in Zeitzonen, in denen sie bereits vorbei ist, erhalten die E-Mail sofort. Bis dahin ist die Kampagne scheduled, sie muss daher ein Entwurf sein. Gibt 422 zurück, wenn die Uhrzeit in allen Zeitzonen vorbei ist.
  • smart_time: window_hours (integer, Standardwert 24), von 1 bis 48. Jeder Kontakt erhält die E-Mail zu der Tagesstunde (UTC), in der er in den letzten 90 Tagen am häufigsten geöffnet oder geklickt hat, wobei ein Klick dreimal so viel zählt wie eine Öffnung, sofern diese Stunde in das Zeitfenster fällt. Kontakte ohne diese Historie erhalten sie zu der Stunde, die unter den übrigen Empfängern am häufigsten ist. Kontakte ohne beides oder deren Stunde außerhalb des Zeitfensters liegt, erhalten sie zum Start.

timezone wird bei jeder Strategie akzeptiert und muss eine gültige IANA-Zeitzone sein, verwendet wird es aber nur von local_time.

Rückgabe

Sofort senden: Der Status wechselt zu sending und Emailit löst campaign.sending aus. Anschließend ermittelt Emailit die Empfänger: jeden angemeldeten Kontakt der eingeschlossenen Kontaktlisten und jeden Kontakt, der den eingeschlossenen Segmenten entspricht, einmal pro Adresse, ohne Kontakte in ausgeschlossenen Kontaktlisten oder Segmenten, ohne Kontakte, die global abgemeldet oder auf keiner Kontaktliste sind, und ohne gesperrte Adressen. Segmente werden in diesem Moment ausgewertet. Außerdem überspringt Emailit Kontakte, die durch smart_sending_hours und exclude_unengaged ausgelassen werden. Die E-Mails werden zu den Zeitpunkten erstellt, die die Versandstrategie festlegt. Sobald alle Empfänger an die Versand-Pipeline übergeben sind, wechselt der Status zu sent und Emailit löst campaign.sent aus. Ein zeitlich verteilter Versand bleibt sending, bis sein letzter Batch fällig ist (send_completes_at). Das Feld send_summary der Kampagne zeigt, wie vielen Kontakten die Kampagne gesendet wurde und wie viele übersprungen wurden. Verfolgen Sie die Zustellung in der Weboberfläche, mit Kampagnenstatistiken abrufen oder mit E-Mail-Events.

A/B-Test: Die Testgruppe erhält die Versionen und der Status wechselt zu testing. Nach duration_hours erhalten die übrigen Empfänger die Gewinnerversion und der Status wechselt zu sent.

Planen: Der Status wechselt zu scheduled und Emailit löst campaign.scheduled aus. Zum geplanten Zeitpunkt wechselt die Kampagne zu queued (campaign.queued) und wird dann wie oben beschrieben gesendet. Wurde eine ausgeschlossene Kontaktliste oder ein ausgeschlossenes Segment in der Zwischenzeit gelöscht, wechselt die Kampagne stattdessen zurück zu draft, ohne gesendet zu werden.

Die Antwort enthält object, id, name und den neuen status, beim Planen zusätzlich scheduled_at.

Status Wann
403 Der Workspace ist nicht verifiziert oder der API-Schlüssel hat nicht den Scope full.
404 Keine Kampagne passt zu id.
422 Die Kampagne ist weder ein Entwurf noch geplant (zum Beispiel wird sie gerade gesendet oder wurde gesendet), scheduled_at lässt sich nicht parsen oder liegt nicht in der Zukunft, Sie haben versucht, eine Kampagne zu planen, die kein Entwurf ist, die Kampagne hat keinen html- oder text-Inhalt, sie hat keine Empfänger (legen Sie sie mit Kampagne aktualisieren fest), sie schließt eine Kontaktliste oder ein Segment aus, die bzw. das nicht mehr existiert, oder send_strategy und send_options sind ungültig. Der Fehler zur Strategie nennt das Feld in message.
POST/campaigns/{id}/send
Terminal
curl -X POST https://api.emailit.com/v2/campaigns/cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN/send \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "scheduled_at": "2026-10-08T09:00:00Z" }'
JSON
{
  "object": "campaign",
  "id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
  "name": "October newsletter",
  "status": "scheduled",
  "scheduled_at": "2026-10-08T09:00:00.000000Z"
}

Kampagne stornieren

Setzt den Status der Kampagne auf canceled und löst das Event campaign.canceled aus. Erfordert einen API-Schlüssel mit dem Scope full.

Nur Kampagnen mit dem Status draft oder sending lassen sich stornieren; jeder andere Status gibt 422 zurück. Wenn Sie eine Kampagne im laufenden Versand stornieren, werden E-Mails, die bereits zur Zustellung in der Warteschlange stehen, nicht zurückgeholt.

POST/campaigns/{id}/cancel

Pfadparameter

idstringerforderlich
Die Kampagnen-ID (cmp_…) oder der Name der Kampagne.

Rückgabe

Gibt object, id, name und status (canceled) zurück.

Gibt 422 zurück, wenn der Status der Kampagne nicht draft oder sending ist, und 404, wenn die Kampagne nicht existiert.

POST/campaigns/{id}/cancel
Terminal
curl -X POST https://api.emailit.com/v2/campaigns/cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN/cancel \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
JSON
{
  "object": "campaign",
  "id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
  "name": "October newsletter",
  "status": "canceled"
}

Kampagnenstatistiken abrufen

Ruft den Bericht einer Kampagne ab: wie viele E-Mails gesendet, zugestellt, geöffnet und geklickt wurden, die Ergebnisse pro Postfachanbieter, den Umsatz der Bestellungen, die der Kampagne zugeordnet sind (Commerce, Alpha), und bei A/B-Tests die Ergebnisse pro Version. Der Bericht in der Weboberfläche unter Email MarketingCampaigns zeigt dieselben Zahlen. Erfordert einen API-Schlüssel mit dem Scope full.

Jede Zahl ist eine Anzahl von E-Mails: Eine E-Mail, die dreimal geöffnet wurde, zählt in opened einmal. Prozentwerte beziehen sich auf sent, sofern nicht anders angegeben, und haben zwei Nachkommastellen.

GET/campaigns/{id}/stats

Pfadparameter

idstringErforderlich

Die Kampagnen-ID (cmp_...) oder der Name der Kampagne. Namen mit Leerzeichen oder Sonderzeichen müssen Sie URL-kodieren.

Query-Parameter

fromstring

Nur E-Mails zählen, die zu diesem Zeitpunkt oder danach erstellt wurden, als Datum oder Datum mit Uhrzeit im Format ISO 8601.

tostring

Nur E-Mails zählen, die zu diesem Zeitpunkt oder davor erstellt wurden.

statusstring

Nur E-Mails zählen, die aktuell diesen Status haben: accepted, scheduled, delivered, loaded, clicked, attempted, bounced, failed, rejected, suppressed oder complained. Andere Werte werden ignoriert.

Die Filter gelten für die E-Mail-Zahlen, die Anbieter und die Zahlen des A/B-Tests, from und to außerdem für unsubscribed. Umsatz, Bestellungen und Käufer umfassen immer alle Bestellungen, die der Kampagne zugeordnet sind, und ihre Quoten beziehen sich auf alle zugestellten E-Mails der Kampagne.

Rückgabe

objectstring

Immer campaign_stats.

campaign_idstring

Die Kampagnen-ID (cmp_...).

sentinteger

Für die Kampagne erstellte E-Mails. sent_percent ist 100 oder 0, solange noch nichts gesendet wurde.

delivered, delivered_percentinteger, number

Die E-Mails mit dem Status delivered, loaded oder clicked.

opened, opened_percentinteger, number

Die E-Mails, die mindestens einmal geöffnet wurden.

clicked, clicked_percentinteger, number

Die E-Mails mit mindestens einem erfassten Klick.

click_through_percentnumber

clicked als Prozentsatz von opened.

bounced, suppressed, complained, attemptedinteger

Die E-Mails mit dem Status bounced, suppressed, complained oder attempted (wartet auf eine Wiederholung). Zu jedem gibt es auch ein Feld _percent.

not_processed, not_processed_percentinteger, number

Die E-Mails, die noch accepted oder scheduled sind.

unsubscribed, unsubscribed_percentinteger, number

Abmeldungen über die E-Mails der Kampagne.

providersobject[]

Ergebnisse pro Postfachanbieter der Empfänger, für Anbieter mit mindestens einer E-Mail. key ist gmail, outlook.com, live.com, hotmail.com, yahoo, icloud oder other, und label ist der Anzeigename des Anbieters. Jeder Eintrag hat sent, delivered, opened, clicked und bounced mit den zugehörigen Feldern _percent. sent_percent ist der Anteil des Anbieters an allen E-Mails; die übrigen Prozentwerte beziehen sich auf sent des Anbieters.

commerceobject

Nur für das Emailit-Team, solange Commerce in der Alpha ist: Andere Anfragen erhalten dieses Feld nicht, und in den variants ihrer A/B-Tests fehlen orders, revenue und revenue_per_recipient. Bestellungen, die der Kampagne zugeordnet sind. Der Umsatz ist die Bestellsumme abzüglich Rückerstattungen, und stornierte Bestellungen zählen nicht. Beträge in verschiedenen Währungen werden nicht addiert: Die Hauptwährung ist die Währung mit dem meisten Umsatz.

  • currency (string oder null): die Hauptwährung.

  • revenue (number): Umsatz in der Hauptwährung.

  • orders (integer): zugeordnete Bestellungen in allen Währungen.

  • buyers (integer): verschiedene Käufer in allen Währungen. Ein Käufer, der in zwei Währungen bezahlt hat, zählt einmal.

  • average_order_value (number): in der Hauptwährung.

  • conversion_percent (number): buyers als Prozentsatz der zugestellten E-Mails der Kampagne.

  • revenue_per_recipient (number): revenue geteilt durch die zugestellten E-Mails der Kampagne.

  • by_currency (object[]): currency, orders, revenue, buyers und average_order_value für jede Währung, die mit dem höchsten Umsatz zuerst.

ab_testobject

Nur bei Kampagnen mit einem A/B-Test.

  • winner_metric (string): opened, clicked, orders oder revenue.

  • leader_variant_id (string oder null): die Version mit der bisher besten Quote, also Öffnungen, Klicks oder Bestellungen pro gesendeter E-Mail oder Umsatz pro gesendeter E-Mail.

  • win_probability (number oder null): die Wahrscheinlichkeit in Prozent, dass die führende Version die zweitplatzierte tatsächlich schlägt.

  • significance (string): significant (90 % oder mehr, mit mindestens 50 E-Mails pro Version), promising (75 % oder mehr, gleiches Minimum), not_significant (unter 75 % bei mindestens 1.800 E-Mails pro Version) oder inconclusive. Bei revenue basiert die Wahrscheinlichkeit auf Bestellungen.

  • variants (object[]): pro Version variant_id, name, subject, is_winner, sent, delivered, opened, opened_percent, clicked, clicked_percent, orders, revenue und revenue_per_recipient. Sobald die Gewinnerversion an die übrigen Empfänger gesendet ist, enthalten die Zahlen der Gewinnerversion auch diese E-Mails.

Gibt 404 zurück, wenn keine Kampagne zu id passt, und 503, wenn der Analysespeicher nicht verfügbar ist.

GET/campaigns/{id}/stats
Terminal
curl https://api.emailit.com/v2/campaigns/cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN/stats \
  -H "Authorization: Bearer your_api_key"
JSON
{
  "object": "campaign_stats",
  "campaign_id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
  "sent": 12480,
  "sent_percent": 100,
  "delivered": 12302,
  "delivered_percent": 98.57,
  "opened": 5021,
  "opened_percent": 40.23,
  "clicked": 1187,
  "clicked_percent": 9.51,
  "click_through_percent": 23.64,
  "bounced": 98,
  "bounced_percent": 0.79,
  "suppressed": 42,
  "suppressed_percent": 0.34,
  "complained": 3,
  "complained_percent": 0.02,
  "attempted": 0,
  "attempted_percent": 0,
  "not_processed": 38,
  "not_processed_percent": 0.3,
  "unsubscribed": 27,
  "unsubscribed_percent": 0.22,
  "providers": [
    {
      "key": "gmail",
      "label": "Gmail",
      "sent": 7310,
      "sent_percent": 58.57,
      "delivered": 7236,
      "delivered_percent": 98.99,
      "opened": 3102,
      "opened_percent": 42.44,
      "clicked": 741,
      "clicked_percent": 10.14,
      "bounced": 41,
      "bounced_percent": 0.56
    },
    {
      "key": "other",
      "label": "Other",
      "sent": 5170,
      "sent_percent": 41.43,
      "delivered": 5066,
      "delivered_percent": 97.99,
      "opened": 1919,
      "opened_percent": 37.12,
      "clicked": 446,
      "clicked_percent": 8.63,
      "bounced": 57,
      "bounced_percent": 1.1
    }
  ],
  "commerce": {
    "currency": "USD",
    "revenue": 17311.9,
    "orders": 214,
    "buyers": 198,
    "average_order_value": 86.13,
    "conversion_percent": 1.61,
    "revenue_per_recipient": 1.41,
    "by_currency": [
      {
        "currency": "USD",
        "orders": 201,
        "revenue": 17311.9,
        "buyers": 186,
        "average_order_value": 86.13
      },
      {
        "currency": "EUR",
        "orders": 13,
        "revenue": 1052.4,
        "buyers": 12,
        "average_order_value": 80.95
      }
    ]
  }
}

Kampagne löschen

Löscht eine Kampagne endgültig. Erfordert einen API-Schlüssel mit dem Scope full. Löst das Event campaign.deleted aus.

Das Löschen einer Kampagne wirkt sich nicht auf E-Mails aus, die bereits gesendet oder in die Warteschlange gestellt wurden. Um eine Kampagne im laufenden Versand anzuhalten, stornieren Sie sie zuerst.

DELETE/campaigns/{id}

Pfadparameter

idstringerforderlich
Die Kampagnen-ID (cmp_…) oder der Name der Kampagne.

Rückgabe

Gibt object, id, name und deleted: true zurück. Gibt 404 zurück, wenn die Kampagne nicht existiert.

DELETE/campaigns/{id}
Terminal
curl -X DELETE https://api.emailit.com/v2/campaigns/cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
JSON
{
  "object": "campaign",
  "id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
  "name": "October newsletter",
  "deleted": true
}

War diese Seite hilfreich?

Danke für Ihr Feedback.

Danke, wir lesen jede Nachricht.