Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.formitto.com/llms.txt

Use this file to discover all available pages before exploring further.

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

{
  "id": 123,
  "name": "Contact form",
  "type": "standard",
  "domain": { "id": 5, "domain": "example.com" },
  "submissionCount": 42,
  "fields": [ { "id": "f1", "type": "text", "label": "Name" } ],
  "createdAt": "2026-05-01T12:00:00.000Z",
  "updatedAt": "2026-05-20T09:30:00.000Z"
}
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).
curl "https://formitto.com/v1/forms?domainId=5" \
  -H "Authorization: Bearer fmt_live_xxxxxxxx"

Get a form

GET /v1/forms/{id} — scope read:forms. Returns the full object including fields.
curl https://formitto.com/v1/forms/123 \
  -H "Authorization: Bearer fmt_live_xxxxxxxx"

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.
curl -X POST https://formitto.com/v1/forms \
  -H "Authorization: Bearer fmt_live_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Lead form",
    "fields": [{ "id": "f1", "type": "email", "label": "Email" }],
    "domainId": 5
  }'

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.
curl -X PATCH https://formitto.com/v1/forms/123 \
  -H "Authorization: Bearer fmt_live_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{ "name": "Renamed form" }'

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.
curl -X DELETE https://formitto.com/v1/forms/123 \
  -H "Authorization: Bearer fmt_live_xxxxxxxx"
See Submissions for reading and ingesting a form’s entries.