Formulare
Anmeldeformulare erstellen, veröffentlichen und ihr öffentliches Token rotieren.
Formular erstellen
Erstellt ein Anmeldeformular mit dem Status draft und einem öffentlichen token. Erfordert einen API-Schlüssel mit dem Scope full. Formulare sind im Early Access.
Wenn Sie definition weglassen, generiert Emailit ein Startformular: einen Schritt mit einer Überschrift, einem Pflichtfeld für die E-Mail-Adresse und der Schaltfläche Subscribe sowie einen Erfolgsschritt. Erstellen und gestalten Sie Formulare in der Weboberfläche unter Email MarketingForms und veröffentlichen Sie sie anschließend.
/formsBody-Parameter
namestringerforderlichtypestringStandardwert: popuppopup, full_page, flyout, embed oder banner.definitionobjectDer Inhalt des Formulars, unverändert gespeichert. Emailit prüft ihn erst beim Veröffentlichen. Felder der obersten Ebene:
version(Integer):1.type(String): der Formulartyp.steps(Array): Jeder Schritt hatid,name,kind(formodersuccess) undblocks. Blöcke haben eineidund einentype:text,button(action:submit,next,closeodergo_to_url),imageoder ein Eingabefeld (email,text_input,phone,date,radio,checkbox,dropdown) mit Feldname (name),labelundrequired.styles,targeting,experiments(Objekte): Darstellungs- und Anzeigeregeln, die der Formular-Editor festlegt.
settingsobject{}.Rückgabe
Gibt 201 Created mit dem Formular-Objekt einschließlich definition und settings zurück.
tokenstringstatusstringdraft, bis Sie das Formular veröffentlichen, danach live.published_atstring | nullGibt 400 zurück, wenn name fehlt oder leer ist oder type keiner der erlaubten Werte ist.
{
"object": "form",
"id": "frm_3Bzpif9xswMlVbFvGZSPNixm5j5",
"name": "Newsletter popup",
"type": "popup",
"status": "draft",
"token": "9636697db6c8f136d6742cee9c86eb3ed53b89f0a44e3ce6",
"created_at": "2026-10-01T11:20:31.000000+00:00",
"updated_at": "2026-10-01T11:20:31.000000+00:00",
"published_at": null,
"definition": {
"version": 1,
"type": "popup",
"steps": [
{
"id": "3Rb7Lq2NcX9vZt4Wm8Kd1Hs6PyE",
"name": "Step 1",
"kind": "form",
"blocks": [
{ "id": "3Rb7Lq5TgB2kVw7Nn1Ps4Fd9QzA", "type": "text", "content": "<p>Join our list</p>" },
{
"id": "3Rb7Lq3JfM6xYc0Rr5Hh8Gk2SeU",
"type": "email",
"label": "<p>Email</p>",
"placeholder": "you@example.com",
"required": true,
"name": "email"
},
{ "id": "3Rb7Lq4WdP1zQa6Ee9Jj3Lm7TfV", "type": "button", "label": "<p>Subscribe</p>", "action": "submit" }
]
},
{
"id": "3Rb7Lq2XkS8wUe3Tt6Mn0Bv5RgC",
"name": "Success",
"kind": "success",
"blocks": [
{ "id": "3Rb7Lq6YhD4cFi9Uu2Oo7Cx1WhB", "type": "text", "content": "<p>Thanks for subscribing!</p>" }
]
}
],
"styles": {
"backgroundColor": "#ffffff",
"textColor": "#0f172a",
"primaryColor": "#03a071",
"borderRadius": 12,
"fontFamily": "Inter, system-ui, sans-serif",
"buttonStyle": "solid"
},
"targeting": {},
"experiments": {}
},
"settings": {}
}{
"statusCode": 400,
"error": "Bad Request",
"message": "Validation error",
"details": [
{
"instancePath": "",
"schemaPath": "#/required",
"keyword": "required",
"params": { "missingProperty": "name" },
"message": "must have required property 'name'"
}
]
}Formular abrufen
Ruft ein Formular mit seiner vollständigen Definition ab. Erfordert einen API-Schlüssel mit dem Scope full.
/forms/{id}Pfadparameter
idstringerforderlichfrm_…).Rückgabe
Gibt das Formular-Objekt zurück.
objectstringform.idstringfrm_.namestringtypestringpopup, full_page, flyout, embed oder banner.statusstringdraft oder live. Nur Formulare mit dem Status live werden auf Ihrer Website geladen.tokenstringdefinitionobjectsettingsobjectcreated_at, updated_at, published_atstring | nullpublished_at ist bis zur ersten Veröffentlichung null.Gibt 404 zurück, wenn das Formular nicht existiert.
{
"object": "form",
"id": "frm_3Bzpif9xswMlVbFvGZSPNixm5j5",
"name": "Newsletter popup",
"type": "popup",
"status": "live",
"token": "9636697db6c8f136d6742cee9c86eb3ed53b89f0a44e3ce6",
"created_at": "2026-10-01T11:20:31.000000+00:00",
"updated_at": "2026-10-01T11:48:02.000000+00:00",
"published_at": "2026-10-01T11:48:02.000000+00:00",
"definition": {
"version": 1,
"type": "popup",
"steps": [
{
"id": "3Rb7Lq2NcX9vZt4Wm8Kd1Hs6PyE",
"name": "Step 1",
"kind": "form",
"blocks": [
{ "id": "3Rb7Lq5TgB2kVw7Nn1Ps4Fd9QzA", "type": "text", "content": "<p>Get our monthly product notes</p>" },
{
"id": "3Rb7Lq3JfM6xYc0Rr5Hh8Gk2SeU",
"type": "email",
"label": "<p>Email</p>",
"placeholder": "you@example.com",
"required": true,
"name": "email"
},
{ "id": "3Rb7Lq4WdP1zQa6Ee9Jj3Lm7TfV", "type": "button", "label": "<p>Subscribe</p>", "action": "submit" }
]
},
{
"id": "3Rb7Lq2XkS8wUe3Tt6Mn0Bv5RgC",
"name": "Success",
"kind": "success",
"blocks": [
{ "id": "3Rb7Lq6YhD4cFi9Uu2Oo7Cx1WhB", "type": "text", "content": "<p>Thanks for subscribing!</p>" }
]
}
],
"styles": {
"backgroundColor": "#ffffff",
"textColor": "#0f172a",
"primaryColor": "#03a071",
"borderRadius": 12,
"fontFamily": "Inter, system-ui, sans-serif",
"buttonStyle": "solid"
},
"targeting": {},
"experiments": {}
},
"settings": {}
}{
"error": "Form not found"
}Formular aktualisieren
Aktualisiert die übergebenen Felder und lässt die übrigen unverändert. Erfordert einen API-Schlüssel mit dem Scope full.
Änderungen an einem Formular mit dem Status live sind für Besucher sofort sichtbar; Sie müssen es nicht erneut veröffentlichen. Um es zu bearbeiten, ohne dass Besucher davon betroffen sind, ziehen Sie zuerst die Veröffentlichung zurück.
/forms/{id}Pfadparameter
idstringerforderlichfrm_…).Body-Parameter
namestringtypestringpopup, full_page, flyout, embed oder banner. Passen Sie definition.type entsprechend an.definitionobjectsettingsobjectRückgabe
Gibt das aktualisierte Formular-Objekt zurück. Gibt 400 zurück, wenn ein Feld den falschen Typ hat oder name leer ist, und 404, wenn das Formular nicht existiert.
{
"object": "form",
"id": "frm_3Bzpif9xswMlVbFvGZSPNixm5j5",
"name": "Newsletter popup (October)",
"type": "popup",
"status": "live",
"token": "9636697db6c8f136d6742cee9c86eb3ed53b89f0a44e3ce6",
"created_at": "2026-10-01T11:20:31.000000+00:00",
"updated_at": "2026-10-02T08:05:14.000000+00:00",
"published_at": "2026-10-01T11:48:02.000000+00:00",
"definition": {
"version": 1,
"type": "popup",
"steps": [
{
"id": "3Rb7Lq2NcX9vZt4Wm8Kd1Hs6PyE",
"name": "Step 1",
"kind": "form",
"blocks": [
{ "id": "3Rb7Lq3JfM6xYc0Rr5Hh8Gk2SeU", "type": "email", "label": "<p>Email</p>", "required": true, "name": "email" },
{ "id": "3Rb7Lq4WdP1zQa6Ee9Jj3Lm7TfV", "type": "button", "label": "<p>Subscribe</p>", "action": "submit" }
]
},
{
"id": "3Rb7Lq2XkS8wUe3Tt6Mn0Bv5RgC",
"name": "Success",
"kind": "success",
"blocks": [{ "id": "3Rb7Lq6YhD4cFi9Uu2Oo7Cx1WhB", "type": "text", "content": "<p>Thanks for subscribing!</p>" }]
}
],
"styles": { "primaryColor": "#03a071", "borderRadius": 12, "buttonStyle": "solid" },
"targeting": {},
"experiments": {}
},
"settings": {}
}{
"error": "Invalid name"
}{
"error": "Form not found"
}Formulare auflisten
Gibt die Formulare des Workspaces zurück, neueste zuerst, ohne definition und settings. Erfordert einen API-Schlüssel mit dem Scope full.
/formsQuery-Parameter
pageintegerStandardwert: 1limitintegerStandardwert: 10searchstringmatchstringall (Standardwert) verlangt, dass alle Filter zutreffen. or trifft zu, wenn ein beliebiger Filter passt. Siehe Filtern und Sortieren.
orderstringSortierschlüssel für diese Liste. Siehe die Sortierschlüssel unten.
directionstringasc oder desc.
Filterschlüssel
Filter verwenden Query-Parameter der Form key.condition=value, zum Beispiel status.exact=live. Siehe Filtern.
| Schlüssel | Typ | Hinweise |
|---|---|---|
name |
string | |
type |
enum | popup, full_page, flyout, embed, banner |
status |
enum | draft, live |
created_at |
date |
Sortierschlüssel für order: name, type, status, created_at.
Rückgabe
dataobject[]object, id, name, type, status, token, created_at, updated_at, published_at.total_recordsintegernext_page_urlstring | nullnull auf der letzten Seite. Er enthält nur page und limit; fügen Sie Ihre Suche und Filter erneut hinzu, wenn Sie ihm folgen.previous_page_urlstring | nullnull auf der ersten Seite.{
"data": [
{
"object": "form",
"id": "frm_3Bzpif9xswMlVbFvGZSPNixm5j5",
"name": "Newsletter popup",
"type": "popup",
"status": "live",
"token": "9636697db6c8f136d6742cee9c86eb3ed53b89f0a44e3ce6",
"created_at": "2026-10-01T11:20:31.000000+00:00",
"updated_at": "2026-10-01T11:48:02.000000+00:00",
"published_at": "2026-10-01T11:48:02.000000+00:00"
}
],
"total_records": 1,
"next_page_url": null,
"previous_page_url": null
}Formular veröffentlichen
Setzt den Status des Formulars auf live und aktualisiert published_at. Formulare mit dem Status live werden auf jeder Website geladen, auf der das Emailit-Skript eingebunden ist, und können Einsendungen empfangen. Erfordert einen API-Schlüssel mit dem Scope full.
Die Definition braucht mindestens einen Schritt mit kind: "form" und einen mit kind: "success", sonst gibt die Anfrage 422 zurück. Einsendungen werden mit dem Formular gespeichert und erzeugen noch keine Kontakte.
/forms/{id}/publishPfadparameter
idstringerforderlichfrm_…).Rückgabe
Gibt das Formular-Objekt mit status auf live zurück. Gibt 422 zurück, wenn die Definition unvollständig ist, und 404, wenn das Formular nicht existiert.
{
"object": "form",
"id": "frm_3Bzpif9xswMlVbFvGZSPNixm5j5",
"name": "Newsletter popup",
"type": "popup",
"status": "live",
"token": "9636697db6c8f136d6742cee9c86eb3ed53b89f0a44e3ce6",
"created_at": "2026-10-01T11:20:31.000000+00:00",
"updated_at": "2026-10-01T11:48:02.000000+00:00",
"published_at": "2026-10-01T11:48:02.000000+00:00",
"definition": {
"version": 1,
"type": "popup",
"steps": [
{
"id": "3Rb7Lq2NcX9vZt4Wm8Kd1Hs6PyE",
"name": "Step 1",
"kind": "form",
"blocks": [
{ "id": "3Rb7Lq3JfM6xYc0Rr5Hh8Gk2SeU", "type": "email", "label": "<p>Email</p>", "required": true, "name": "email" },
{ "id": "3Rb7Lq4WdP1zQa6Ee9Jj3Lm7TfV", "type": "button", "label": "<p>Subscribe</p>", "action": "submit" }
]
},
{
"id": "3Rb7Lq2XkS8wUe3Tt6Mn0Bv5RgC",
"name": "Success",
"kind": "success",
"blocks": [{ "id": "3Rb7Lq6YhD4cFi9Uu2Oo7Cx1WhB", "type": "text", "content": "<p>Thanks for subscribing!</p>" }]
}
],
"styles": { "primaryColor": "#03a071", "borderRadius": 12, "buttonStyle": "solid" },
"targeting": {},
"experiments": {}
},
"settings": {}
}{
"error": "Form must have a success step"
}{
"error": "Form not found"
}Veröffentlichung eines Formulars zurückziehen
Setzt den Status des Formulars auf draft zurück. Das Einbettungsskript lädt es nicht mehr und neue Einsendungen werden abgelehnt. Token, Definition und published_at bleiben unverändert, sodass Sie das Formular später erneut veröffentlichen können. Erfordert einen API-Schlüssel mit dem Scope full.
/forms/{id}/unpublishPfadparameter
idstringerforderlichfrm_…).Rückgabe
Gibt das Formular-Objekt mit status auf draft zurück. Gibt 404 zurück, wenn das Formular nicht existiert.
{
"object": "form",
"id": "frm_3Bzpif9xswMlVbFvGZSPNixm5j5",
"name": "Newsletter popup",
"type": "popup",
"status": "draft",
"token": "9636697db6c8f136d6742cee9c86eb3ed53b89f0a44e3ce6",
"created_at": "2026-10-01T11:20:31.000000+00:00",
"updated_at": "2026-10-06T07:30:00.000000+00:00",
"published_at": "2026-10-01T11:48:02.000000+00:00",
"definition": {
"version": 1,
"type": "popup",
"steps": [
{
"id": "3Rb7Lq2NcX9vZt4Wm8Kd1Hs6PyE",
"name": "Step 1",
"kind": "form",
"blocks": [
{ "id": "3Rb7Lq3JfM6xYc0Rr5Hh8Gk2SeU", "type": "email", "label": "<p>Email</p>", "required": true, "name": "email" },
{ "id": "3Rb7Lq4WdP1zQa6Ee9Jj3Lm7TfV", "type": "button", "label": "<p>Subscribe</p>", "action": "submit" }
]
},
{
"id": "3Rb7Lq2XkS8wUe3Tt6Mn0Bv5RgC",
"name": "Success",
"kind": "success",
"blocks": [{ "id": "3Rb7Lq6YhD4cFi9Uu2Oo7Cx1WhB", "type": "text", "content": "<p>Thanks for subscribing!</p>" }]
}
],
"styles": { "primaryColor": "#03a071", "borderRadius": 12, "buttonStyle": "solid" },
"targeting": {},
"experiments": {}
},
"settings": {}
}{
"error": "Form not found"
}Öffentliches Token zurücksetzen
Generiert ein neues öffentliches token für das Formular. Das alte Token funktioniert ab sofort nicht mehr: Websites, die das Formular damit laden, zeigen es nicht mehr an und können keine Einsendungen mehr übermitteln. Aktualisieren Sie Ihren Einbettungscode mit dem neuen Token. Erfordert einen API-Schlüssel mit dem Scope full.
/forms/{id}/reset-tokenPfadparameter
idstringerforderlichfrm_…).Rückgabe
Gibt das Formular-Objekt mit dem neuen token zurück. Der Status ändert sich nicht. Gibt 404 zurück, wenn das Formular nicht existiert.
{
"object": "form",
"id": "frm_3Bzpif9xswMlVbFvGZSPNixm5j5",
"name": "Newsletter popup",
"type": "popup",
"status": "live",
"token": "e5ed3f9ec299ae1c5dc043c45f2a616c352e47a13b6b763b",
"created_at": "2026-10-01T11:20:31.000000+00:00",
"updated_at": "2026-10-06T09:12:44.000000+00:00",
"published_at": "2026-10-01T11:48:02.000000+00:00",
"definition": {
"version": 1,
"type": "popup",
"steps": [
{
"id": "3Rb7Lq2NcX9vZt4Wm8Kd1Hs6PyE",
"name": "Step 1",
"kind": "form",
"blocks": [
{ "id": "3Rb7Lq3JfM6xYc0Rr5Hh8Gk2SeU", "type": "email", "label": "<p>Email</p>", "required": true, "name": "email" },
{ "id": "3Rb7Lq4WdP1zQa6Ee9Jj3Lm7TfV", "type": "button", "label": "<p>Subscribe</p>", "action": "submit" }
]
},
{
"id": "3Rb7Lq2XkS8wUe3Tt6Mn0Bv5RgC",
"name": "Success",
"kind": "success",
"blocks": [{ "id": "3Rb7Lq6YhD4cFi9Uu2Oo7Cx1WhB", "type": "text", "content": "<p>Thanks for subscribing!</p>" }]
}
],
"styles": { "primaryColor": "#03a071", "borderRadius": 12, "buttonStyle": "solid" },
"targeting": {},
"experiments": {}
},
"settings": {}
}{
"error": "Form not found"
}Formular löschen
Löscht ein Formular und alle gespeicherten Einsendungen endgültig. Websites, die es einbetten, zeigen es nicht mehr an. Erfordert einen API-Schlüssel mit dem Scope full.
/forms/{id}Pfadparameter
idstringerforderlichfrm_…).Rückgabe
Gibt 204 No Content mit leerem Body zurück. Gibt 404 zurück, wenn das Formular nicht existiert.
(empty body){
"error": "Form not found"
}