Skip to main content
A form is an embeddable form bound to one of your verified domains. Forms are the only resource with full create/update/archive support in v1.

The form object

fields is returned on the single-form view only; list responses omit it for payload size and include submissionCount instead. domain is null for legacy unbound forms. type is standard or multi-step.

List forms

GET /v1/forms — scope read:forms. Supports page, limit, and domainId (narrow to one registered domain).

Get a form

GET /v1/forms/{id} — scope read:forms. Returns the full object including fields.

Create a form

POST /v1/forms — scope write:forms. Requires name and a non-empty fields array. domainId is optional: if your account has exactly one verified domain it’s auto-selected; with multiple domains, omitting it returns 400 domain_required with the candidate list.

Update a form

PATCH /v1/forms/{id} — scope write:forms. Only name, fields, webhookUrl, and archived are mutable. Sending userId, orgId, domainId, createdAt, or id returns 400 forbidden_field.

Archive a form

DELETE /v1/forms/{id} — scope write:forms. Soft-deletes (archives) the form; returns 204 No Content. Archived forms stop serving but their submissions are preserved.
See Submissions for reading and ingesting a form’s entries.