Create a form per client, keep its questions in version control, read submissions back, and get a webhook the moment someone submits.
curl -X POST https://automette.com/api/v1/forms \
-H "Authorization: Bearer dg_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"title": "Book a free class",
"fields": [
{ "key": "parent_name", "type": "text", "label": "Your name" },
{ "key": "parent_email", "type": "email", "label": "Email" },
{ "key": "message", "type": "textarea", "label": "Anything else?" }
]
}'Code and the dashboard work on the same form without treading on each other. Same Bearer key as the rest of the API, scoped to the key's team.
A field's key is the contract. It arrives unchanged in the form.submitted webhook and the submissions endpoint, so your integration decides it rather than discovering a generated one.
Restyling a form in the builder never disturbs the fields your code provisioned. Updating fields from code never flattens the layout someone designed.
Attach a document or image template to the form and every submission renders one, delivered to the respondent and to you.
Stand a form up and publish it without anyone opening a dashboard. One form per client, from a loop.
List responses with a since / until window, keyed by the field keys you chose.
POST answers to a form from a front-end you host. Webhooks, emails, and document generation all still fire.
A form.submitted event per response, with the answers in the payload.
Connect a template and map fields. Read the document's status and URL back on the submission.
GET the form, change one label, PATCH the fields back. Anything built in the builder is kept, and anything the update did beyond your ask comes back in warnings.