Skip to main content
PUT
Update Form

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 the forms-write ability.

Request

Path Parameters

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:
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.
To safely update a form without accidentally losing properties:
  1. Fetch the current form state using the Get Form endpoint
  2. Modify only the fields you want to change in the fetched response
  3. Send the complete updated form (including all required fields and properties) back to this endpoint
This ensures you retain all existing form fields and don’t accidentally overwrite them with empty arrays.
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.

Automatically delete old submissions

Set submission_retention_value and submission_retention_unit together to permanently delete submissions after a retention period. The period is measured from each submission’s last update, and the cleanup runs hourly.
The unit accepts day, week, month, or year. Set both fields to null to disable automatic deletion.
Expired submissions, uploaded files, and submission versions are permanently deleted and cannot be restored. Shortening an existing retention period can make older submissions eligible during the next hourly cleanup.

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

Authorization
string
header
required

Personal Access Token

Path Parameters

id
number
required

Body

application/json
workspace_id
number
write-only

ID of the workspace that owns the form.

title
string

The title of the form.

visibility
enum<string>

The current visibility state of the form.

Available options:
public,
draft,
closed
tags
string[] | null
language
string

Two-letter ISO language code.

custom_domain
string | null
theme
enum<string>
Available options:
default,
simple,
notion
font_family
string | null
color
string
dark_mode
enum<string>
Available options:
light,
dark,
auto
width
enum<string>
Available options:
centered,
full
size
enum<string>
Available options:
sm,
md,
lg
border_radius
enum<string>
Available options:
none,
small,
full
layout_rtl
boolean
uppercase_labels
boolean
cover_picture
string<uri> | null
logo_picture
string<uri> | null
no_branding
boolean

Whether to hide the OpnForm branding.

transparent_background
boolean

Transparent background when form is embedded.

submit_button_text
string
Maximum string length: 50
submitted_text
string
Maximum string length: 2000
redirect_url
string<uri> | null
re_fillable
boolean
re_fill_button_text
string
Maximum string length: 50
confetti_on_submission
boolean
show_progress_bar
boolean
submission_retention_value
integer | null

Number of retention units before a submission is permanently deleted. Set this and submission_retention_unit to null to disable automatic deletion.

Required range: 1 <= x <= 3650
submission_retention_unit
enum<string> | null

Calendar unit used by submission_retention_value. Both retention fields must be provided together.

Available options:
day,
week,
month,
year
closes_at
string<date-time> | null
closed_text
string | null
max_submissions_count
integer | null
Required range: x >= 1
max_submissions_reached_text
string | null
auto_save
boolean
auto_focus
boolean
enable_partial_submissions
boolean
editable_submissions
boolean
editable_submissions_button_text
string
Maximum string length: 50
password
string | null
use_captcha
boolean
captcha_provider
enum<string>
Available options:
recaptcha,
hcaptcha
can_be_indexed
boolean
seo_meta
object | null
custom_code
string | null
database_fields_update
any[] | null
properties
object[]

An array of field and layout blocks that make up the form.

Response

Updated

id
number
read-only

The unique identifier for the form.

slug
string
read-only

The URL-friendly slug for the form.

title
string

The title of the form.

visibility
enum<string>

The current visibility state of the form.

Available options:
public,
draft,
closed
tags
string[] | null
language
string

Two-letter ISO language code.

custom_domain
string | null
theme
enum<string>
Available options:
default,
simple,
notion
font_family
string | null
color
string
dark_mode
enum<string>
Available options:
light,
dark,
auto
width
enum<string>
Available options:
centered,
full
size
enum<string>
Available options:
sm,
md,
lg
border_radius
enum<string>
Available options:
none,
small,
full
layout_rtl
boolean
uppercase_labels
boolean
cover_picture
string<uri> | null
logo_picture
string<uri> | null
no_branding
boolean

Whether to hide the OpnForm branding.

transparent_background
boolean

Transparent background when form is embedded.

submit_button_text
string
Maximum string length: 50
submitted_text
string
Maximum string length: 2000
redirect_url
string<uri> | null
re_fillable
boolean
re_fill_button_text
string
Maximum string length: 50
confetti_on_submission
boolean
show_progress_bar
boolean
submission_retention_value
integer | null

Number of retention units before a submission is permanently deleted. Set this and submission_retention_unit to null to disable automatic deletion.

Required range: 1 <= x <= 3650
submission_retention_unit
enum<string> | null

Calendar unit used by submission_retention_value. Both retention fields must be provided together.

Available options:
day,
week,
month,
year
closes_at
string<date-time> | null
closed_text
string | null
max_submissions_count
integer | null
Required range: x >= 1
max_submissions_reached_text
string | null
auto_save
boolean
auto_focus
boolean
enable_partial_submissions
boolean
editable_submissions
boolean
editable_submissions_button_text
string
Maximum string length: 50
password
string | null
use_captcha
boolean
captcha_provider
enum<string>
Available options:
recaptcha,
hcaptcha
can_be_indexed
boolean
seo_meta
object | null
custom_code
string | null
database_fields_update
any[] | null
properties
object[]

An array of field and layout blocks that make up the form.