Update a form field
PATCH
/v1/forms/{form}/fields/{field}
const url = 'https://api.submeto.com/v1/forms/example/fields/example';const options = { method: 'PATCH', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"name":"example","label":"example","type":"string","required":true,"options":{},"validation":"email"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request PATCH \ --url https://api.submeto.com/v1/forms/example/fields/example \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "name": "example", "label": "example", "type": "string", "required": true, "options": {}, "validation": "email" }'Updates a field's configuration. Requires the forms:update scope, a
current If-Match Form validator, and the form to still
be disabled with no submissions for name/type changes. Field
validation accepts only a reviewed validation preset, never raw regex.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”form
required
string
The form ID.
field
required
string
The field ID.
Header Parameters
Section titled “Header Parameters”If-Match
string
Request Body
Section titled “Request Body”Media typeapplication/json
object
name
Must match the regex /^[a-z][a-z0-9_]{0,63}$/.
string
label
Must not be greater than 255 characters.
string
type
string
required
boolean
options
One of:
object
key
additional properties
any
Array<string>
validation
string
Responses
Section titled “Responses”Field updated
Media typeapplication/json
object
data
object
id
string
name
string
label
string
type
string
required
boolean
options
string
validation
object
kind
string
preset
string
position
integer
created_at
string
updated_at
string
request_id
string
Example
{ "data": { "id": "REQUEST_ID", "name": "email", "label": "Email", "type": "string", "required": true, "options": null, "validation": { "kind": "preset", "preset": "email" }, "position": 0, "created_at": "2026-01-15T09:00:00.000Z", "updated_at": "2026-08-31T10:15:00.000Z" }, "request_id": "REQUEST_ID"}Not found or not granted
Media typeapplication/json
object
error
object
code
string
message
string
details
object
request_id
string
Example
{ "error": { "code": "resource_not_found", "message": "Resource not found.", "details": {} }, "request_id": "REQUEST_ID"}Media typeapplication/json
One of:
Field contract locked
object
error
object
code
string
message
string
details
object
request_id
string
Legacy custom validation
object
error
object
code
string
message
string
details
object
request_id
string
Example
{ "error": { "code": "field_contract_locked", "message": "Field name and type are locked after activation or first submission.", "details": {} }, "request_id": "REQUEST_ID"}Stale ETag
Media typeapplication/json
object
error
object
code
string
message
string
details
object
request_id
string
Example
{ "error": { "code": "precondition_failed", "message": "The Form revision does not match the If-Match ETag.", "details": {} }, "request_id": "REQUEST_ID"}Missing If-Match
Media typeapplication/json
object
error
object
code
string
message
string
details
object
request_id
string
Example
{ "error": { "code": "precondition_required", "message": "A current If-Match Form validator is required.", "details": {} }, "request_id": "REQUEST_ID"}