Signup forms
Signup forms endpoints of the Zanfia Workspace API, with schemas and code samples.
Standalone signup forms (audience-subscription) and their submissions. config is replaced whole on PATCH — send the complete object. Product-bound forms are managed through their product and refuse deletion here (409 product-bound). All routes require a Authorization: Bearer header — see Authentication.
List signup forms
/formsAuthorization
bearerAuth API key from Dashboard → Integrations → API, MCP and CLI.
In: header
Response Body
application/json
application/json
curl -X GET "https://example.com/forms"{ "forms": [ { "id": "string", "name": "string", "submitAction": "audienceSubscription", "tagIds": [ "string" ], "submissionsCount": 0, "optInMode": "double", "redirectUrl": "string", "confirmationRedirectUrl": "string", "confirmationEmail": { "subject": "string", "intro": "string" }, "confirmationEmailOverride": { "enabled": true, "subject": { "en": "string", "pl": "string" }, "headline": { "en": "string", "pl": "string" }, "layout": [ { "id": "string", "type": "text", "text": { "en": "string", "pl": "string" } } ], "body": { "en": "string", "pl": "string" }, "variants": { "property1": {}, "property2": {} }, "attachments": [ { "kind": "media", "mediaId": "string", "name": "string", "mimeType": "string", "size": 0, "storagePath": "string", "url": "string" } ] }, "signupPurpose": "newsletter", "migratedFromProductId": "string", "createdAt": "string", "updatedAt": "string" } ]}{ "error": "string", "message": "string"}Create a signup form
/formsAuthorization
bearerAuth API key from Dashboard → Integrations → API, MCP and CLI.
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
POST /forms — the dashboard's create body plus the settings the dashboard writes through a follow-up PATCH, so an API client creates a finished form in one call. config carries the phone field + SMS consent (showPhoneNumberInput, phoneNumberRequired, showSmsConsentCheckbox, smsConsentText).
Response Body
application/json
application/json
curl -X POST "https://example.com/forms" \ -H "Content-Type: application/json" \ -d '{ "name": "string" }'{ "formId": "string"}{ "error": "string", "message": "string"}Get a signup form
/forms/{formId}Authorization
bearerAuth API key from Dashboard → Integrations → API, MCP and CLI.
In: header
Path Parameters
Form id
Response Body
application/json
application/json
curl -X GET "https://example.com/forms/string"{ "id": "string", "name": "string", "submitAction": "audienceSubscription", "tagIds": [ "string" ], "submissionsCount": 0, "optInMode": "double", "redirectUrl": "string", "confirmationRedirectUrl": "string", "confirmationEmail": { "subject": "string", "intro": "string" }, "confirmationEmailOverride": { "enabled": true, "subject": { "en": "string", "pl": "string" }, "headline": { "en": "string", "pl": "string" }, "layout": [ { "id": "string", "type": "text", "text": { "en": "string", "pl": "string" } } ], "body": { "en": "string", "pl": "string" }, "variants": { "property1": {}, "property2": {} }, "attachments": [ { "kind": "media", "mediaId": "string", "name": "string", "mimeType": "string", "size": 0, "storagePath": "string", "url": "string" } ] }, "signupPurpose": "newsletter", "migratedFromProductId": "string", "createdAt": "string", "updatedAt": "string", "config": { "variant": "basic", "scheme": "auto", "buttonText": "string", "emailPlaceholder": "string", "headerText": "string", "successMessage": "string", "descriptionText": "string", "color": "string", "background": "string", "claim": "string", "privacyPolicyUrl": "string", "showClaim": true, "showHeader": true, "showDescription": true, "showPrivacyPolicyInfo": true, "showFirstNameInput": true, "firstNameRequired": true, "showPhoneNumberInput": true, "phoneNumberRequired": true, "showSmsConsentCheckbox": true, "smsConsentText": "string", "customDomain": "string", "termsAndPrivacyPolicyConsentRequired": true, "showTermsUrl": true, "termsUrl": "string" }, "localizedConfig": { "property1": { "variant": "basic", "scheme": "auto", "buttonText": "string", "emailPlaceholder": "string", "headerText": "string", "successMessage": "string", "descriptionText": "string", "color": "string", "background": "string", "claim": "string", "privacyPolicyUrl": "string", "showClaim": true, "showHeader": true, "showDescription": true, "showPrivacyPolicyInfo": true, "showFirstNameInput": true, "firstNameRequired": true, "showPhoneNumberInput": true, "phoneNumberRequired": true, "showSmsConsentCheckbox": true, "smsConsentText": "string", "customDomain": "string", "termsAndPrivacyPolicyConsentRequired": true, "showTermsUrl": true, "termsUrl": "string" }, "property2": { "variant": "basic", "scheme": "auto", "buttonText": "string", "emailPlaceholder": "string", "headerText": "string", "successMessage": "string", "descriptionText": "string", "color": "string", "background": "string", "claim": "string", "privacyPolicyUrl": "string", "showClaim": true, "showHeader": true, "showDescription": true, "showPrivacyPolicyInfo": true, "showFirstNameInput": true, "firstNameRequired": true, "showPhoneNumberInput": true, "phoneNumberRequired": true, "showSmsConsentCheckbox": true, "smsConsentText": "string", "customDomain": "string", "termsAndPrivacyPolicyConsentRequired": true, "showTermsUrl": true, "termsUrl": "string" } }}{ "error": "string", "message": "string"}Update a signup form
/forms/{formId}Authorization
bearerAuth API key from Dashboard → Integrations → API, MCP and CLI.
In: header
Path Parameters
Form id
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
PATCH /forms/:formId — the dashboard's update body minus the internal signupPurpose.
Response Body
application/json
application/json
curl -X PATCH "https://example.com/forms/string" \ -H "Content-Type: application/json" \ -d '{}'{ "status": "ok"}{ "error": "string", "message": "string"}Delete a signup form
/forms/{formId}Authorization
bearerAuth API key from Dashboard → Integrations → API, MCP and CLI.
In: header
Path Parameters
Form id
Response Body
application/json
application/json
curl -X DELETE "https://example.com/forms/string"{ "status": "ok"}{ "error": "string", "message": "string"}List form submissions
/forms/{formId}/submissionsAuthorization
bearerAuth API key from Dashboard → Integrations → API, MCP and CLI.
In: header
Path Parameters
Form id
Query Parameters
value <= 1000Response Body
application/json
application/json
curl -X GET "https://example.com/forms/string/submissions"{ "submissions": [ { "id": "string", "email": "string", "firstName": "string", "clientId": "string", "tagIds": [ "string" ], "language": "string", "createdAt": "string", "session": { "roomId": "string", "startAt": "string", "joinUrl": "string" }, "attendance": { "watchedSeconds": 0, "maxPositionSeconds": 0, "firstSeenAt": "string", "lastSeenAt": "string" } } ]}{ "error": "string", "message": "string"}Was this article helpful?

