Get a form
Authorization
ApiKeyAuth API key from Settings → API Keys.
In: header
Path Parameters
Response Body
application/json
application/json
application/json
curl -X GET "https://example.com/api/v1/forms/string"{ "id": "string", "self": "http://example.com", "title": "string", "status": "draft", "version": 0, "public_url": "http://example.com", "embed_url": "http://example.com", "accepting_submissions": true, "closed": true, "closed_reason": "manual", "closed_message": "string", "archived": true, "captcha": true, "submission_count": 0, "fields": [ { "key": "string", "type": "string", "label": "string", "required": true, "description": "string", "placeholder": "string", "options": [ { "value": "string", "label": "string" } ], "editable": true } ], "heading": "string", "description": "string", "appearance": { "background": "string", "surface": "string", "card": "card" }, "submit_label": "string", "sender_name": "string", "notifications": { "emails": [ "user@example.com" ], "reply_to_field": "string", "include_document_link": true }, "respondent_confirmation": { "email_field": "string", "subject": "string", "message": "string", "include_document": true, "include_answers": true, "reply_to": "user@example.com" }, "limits": { "close_at": "2019-08-24T14:15:22Z", "max_submissions": 1, "one_submission_per_device": true }, "after_submit": { "action": "show_page", "redirect_url": "http://example.com" }, "created_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z"}Create a form POST
Creates a form as a **draft**. Nothing is reachable by respondents until you call publish. You choose each field's `key`, and that key is what you will receive back in webhooks and in the submissions endpoint. Keys must match `[a-z][a-z0-9_]*` and be unique within the form. Design — theme, layout, logic, multi-page flow — belongs in the dashboard builder. This endpoint provisions the questions; editing the look of a form afterwards never disturbs them.
Update a form PATCH
Content keys (`title`, `description`, `submit_label`, `captcha`, `fields`) edit the **draft** — respondents keep seeing the published version until you publish again, the same rule the builder follows. Operational keys (`closed`, `closed_message`, `archived`) take effect immediately, because closing a form is not a new version of it. Send only the keys you are changing. `fields`, when sent, is the complete list you want the form to have: - a field whose `key` you send again is updated in place, keeping its identity and its answers' history; - a `key` the form does not have yet is added at the end; - a `key` you leave out is removed, along with any conditional logic that depended on it — **unless** it is a question this API cannot create, which is kept instead. That last rule is what makes the round trip safe: `GET` a form, change one label, `PATCH` the whole `fields` array back, and nothing built in the dashboard is lost. Anything the update did beyond what you asked for comes back in `warnings`. Layout authored in the builder survives — extra pages, prose between questions, columns. Only the questions themselves change.