Update a creative
Changed onChanges a creative. Read/write access to its workspace; an unknown or inaccessible creativeId answers 403. Each group sent replaces the stored one as a whole (see PatchCreativeRequest); an empty body changes nothing.
Status. Publish with status: inProgress, pause with paused, close with completed, and reopen or resume with inProgress. A creative that was ever published can't go back to draft. Any status but draft must meet the publish rules of POST /api/v3/creatives, checked against the creative as it would be after the change, except for pausing or closing a published creative with a body that changes nothing else: taking it down works even when it no longer meets them (its last action was deleted, or its survey unlinked). In wind-down (the license does not include Creatives), only a body that sets nothing but status to paused or completed (with expectedUpdatedAt or without) is accepted; any other body, an empty one included, answers 403 creatives_not_entitled.
Custom CSS. Adding or editing styling.theme.customCss follows the rules of POST /api/v3/creatives; removing it, or sending it back unchanged, needs no plan and is not processed again.
An archived creative is read-only: restore it first, or the request answers 422.
Concurrent changes. The change applies to the creative as it is stored when the request runs, so a pause, close or archive made meanwhile is never undone by a request that doesn't mention it. Send expectedUpdatedAt (the updatedAt you last read) to have the change refused with 409 instead when the creative changed since your read.
Its survey. Changing or removing destination succeeds even when this creative is the last one that opens a live (inProgress) app survey with no actions of its own; that survey then shows nowhere until a creative or an action opens it again. Check before relinking.
Request
- Base URLhttps://app.formbricks.com
- URLhttps://app.formbricks.com/api/v3/creatives/{creativeId}
- Auth
- API key in cookie next-auth.session-token
- or API key in header x-api-key
- or HTTP bearer
Path parameters
Creative identifier.
Request body
Example request
{
"defaultLanguage": "en-US",
"languages": [
{
"code": "en-US"
}
],
"content": {
"label": {
"en-US": "Feedback",
"de-DE": "Feedback geben"
}
},
"styling": {
"position": {
"desktop": {
"edge": "right",
"offset": 50
},
"phone": null
},
"theme": {
"customStyles": false,
"backgroundColor": null,
"textColor": null,
"borderColor": null,
"borderRadius": null,
"fontWeight": null,
"fontSize": {
"desktop": null,
"phone": null
},
"paddingX": {
"desktop": null,
"phone": null
},
"paddingY": {
"desktop": null,
"phone": null
}
}
},
"distribution": {
"showOn": "pageView",
"triggers": [],
"conditions": null,
"displayPercentage": null
},
"schedule": {
"startAt": "2026-11-01T02:00:00.000Z",
"endAt": "2026-11-01T04:00:00.000Z"
}
}Response
Creative updated
Example response
{
"data": {
"defaultLanguage": "en-US",
"languages": [
{
"code": "en-US"
}
],
"distribution": {
"showOn": "pageView",
"triggers": [],
"conditions": null,
"displayPercentage": null
},
"schedule": {
"startAt": "2026-11-01T02:00:00.000Z",
"endAt": "2026-11-01T04:00:00.000Z"
},
"content": {
"label": {
"en-US": "Feedback",
"de-DE": "Feedback geben"
}
},
"styling": {
"position": {
"desktop": {
"edge": "right",
"offset": 50
},
"phone": null
},
"theme": {
"customStyles": false,
"backgroundColor": null,
"textColor": null,
"borderColor": null,
"borderRadius": null,
"fontWeight": null,
"fontSize": {
"desktop": null,
"phone": null
},
"paddingX": {
"desktop": null,
"phone": null
},
"paddingY": {
"desktop": null,
"phone": null
}
}
}
}
}Changes
- info
added the new optional request property
- info
added the required property
/////////to the response with the status - info
added the required property
/////////to the response with the status
- info
- warning
added the new
chart_in_useenum value to theresponse property for the response status - warning
added the new
chart_in_useenum value to theresponse property for the response status - warning
added the new
chart_in_useenum value to theresponse property for the response status - warning
added the new
chart_in_useenum value to theresponse property for the response status - warning
added the new
chart_in_useenum value to theresponse property for the response status - warning
added the new
chart_in_useenum value to theresponse property for the response status - warning
added the new
chart_in_useenum value to theresponse property for the response status - warning
added the new
dashboards_plan_requiredenum value to theresponse property for the response status - warning
added the new
dashboards_plan_requiredenum value to theresponse property for the response status - warning
added the new
dashboards_plan_requiredenum value to theresponse property for the response status - warning
added the new
dashboards_plan_requiredenum value to theresponse property for the response status - warning
added the new
dashboards_plan_requiredenum value to theresponse property for the response status - warning
added the new
dashboards_plan_requiredenum value to theresponse property for the response status - warning
added the new
dashboards_plan_requiredenum value to theresponse property for the response status - warning
added the new
limit_exceededenum value to the//response property for the response status - warning
added the new
limit_exceededenum value to the//response property for the response status - warning
added the new
limit_exceededenum value to the//response property for the response status - warning
added the new
limit_exceededenum value to the//response property for the response status - warning
added the new
limit_exceededenum value to the//response property for the response status - warning
added the new
limit_exceededenum value to the//response property for the response status - warning
added the new
limit_exceededenum value to the//response property for the response status
- warning