Edit a form (save a draft)
update_formSave a new config as an unpublished draft (and optionally rename the form). The public form does not change until publish_form. It typically follows get_form, with that updated_at as expected_updated_at: if someone saved the form since, this answers STALE instead of overwriting their work. The config replaces the whole draft, so it carries every step, not only the changed one, and branding as read (leaving it out is refused when the form has one; null removes it). Webhooks and HubSpot destinations are not changed here. discard_draft throws a draft away instead.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"form_id": "<form_id>",
"expected_updated_at": "<expected_updated_at>"
},
"name": "update_form"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | A new form name. Applies at once, no publish needed. | |
| config | No | The whole new config: usually get_form `config` with only the requested change, every other step kept. A partial steps list deletes the steps left out. Saved as an unpublished draft. | |
| form_id | Yes | The form id, from list_forms or get_form. | |
| workspace_id | No | The workspace this call acts in: an id from list_my_workspaces. Required for a person signed in with several workspaces and for staff of this deployment; optional with an API key or with only one workspace. | |
| expected_updated_at | Yes | The updated_at you last read for this form (get_form, or the result of your last write). |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| form | Yes | ||
| warnings | No | What did not go exactly as sent, or what the user needs to know. | |
| workspace | Yes | The workspace this call acted in, to compare with the one the user means. | |
| last_published_at | Yes | When publish_form last made a draft live. Null when publish_form never ran: the form serves what it was created with, which is an empty form when is_live is false. | |
| previous_published_at | Yes | When the version revert_form would bring back went live. Null when there is nothing to revert to. |