Update Form
Update an existing form. You can modify any attribute that can be set when creating a form.Authentication & Scope
Requires a token with theforms-write ability.
Request
Path Parameters
| Parameter | Type | Description |
|---|---|---|
| id | number | Numeric ID of the form to edit |
Body Parameters
All fields from the Create Form endpoint may be supplied. However, the API validation requires you to include specific fields in every update request, even if you only want to change one optional field.Required Fields in Updates
These fields must always be included:| Field | Type | Description |
|---|---|---|
| title | string | Form title (max 60 characters) |
| visibility | string | Form visibility state ("public", "closed", "draft") |
| language | string | Two-letter ISO language code (e.g. en) |
| theme | string | Form theme |
| presentation_style | string | How the form is presented |
| width | string | Form container width |
| size | string | Form text size |
| border_radius | string | Form border radius |
| dark_mode | string | Dark mode setting |
| color | string | Primary color (hex format) |
| uppercase_labels | boolean | Whether labels should be uppercase |
| no_branding | boolean | Hide OpenForm branding |
| transparent_background | boolean | Use transparent background |
| properties | array | Array of form fields/blocks — must never be empty, or existing properties will be lost |
| …other fields | mixed | All other fields from Create Form (description, logo_picture, etc.) |
Important: Omitting any of the required fields will result in a validation error. You must include all these fields in your update request, even if you’re only changing one optional field. Additionally, the
properties array cannot be empty — always send your complete form fields.Recommended Update Pattern
To safely update a form without accidentally losing properties:- Fetch the current form state using the Get Form endpoint
- Modify only the fields you want to change in the fetched response
- Send the complete updated form (including all required fields and properties) back to this endpoint
Best Practice Example: If you only want to change form visibility, fetch the form first, update only the
visibility field locally, then send the complete form back with all its properties intact.Body Example
Example request updating title and visibility (note: all required fields must be included):Response
200 OK – Returns the updated Form object.
403 Forbidden – The token lacks forms-write or you don’t have permission.Authorizations
Personal Access Token
Path Parameters
Body
application/json
ID of the workspace that owns the form.
The title of the form.
The current visibility state of the form.
Available options:
public, draft, closed Two-letter ISO language code.
Available options:
default, simple, notion Available options:
light, dark, auto Available options:
centered, full Available options:
sm, md, lg Available options:
none, small, full Whether to hide the OpnForm branding.
Transparent background when form is embedded.
Maximum length:
50Maximum length:
2000Maximum length:
50Required range:
x >= 1Maximum length:
50Available options:
recaptcha, hcaptcha An array of field and layout blocks that make up the form.
Response
Updated
The unique identifier for the form.
The URL-friendly slug for the form.
The title of the form.
The current visibility state of the form.
Available options:
public, draft, closed Two-letter ISO language code.
Available options:
default, simple, notion Available options:
light, dark, auto Available options:
centered, full Available options:
sm, md, lg Available options:
none, small, full Whether to hide the OpnForm branding.
Transparent background when form is embedded.
Maximum length:
50Maximum length:
2000Maximum length:
50Required range:
x >= 1Maximum length:
50Available options:
recaptcha, hcaptcha An array of field and layout blocks that make up the form.