Update a widget theme
/v1/widget/presets/{presetId}Changes some of a theme's fields. Only the fields in fields are
written, so sending one colour changes that colour and nothing else. A
storefront using this theme shows the change on its next page load.
Path parameters
1The theme's id.
Request body
application/jsonrequiredAny of the fields POST /v1/widget/presets takes, at least one.
Response
A saved widget theme, as stored.
Pass it to the embed, or to preflight, as themeId.
Shown in the theme builder.
The colours, grouped as stored.
When it was saved first.
When it was last changed.
Errors
25Every error is JSON with a single error string unless noted. Match on the status code; the message is for humans.
Request body must be valid JSON.The body is not parseable JSON.
Request body must be a JSON object.The body is empty, an array, or a JSON primitive.
Widget preset not found: <presetId>No theme with this id belongs to the key's organization.
Nothing to update.fields is missing or holds none of the theme's fields.
Validation failed.More than one field is invalid. details names each one.
Accent colour must be a hex colour, like #FFFFFF or #FFF.One field is invalid. Each field has its own message, the same as in details.
curl -X PATCH "https://stylor.ai/api/v1/widget/presets/YOUR_PRESET_ID" \
-H "Authorization: Bearer $STYLOR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"fields": {
"accentColor": "#7A3E12"
}
}'{
"preset": {
"id": "7e6d5c4b-3a2f-4e1d-9c8b-7a6f5e4d3c2b",
"name": "Ranch",
"options": {
"button": {
"label": "Ask a stylist",
"color": "#2D2926",
"hoverColor": "#000000",
"textColor": "#FFFFFF"
},
"widget": {
"typingDotColor": "#999999",
"accentColor": "#B5651D",
"accentHoverColor": "#8A4B12",
"mutedTextColor": "#6B6B6B",
"primaryTextColor": "#2D2926",
"pageColor": "#FBF8F3",
"surfaceColor": "#FFFFFF",
"borderColor": "#E6E1DA",
"inputColor": "#F3EFE9",
"footerColor": "#FBF8F3",
"roundness": 60
}
},
"created": "2026-10-04T18:20:03.001Z",
"modified": "2026-10-04T18:20:03.001Z"
}
}