SSharaFormsDocs
Forms

Update Form

Update an existing form. You can modify any attribute that can be set when creating a form.

PUT/open/forms/{id}

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

http
PUT /open/forms/{id} HTTP/1.1
Host: api.sharaforms.com
Content-Type: application/json
Authorization: Bearer <token>

#Path Parameters

ParameterTypeDescription
idnumberNumeric 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:

FieldTypeDescription
titlestringForm title (max 60 characters)
visibilitystringForm visibility state ("public", "closed", "draft")
languagestringTwo-letter ISO language code (e.g. en)
themestringForm theme
presentation_stylestringHow the form is presented
widthstringForm container width
sizestringForm text size
border_radiusstringForm border radius
dark_modestringDark mode setting
colorstringPrimary color (hex format)
uppercase_labelsbooleanWhether labels should be uppercase
no_brandingbooleanHide SharaForms branding
transparent_backgroundbooleanUse transparent background
propertiesarrayArray of form fields/blocks — must never be empty, or existing properties will be lost
…other fieldsmixedAll other fields from Create Form (description, logo_picture, etc.)

Warning

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.

Tip

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):

json
{
    "title": "Customer Feedback (v2)",
    "visibility": "closed",
    "language": "en",
    "theme": "light",
    "presentation_style": "default",
    "width": "normal",
    "size": "medium",
    "border_radius": "medium",
    "dark_mode": "off",
    "color": "#3b82f6",
    "uppercase_labels": false,
    "no_branding": false,
    "transparent_background": false,
    "properties": [
        {
            "id": "field-1",
            "type": "short_text",
            "name": "First name",
            "required": true
        }
    ],
    "closed_text": "Form is currently closed"
}

#Response

200 OK – Returns the updated Form object.

403 Forbidden – The token lacks forms-write or you don't have permission.