Zum Inhalt springen
Doku

Kampagnen erstellen, ihre Kontaktlisten 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 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. Unterstützt die Platzhalter {{first_name}}, {{last_name}}, {{email}}, {{unsubscribe_url}} und {{cf.<key>}} für eigene Felder. Legen Sie den Inhalt beim Erstellen der Kampagne fest.
textstring
Nur-Text-Inhalt. Unterstützt dieselben Platzhalter wie html.
preview_textstring
Vorschautext, der mit der Kampagne gespeichert wird. Emailit fügt ihn nicht in die Nachricht ein; ergänzen Sie bei Bedarf einen versteckten Preheader in html.
contentstring
Editor-Quelltext des Inhalts (zum Beispiel MJML), unverändert gespeichert. Emailit sendet html und text, nicht content.
content_typestringStandardwert: html
Format von content: html, text oder mjml. Emailit kompiliert kein MJML; senden Sie das kompilierte HTML in html.

Rückgabe

Gibt 201 Created mit dem Kampagnen-Objekt zurück. status ist draft. Die Antwort gibt html, text und content nicht zurück.

Gibt 400 zurück, wenn name fehlt, und 403, wenn der API-Schlüssel den Scope full nicht hat.

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

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, sent, canceled oder archived. queued bedeutet, dass eine geplante Kampagne ihren Sendezeitpunkt erreicht hat und auf einen Worker wartet.
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 mit der Kampagne gespeichert ist.
content_typestring
Formatbezeichnung des Editor-Quelltexts: html, text oder mjml bei Kampagnen, die per API erstellt wurden.
scheduled_atstring | null
Sendezeitpunkt einer geplanten Kampagne, in UTC.
sent_atstring | null
Beginn des Versands.
recipientsobject[]
Kontaktlisten, an die sich die Kampagne richtet. Jeder Eintrag hat audience_id (aud_…) und exclude (true für eine ausgeschlossene Kontaktliste).

Der Inhalt (html, text und content) ist nicht in der Antwort enthalten. Engagement-Statistiken finden Sie 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",
  "recipients": [
    { "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV", "exclude": false },
    { "audience_id": "aud_3hRmYTSQ4ca6y9tbPI0IQPjVTL9", "exclude": true }
  ]
}

Kampagne aktualisieren

Aktualisiert die übergebenen Felder und lässt die übrigen unverändert. Damit wählen Sie die Kontaktlisten 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 mit der Kampagne gespeichert wird.
contentstring
Editor-Quelltext des Inhalts, unverändert gespeichert.
content_typestring
Format von content: html, text oder mjml.
recipientsobject[]

Die Kontaktlisten, an die sich die Kampagne richtet. Ersetzt die aktuelle Liste. Geben Sie mindestens eine Kontaktliste mit exclude auf false an.

  • audience_id (String, erforderlich): eine Kontaktlisten-ID (aud_…) in diesem Workspace.
  • exclude (Boolean, Standardwert false): true speichert die Kontaktliste als Ausschluss. Die Weboberfläche zieht ausgeschlossene Kontaktlisten von ihrer Empfängerschätzung ab, der Versand selbst wendet Ausschlüsse derzeit aber nicht an. Entfernen Sie diese Kontakte deshalb auch aus den eingeschlossenen Kontaktlisten.

Doppelte Kontaktlisten-IDs werden ignoriert. Beim Versand sendet Emailit jedem angemeldeten Kontakt der eingeschlossenen Kontaktlisten genau eine E-Mail und überspringt abgemeldete Kontakte und gesperrte Adressen.

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 zurück.

Gibt 422 zurück, wenn recipients keine eingeschlossene Kontaktliste enthält oder auf eine Kontaktliste außerhalb des Workspaces verweist, 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" },
      { "audience_id": "aud_3hRmYTSQ4ca6y9tbPI0IQPjVTL9", "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",
  "recipients": [
    { "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV", "exclude": false },
    { "audience_id": "aud_3hRmYTSQ4ca6y9tbPI0IQPjVTL9", "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. Diese 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"
    }
  ],
  "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.

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 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.

Rückgabe

Sofort senden: Der Status wechselt zu sending und Emailit löst campaign.sending aus. Anschließend erstellt Emailit eine E-Mail pro Empfänger: für jeden angemeldeten Kontakt der eingeschlossenen Kontaktlisten, nach Adresse dedupliziert, ohne abgemeldete Kontakte und gesperrte Adressen. Sobald alle Empfänger an die Versand-Pipeline übergeben sind, wechselt der Status zu sent und Emailit löst campaign.sent aus. Verfolgen Sie die Zustellung in der Weboberfläche oder mit E-Mail-Events.

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.

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 scheduled_at lässt sich nicht parsen oder liegt nicht in der Zukunft, oder Sie haben versucht, eine Kampagne zu planen, die kein Entwurf ist.
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"
}

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.