Forms-API
Formulare erstellen, abrufen, aktualisieren, löschen, veröffentlichen und duplizieren.
Mit der Forms-API verwaltest du deine NueForm-Formulare programmatisch. Du kannst Formulare auflisten, erstellen, abrufen, aktualisieren, löschen, veröffentlichen, ihre Veröffentlichung aufheben und sie duplizieren.
Alle Request- und Antwort-Bodys verwenden Feldnamen in snake_case.
Formulare auflisten
/api/v1/formsGibt eine paginierte Liste der Formulare zurück, auf die der authentifizierte Nutzer Zugriff hat — inklusive persönlicher Formulare und Formulare aus Teams, denen der Nutzer angehört.
Query-Parameter
pageintegerSeitennummer (Standard: 1)
per_pageintegerErgebnisse pro Seite (Standard: 50)
searchstringFiltert Formulare nach Titel (Teiltreffer ohne Beachtung der Groß-/Kleinschreibung)
team_idstringGibt nur Formulare dieses Teams zurück
publishedbooleanFiltert nach Veröffentlichungsstatus (true oder false)
Antwort
{
"forms": [
{
"id": "665a1b2c3d4e5f6a7b8c9d0e",
"title": "Customer Feedback Survey",
"description": "Quarterly satisfaction survey for Q1 2026",
"slug": "a1b2c3d4e5f6",
"published": true,
"created_at": "2026-01-15T10:30:00.000Z",
"updated_at": "2026-02-20T14:22:00.000Z",
"theme_color": "#6366f1",
"background_color": "#0a0a0a",
"response_count": 142,
"team": {
"id": "665b2c3d4e5f6a7b8c9d0e1f",
"name": "Marketing"
}
}
],
"total": 24,
"page": 1,
"per_page": 50
}
Codebeispiele
curl -X GET "https://api.nueform.io/api/v1/forms?page=1&per_page=10&published=true" \
-H "Authorization: Bearer YOUR_API_KEY"
Formular erstellen
/api/v1/formsErstellt ein neues Formular. Optional kannst du ein Array von Fragen mitgeben, die zusammen mit dem Formular erstellt werden.
Request-Body
titlestringFormulartitel (darf nicht leer sein)
descriptionstringFormularbeschreibung
team_idstringWeist das Formular einem Team zu (erfordert die Berechtigung create_forms)
publishedbooleanSetze den Wert auf true, um das Formular direkt nach dem Erstellen zu veröffentlichen. Die Veröffentlichung führt dieselben Prüfungen aus wie Formular veröffentlichen. Schlägt eine Prüfung fehl, wird das Formular trotzdem als Entwurf erstellt: Die Antwort ist 201 mit published: false und einem publish_error-Objekt (reason, message, question_ids, upgrade_required). Erstelle das Formular nicht erneut – behebe das Problem und rufe dann „Formular veröffentlichen“ auf. Standard: false (Entwurf)
theme_colorstringPrimäre Theme-Farbe (Hex, Standard: #6366f1)
background_colorstringHintergrundfarbe (Hex, Standard: #0a0a0a)
text_colorstringTextfarbe der Fragen (Hex)
answer_text_colorstringTextfarbe der Antworteingaben (Hex)
placeholder_colorstringPlatzhalterfarbe der Eingabefelder (Hex)
button_colorstringHintergrundfarbe der Schaltflächen (Hex)
button_text_colorstringTextfarbe der Schaltflächen (Hex)
title_colorstringTextfarbe der Titel (Hex)
description_colorstringTextfarbe der Beschreibungen (Hex)
option_text_colorstringTextfarbe der Auswahloptionen (Hex)
indicator_bg_colorstringHintergrundfarbe des Schrittindikators (Hex)
indicator_text_colorstringTextfarbe des Schrittindikators (Hex)
font_familystringSchriftfamilie der Fragen
font_family_answerstringSchriftfamilie der Antworteingaben
font_family_buttonstringSchriftfamilie der Schaltflächen
font_family_descriptionstringSchriftfamilie der Beschreibungen
font_family_optionstringSchriftfamilie der Auswahloptionen
font_family_indicatorstringSchriftfamilie des Schrittindikators
question_font_sizestringSchriftgröße der Fragen (z. B. "24px")
custom_cssstringEigenes CSS, das in den Formular-Renderer injiziert wird
show_progress_barbooleanZeigt einen Fortschrittsbalken (Standard: true)
branding_logo_urlstringURL des Branding-Logos
branding_footer_textstringEigener Footer-Text
hide_brandingbooleanBlendet das NueForm-Branding aus (Standard: false)
auto_translatebooleanNueLingo — übersetzt das veröffentlichte Formular auf Abruf in jede unterstützte Sprache für Teilnehmer (Pro+; auf anderen Plänen als false gespeichert). Erfordert eine Standardsprache; wirksam mit dem Veröffentlichen.
top_logo_urlstringURL für ein Logo am oberen Rand des Formulars
top_logo_sizestringGröße des oberen Logos (z. B. "120px")
top_logo_alignmentstringAusrichtung des oberen Logos ("left", "center", "right")
top_logo_cssstringEigenes CSS für das obere Logo
watermark_cssstringEigenes CSS für das Wasserzeichen
welcome_titlestringTitel des Willkommensbildschirms
welcome_descriptionstringBeschreibung des Willkommensbildschirms
welcome_button_textstringSchaltflächentext des Willkommensbildschirms (Standard: "Start")
thank_you_titlestringTitel des Dankesbildschirms (Standard: "Thank you!")
thank_you_descriptionstringBeschreibung des Dankesbildschirms
modestringFormularmodus: "standard", "knowledge_quiz", "lead_qualification", "match_quiz" (Standard: "standard")
quiz_settingsobjectQuiz-Konfiguration (für Quiz-Modi)
variablesobjectVariablen auf Formularebene für die Logik
start_logic_jumpsarrayLogiksprung-Regeln, die beim Formularstart angewendet werden
webhook_urlstringURL, die bei Übermittlung einen POST erhält (Pro-Plan erforderlich)
limit_one_responsebooleanBegrenzt auf eine Antwort pro Besucher (Standard: false)
incremental_submissionbooleanSpeichert Antworten inkrementell, während der Teilnehmer voranschreitet (Standard: false)
questionsarrayArray der zu erstellenden Frageobjekte (siehe unten)
Request-Beispiel
{
"title": "Customer Feedback Survey",
"description": "Help us improve our product",
"theme_color": "#2563eb",
"background_color": "#ffffff",
"show_progress_bar": true,
"welcome_title": "We value your feedback",
"welcome_description": "This survey takes about 3 minutes.",
"welcome_button_text": "Let's go",
"thank_you_title": "Thank you!",
"thank_you_description": "Your feedback helps us build a better product.",
"questions": [
{
"type": "short_text",
"title": "What is your name?",
"required": true
},
{
"type": "multiple_choice",
"title": "How did you hear about us?",
"required": true,
"properties": {
"choices": [
{ "label": "Search engine" },
{ "label": "Social media" },
{ "label": "Friend or colleague" },
{ "label": "Other" }
],
"allow_multiple": false
}
},
{
"type": "rating",
"title": "How would you rate your overall experience?",
"required": true,
"properties": {
"steps": 5,
"shape": "star"
}
}
]
}
Antwort
Gibt das erstellte Formularobjekt mit allen Fragen zurück:
{
"id": "665a1b2c3d4e5f6a7b8c9d0e",
"title": "Customer Feedback Survey",
"description": "Help us improve our product",
"slug": "a1b2c3d4e5f6",
"published": false,
"created_at": "2026-02-28T12:00:00.000Z",
"updated_at": "2026-02-28T12:00:00.000Z",
"theme_color": "#2563eb",
"background_color": "#ffffff",
"show_progress_bar": true,
"welcome_title": "We value your feedback",
"welcome_description": "This survey takes about 3 minutes.",
"welcome_button_text": "Let's go",
"thank_you_title": "Thank you!",
"thank_you_description": "Your feedback helps us build a better product.",
"questions": [
{
"id": "66a1b2c3d4e5f6a7b8c9d001",
"type": "short_text",
"title": "What is your name?",
"description": null,
"required": true,
"order": 0,
"properties": {},
"logic_jumps": [],
"validations": {}
},
{
"id": "66a1b2c3d4e5f6a7b8c9d002",
"type": "multiple_choice",
"title": "How did you hear about us?",
"description": null,
"required": true,
"order": 1,
"properties": {
"choices": [
{ "label": "Search engine" },
{ "label": "Social media" },
{ "label": "Friend or colleague" },
{ "label": "Other" }
],
"allow_multiple": false
},
"logic_jumps": [],
"validations": {}
},
{
"id": "66a1b2c3d4e5f6a7b8c9d003",
"type": "rating",
"title": "How would you rate your overall experience?",
"description": null,
"required": true,
"order": 2,
"properties": {
"steps": 5,
"shape": "star"
},
"logic_jumps": [],
"validations": {}
}
]
}
Codebeispiele
curl -X POST "https://api.nueform.io/api/v1/forms" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Customer Feedback Survey",
"description": "Help us improve our product",
"questions": [
{
"type": "short_text",
"title": "What is your name?",
"required": true
}
]
}'
Formular abrufen
/api/v1/forms/:idRuft ein einzelnes Formular per ID ab, inklusive aller Fragen in ihrer Positionsreihenfolge.
Pfad-Parameter
idstringDie Formular-ID
Antwort
{
"id": "665a1b2c3d4e5f6a7b8c9d0e",
"title": "Customer Feedback Survey",
"description": "Help us improve our product",
"slug": "a1b2c3d4e5f6",
"published": true,
"created_at": "2026-01-15T10:30:00.000Z",
"updated_at": "2026-02-20T14:22:00.000Z",
"theme_color": "#2563eb",
"background_color": "#ffffff",
"text_color": null,
"answer_text_color": null,
"placeholder_color": null,
"button_color": null,
"button_text_color": null,
"font_family": null,
"question_font_size": null,
"custom_css": null,
"show_progress_bar": true,
"incremental_submission": false,
"limit_one_response": false,
"welcome_title": "We value your feedback",
"welcome_description": "This survey takes about 3 minutes.",
"welcome_button_text": "Let's go",
"thank_you_title": "Thank you!",
"thank_you_description": "Your feedback helps us build a better product.",
"branding_logo_url": null,
"branding_footer_text": null,
"hide_branding": false,
"auto_translate": false,
"mode": "standard",
"webhook_url": null,
"has_unpublished_changes": false,
"published_version_id": "66c3d4e5f6a7b8c9d0e1f2a3",
"response_count": 142,
"questions": [
{
"id": "66a1b2c3d4e5f6a7b8c9d001",
"type": "short_text",
"title": "What is your name?",
"description": null,
"required": true,
"order": 0,
"properties": {},
"logic_jumps": [],
"validations": {}
}
]
}
Codebeispiele
curl -X GET "https://api.nueform.io/api/v1/forms/665a1b2c3d4e5f6a7b8c9d0e" \
-H "Authorization: Bearer YOUR_API_KEY"
Formular aktualisieren
/api/v1/forms/:idAktualisiert die Felder eines Formulars und synchronisiert seine Fragen. Wenn du ein questions-Array mitschickst, wird NueForm:
- Bestehende Fragen aktualisieren (Zuordnung per
id) - Neue Fragen erstellen (keine
idoder unbekannteid) - Fragen löschen, die am Formular existieren, aber nicht im Array enthalten sind
Ist das Formular aktuell veröffentlicht, wird das Flag has_unpublished_changes automatisch auf true gesetzt: Deine Änderungen werden als Entwurf gespeichert, und Teilnehmer sehen weiterhin die veröffentlichte Version, bis du erneut veröffentlichst.
published ändert den Zustand des Formulars, statt als Feld gespeichert zu werden:
- Bei einem Entwurf veröffentlicht
published: truedas Formular, nachdem deine Änderungen gespeichert wurden – mit denselben Prüfungen wie Formular veröffentlichen. Schlägt eine Prüfung fehl, werden deine Änderungen trotzdem gespeichert, und die API gibt409 Conflictmitform_idundsaved_as_draft: truezurück. - Bei einem Formular, das bereits live ist, ändert
published: truenichts – rufe Formular veröffentlichen auf, um deine Änderungen live zu schalten. published: falsenimmt ein live geschaltetes Formular offline, genau wie Veröffentlichung aufheben.
Bei Team-Formularen können nur Team-Admins und -Owner published ändern.
Pfad-Parameter
idstringDie Formular-ID
Request-Body
Akzeptiert alle Felder aus Formular erstellen außer team_id. Gib nur die Felder an, die du ändern möchtest.
Request-Beispiel
{
"title": "Updated Survey Title",
"description": "Revised description for Q2",
"theme_color": "#10b981",
"questions": [
{
"id": "66a1b2c3d4e5f6a7b8c9d001",
"type": "short_text",
"title": "What is your full name?",
"required": true
},
{
"type": "long_text",
"title": "Any additional comments?",
"required": false
}
]
}
Antwort
Gibt das aktualisierte Formularobjekt mit allen Fragen zurück (gleiches Schema wie Formular abrufen).
Codebeispiele
curl -X PUT "https://api.nueform.io/api/v1/forms/665a1b2c3d4e5f6a7b8c9d0e" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Updated Survey Title",
"theme_color": "#10b981"
}'
Formular löschen
/api/v1/forms/:idLöscht ein Formular dauerhaft samt allen zugehörigen Daten, einschließlich Fragen, Antworten, Versionen und Changelog-Einträgen. Zugehörige Datei-Uploads werden asynchron bereinigt.
Diese Aktion ist unumkehrbar. Alle für dieses Formular erfassten Antworten werden dauerhaft gelöscht.
Pfad-Parameter
idstringDie Formular-ID
Query-Parameter
delete_signed_contractsbooleanMuss true sein, um ein Formular mit abgeschlossenen unterschriebenen Verträgen zu löschen. Diese werden mit dem Formular dauerhaft gelöscht, samt den unterschriebenen PDFs und Audit-Trails. Ohne den Parameter wird ein solches Formular nicht gelöscht: Die API antwortet mit 409, reason: form_has_signed_contracts und signed_contracts (Anzahl).
Antwort
{
"success": true
}
Codebeispiele
curl -X DELETE "https://api.nueform.io/api/v1/forms/665a1b2c3d4e5f6a7b8c9d0e" \
-H "Authorization: Bearer YOUR_API_KEY"
Formular veröffentlichen
/api/v1/forms/:id/publishVeröffentlicht ein Formular, indem ein versionierter Snapshot des aktuellen Formulars und seiner Fragen erstellt wird – derselbe Ablauf wie beim Veröffentlichen-Button im Builder. Jede Veröffentlichung erhöht die Versionsnummer, und das Formular wird unter seiner teilbaren URL öffentlich zugänglich.
Bevor etwas veröffentlicht wird, prüft NueForm, dass:
- Team-Formulare nur von Team-Admins und -Ownern veröffentlicht werden und persönliche Formulare nur von ihrem Owner (alle anderen erhalten
403 Forbidden– oder404 Not Found, wenn sie nicht Mitglied im Team des Formulars sind); - Pro-Funktionen (Buchungsfragen, E-Signatur-Verträge, Datenknoten, Formular-Webhooks und Zahlungen auf dein eigenes Stripe-Konto) im Plan des Formularinhabers enthalten sind (bei Team-Formularen im Plan des Team-Owners);
- Buchungs-, E-Mail-Schritt-, Fuse- und Composite-Fragen vollständig eingerichtet sind.
Schlägt eine Prüfung fehl, wird das Formular nicht veröffentlicht, und die API gibt 409 Conflict mit einem reason-Code und den zu korrigierenden question_ids zurück (siehe Fehlerbehandlung). Erfolgreiche Antworten enthalten published_version und ein warnings-Array mit nicht blockierenden Hinweisen.
Pfad-Parameter
idstringDie Formular-ID
Antwort
Gibt das veröffentlichte Formular mit published_version (der neuen Versionsnummer) und warnings (nicht blockierende Hinweise, oft leer) zurück:
{
"data": {
"id": "665a1b2c3d4e5f6a7b8c9d0e",
"title": "Customer Feedback Survey",
"slug": "a1b2c3d4e5f6",
"published": true,
"has_unpublished_changes": false,
"published_version_id": "66c3d4e5f6a7b8c9d0e1f2a3",
"published_version": 3,
"warnings": [
{
"code": "booking_attendee_ask",
"question_id": "66a1b2c3d4e5f6a7b8c9d004",
"question_title": "Book a demo",
"message": "Booking question \"Book a demo\" has no attendee email mapping, so respondents will be asked for their email when they book."
}
],
"questions": [ ... ]
}
}
Veröffentlichung blockiert (409)
Es wird nichts veröffentlicht. reason nennt die fehlgeschlagene Prüfung, question_ids listet die zu korrigierenden Fragen auf; upgrade_required ist true, wenn der Plan des Formularinhabers ein Upgrade braucht:
{
"error": {
"code": "CONFLICT",
"message": "E-signature contracts need a Pro plan to go live. Upgrade to publish this form, or remove the contract question.",
"status": 409,
"reason": "contract_requires_pro",
"question_ids": ["66a1b2c3d4e5f6a7b8c9d001"],
"upgrade_required": true
}
}
Codebeispiele
curl -X POST "https://api.nueform.io/api/v1/forms/665a1b2c3d4e5f6a7b8c9d0e/publish" \
-H "Authorization: Bearer YOUR_API_KEY"
Veröffentlichung aufheben
/api/v1/forms/:id/publishHebt die Veröffentlichung eines Formulars auf, sodass es unter seiner öffentlichen URL nicht mehr erreichbar ist. Der veröffentlichte Versions-Snapshot bleibt erhalten, damit du später erneut veröffentlichen kannst. Die Veröffentlichung von Team-Formularen können nur Team-Admins und -Owner aufheben, die von persönlichen Formularen nur ihr Owner; alle anderen erhalten 403 Forbidden – oder 404 Not Found, wenn sie nicht Mitglied im Team des Formulars sind.
Pfad-Parameter
idstringDie Formular-ID
Antwort
Gibt das aktualisierte Formularobjekt mit published auf false zurück.
{
"id": "665a1b2c3d4e5f6a7b8c9d0e",
"title": "Customer Feedback Survey",
"published": false,
"questions": [ ... ]
}
Codebeispiele
curl -X DELETE "https://api.nueform.io/api/v1/forms/665a1b2c3d4e5f6a7b8c9d0e/publish" \
-H "Authorization: Bearer YOUR_API_KEY"
Formular duplizieren
/api/v1/forms/:id/duplicateErstellt eine Kopie eines bestehenden Formulars, inklusive aller Fragen. Logiksprung-Referenzen werden automatisch auf die neuen Frage-IDs umgemappt. Das duplizierte Formular wird immer im unveröffentlichten Zustand erstellt.
Pfad-Parameter
idstringDie ID des zu duplizierenden Formulars
Request-Body
titlestringTitel für das neue Formular (Standard: "Original Title (Copy)")
team_idstringWeist das Duplikat einem anderen Team zu
Request-Beispiel
{
"title": "Customer Feedback Survey v2",
"team_id": "665b2c3d4e5f6a7b8c9d0e1f"
}
Antwort
Gibt das neu erstellte Formularobjekt zurück (gleiches Schema wie Formular abrufen) mit published auf false.
Codebeispiele
curl -X POST "https://api.nueform.io/api/v1/forms/665a1b2c3d4e5f6a7b8c9d0e/duplicate" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "title": "Customer Feedback Survey v2" }'
Fehlerantworten
Alle Endpunkte geben Standard-Fehlerantworten zurück.
Fehlercodes
400Bad RequestValidierungsfehler oder fehlendes Pflichtfeld
401UnauthorizedFehlender oder ungültiger API-Schlüssel
403ForbiddenUnzureichende Berechtigungen bei Team-Formularen
404Not FoundFormular nicht gefunden
409ConflictVeröffentlichung blockiert: Eine Veröffentlichungsprüfung ist fehlgeschlagen (siehe Formular veröffentlichen)
500Server ErrorInterner Serverfehler
Fehlerbeispiel
{
"error": "Title is required"
}