Delete a theme
const url = 'http://localhost:8000/clusters/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/themes/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0';
const options = {
method: 'DELETE',
headers: {'API-Version': '2026-06-01.beta', 'API-Key': '<API-Key>'}
};
try {
const response = await fetch(url, options);
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}curl --request DELETE \
--url http://localhost:8000/clusters/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/themes/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0 \
--header 'API-Key: <API-Key>' \
--header 'API-Version: 2026-06-01.beta'Deletes the theme package. Returns 409 Conflict if the theme is assigned to a realm or application client. If the theme is currently deployed, Keycloak undeployment runs asynchronously; the response returns with status: undeploying and the theme is removed once complete. Poll GET until 404 to confirm deletion.
Required scope: themes:write
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Header Parameters
Section titled “Header Parameters”Responses
Section titled “Responses”The request has been accepted for processing, but processing has not yet completed.
A custom Keycloak theme package deployed to a cluster.
object
Keycloak theme types detected in the uploaded ZIP package.
Size of the uploaded theme archive in bytes.
Timestamp of the most recent successful deployment to Keycloak.
Error detail from the last failed deployment.
Directory name Keycloak serves this theme from. Use this exact value when setting a realm or application theme outside Skycloak. Valid once status is deployed. It changes when the theme content is replaced: realm theme settings that name the previous directory are moved automatically, but application themes set outside Skycloak are not and must be updated after a replace.
True when the theme’s content was replaced under its exact name and Keycloak has not restarted since, so the previous content may still be served. Only workspaces that keep exact theme names replace content in place; for every other theme this is false.
Example
{
"theme_types": [
"login"
],
"status": "deploying"
}There is no content to send for this request, but the headers may be useful.
Access is unauthorized.
RFC 9457 Problem Details object.
object
Example generated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"instance": "https://example.com"
}Access is forbidden.
RFC 9457 Problem Details object.
object
Example generated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"instance": "https://example.com"
}The server cannot find the requested resource.
RFC 9457 Problem Details object.
object
Example generated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"instance": "https://example.com"
}The request conflicts with the current state of the server.
RFC 9457 Problem Details object.
object
Example generated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"instance": "https://example.com"
}Client error
RFC 9457 Problem Details object.
object
Example generated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"instance": "https://example.com"
}Headers
Section titled “Headers”Server error
RFC 9457 Problem Details object.
object
Example generated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"instance": "https://example.com"
}Server error
RFC 9457 Problem Details object.
object
Example generated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"instance": "https://example.com"
}