---
title: "Update the workspace's theme settings"
method: PUT
path: "/theme-settings"
tags: ["Themes"]
---

# Update the workspace's theme settings

`PUT /theme-settings`

## Request

- Base URL: `http://localhost:8000`
- URL: `http://localhost:8000/theme-settings`
- Auth: API key in header `API-Key`

Changes the workspace's theme naming policy. This changes what every realm on every cluster in the workspace
serves, so it additionally requires the API key to have been minted for a workspace owner or admin; a key
minted for any other role, including a cluster admin, gets `403` even with the `themes:write` scope.

Turning `exact_theme_names` on moves the workspace's existing themes to their exact names in the background;
this does not block the response. A theme that cannot be moved right away (for example because its cluster is
busy updating) completes the move on its next content replace instead.

Turning it off changes nothing immediately: each theme keeps its current served folder until its next content
replace, from which point the folder changes on every replace again.

Required scope: `themes:write`

## Headers

- `API-Version` '2026-06-01.beta', required

## Request body

- ThemeSettings: The workspace's theme naming policy.
  - `exact_theme_names` boolean, required: When true, every theme in the workspace is served from a folder named exactly like the theme, and that name never changes across content replaces. When false (the default), the served folder changes on each replace, unless the theme was created by a platform migration.

## Response `200`

The request has succeeded.

- ThemeSettings: The workspace's theme naming policy.
  - `exact_theme_names` boolean, required: When true, every theme in the workspace is served from a folder named exactly like the theme, and that name never changes across content replaces. When false (the default), the served folder changes on each replace, unless the theme was created by a platform migration.

## Other responses

- `401`: Access is unauthorized.
- `403`: Access is forbidden.
- `422`: Client error
- `429`: Client error
- `500`: Server error
- `501`: Server error

---

[API](https://skmtc.dev/skycloak/apis/skycloak-public-api.md) · [All operations](https://skmtc.dev/skycloak/apis/skycloak-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/skycloak/apis/skycloak-public-api/revisions/33a69e2ce35f?raw)
