Update a form
const url = 'https://api.deploybase.eu/api/v1/api/v1/forms/example';const options = { method: 'PATCH', headers: {Authorization: '<Authorization>', 'Content-Type': 'application/json'}, body: '{"allowed_origins":["example"],"enabled":true,"honeypot_field":"example","name":"example","notify_emails":["example"],"notify_team":true,"redirect_url":"example","retention_days":1,"store_ip":"example"}'};
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.deploybase.eu/api/v1/api/v1/forms/example \ --header 'Authorization: <Authorization>' \ --header 'Content-Type: application/json' \ --data '{ "allowed_origins": [ "example" ], "enabled": true, "honeypot_field": "example", "name": "example", "notify_emails": [ "example" ], "notify_team": true, "redirect_url": "example", "retention_days": 1, "store_ip": "example" }'Partially updates a form’s settings. public_id and project_id are immutable.
Authorizations
Section titled “ Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “ Path Parameters ”Form ID
Request Body
Section titled “ Request Body ”Settings to change
object
NotifyEmails / AllowedOrigins: pointer-to-slice so an explicit [] can clear the list while an omitted key leaves it alone. A plain slice couldn’t tell those apart.
NotifyTeam: false stops every team email for this form (members and the team address); notify_emails is kept so true restores the pick. External recipients are unaffected.
RedirectURL: empty string clears it.
RetentionDays: 0 clears it (keep forever), positive sets it, negative is rejected.
Example generated
{ "allowed_origins": [ "example" ], "enabled": true, "honeypot_field": "example", "name": "example", "notify_emails": [ "example" ], "notify_team": true, "redirect_url": "example", "retention_days": 1, "store_ip": "example"}Responses
Section titled “ Responses ”OK
object
object
object
Name is the dashboard identity, unique per project among live rows only — a soft-deleted form releases its name (uq_forms_project_name_active).
NotifyTeam says whether the team gets this form’s submission emails at all (members from NotifyEmails, else the team notification address). false sends them nothing, so a form can go to its external recipients alone; NotifyEmails is kept, not cleared, so switching back on restores the pick. External recipients are not governed by it.
No default:true in the GORM tag, deliberately, though the COLUMN defaults to true (see
TeamIDPConnection.JitEnabled): GORM substitutes the tag default for a zero value on INSERT,
so a form created with notify_team=false would be written true. Every writer states the
value; CreateFormInput.NotifyTeam is a *bool resolved to true when omitted.
ProjectID is immutable after creation. This is enforced structurally rather than by a check: UpdateFormInput has no project_id field, so no code path can reassign it.
PublicID is immutable after creation: it is baked into the customer’s deployed HTML, so regenerating it would silently break every live form pointing at it.
Example
{ "data": { "source": "manual", "store_ip": "none" }}Bad Request
object
object
Example generated
{ "code": "example", "details": "example", "error": "example", "meta": { "request_id": "example", "timestamp": "example", "trace_id": "example" }}Unauthorized
object
object
Example generated
{ "code": "example", "details": "example", "error": "example", "meta": { "request_id": "example", "timestamp": "example", "trace_id": "example" }}Forbidden
object
object
Example generated
{ "code": "example", "details": "example", "error": "example", "meta": { "request_id": "example", "timestamp": "example", "trace_id": "example" }}Not Found
object
object
Example generated
{ "code": "example", "details": "example", "error": "example", "meta": { "request_id": "example", "timestamp": "example", "trace_id": "example" }}A form with this name already exists in this project
object
object
Example generated
{ "code": "example", "details": "example", "error": "example", "meta": { "request_id": "example", "timestamp": "example", "trace_id": "example" }}Live 174db30c built