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", "confirmationEmail": { "subject": "string", "intro": "string" }, "migratedFromProductId": "string", "createdAt": "string", "updatedAt": "string" } ]}{ "error": "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.
Creates a standalone AudienceSubscription form (product-bound forms are created via the product editor).
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"}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", "confirmationEmail": { "subject": "string", "intro": "string" }, "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, "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, "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, "customDomain": "string", "termsAndPrivacyPolicyConsentRequired": true, "showTermsUrl": true, "termsUrl": "string" } }}{ "error": "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.
Response Body
application/json
application/json
curl -X PATCH "https://example.com/forms/string" \ -H "Content-Type: application/json" \ -d '{}'{ "status": "ok"}{ "error": "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"}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" } ]}{ "error": "string"}Was this article helpful?

