Create a cluster
const url = 'http://localhost:8000/clusters';
const options = {
method: 'POST',
headers: {
'API-Version': '2026-06-01.beta',
'API-Key': '<API-Key>',
'Content-Type': 'application/json'
},
body: '{"name":"my-cluster","size":"small","version":"26.5.5","location":"us"}'
};
try {
const response = await fetch(url, options);
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}curl --request POST \
--url http://localhost:8000/clusters \
--header 'API-Key: <API-Key>' \
--header 'API-Version: 2026-06-01.beta' \
--header 'Content-Type: application/json' \
--data '{ "name": "my-cluster", "size": "small", "version": "26.5.5", "location": "us" }'Required scope: clusters:write
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Header Parameters
Section titled “Header Parameters”Request Bodyrequired
Section titled “Request Bodyrequired”Request body for creating a new cluster. Admin console SSO integration is enabled by default.
object
Cluster version in semver format. Check the documentation for the latest supported versions.
Example
26.5.5Region where the cluster is hosted.
Management mode for the cluster. Defaults to full.
Keycloak feature flags to enable on the cluster at creation time.
Keycloak feature flags to disable on the cluster at creation time.
HTTP path prefix to serve Keycloak from (e.g. /auth). Defaults to /.
Enable automatic patch upgrades. Requires a maintenance window; one is provisioned if not supplied.
Set the cluster’s maintenance window at creation. A region default is provisioned if omitted.
object
Whether the window is active.
Days of week the window applies to (0 = Sunday … 6 = Saturday).
Local start time, HH:MM.
Local end time, HH:MM.
IANA timezone, e.g. Europe/Berlin.
Example
{
"name": "my-cluster",
"size": "small",
"version": "26.5.5",
"location": "us"
}Responses
Section titled “Responses”The request has succeeded and a new resource has been created as a result.
A Keycloak cluster managed by Skycloak.
object
Unique cluster identifier.
Human-readable cluster name.
Cluster version in semver format. Check the documentation for the latest supported versions.
Region where the cluster is hosted.
Skycloak manages the full lifecycle of the cluster. Every cluster is fully managed.
Keycloak instance URL. Only non-empty once the cluster reaches available status.
Whether admin console SSO integration is enabled for this cluster.
Whether automatic patch upgrades are enabled for this cluster.
Path prefix Keycloak is served from (e.g. /auth). Empty string means /.
Keycloak feature flags explicitly enabled on this cluster.
Keycloak feature flags explicitly disabled on this cluster.
Example
{
"type": "keycloak",
"size": "small",
"version": "26.5.5",
"location": "us",
"status": "provisioning",
"management_mode": "full",
"http_relative_path": ""
}The server could not understand the request due to invalid syntax.
RFC 9457 Problem Details object.
object
Example generated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"instance": "https://example.com"
}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"
}Client error
Returned when a workspace plan quota would be exceeded. required_plan indicates the minimum plan needed to complete the request.
object
Machine-readable identifier of the quota that was hit, so a client can tell
quotas apart without parsing detail. Known values include cluster_limit
(the workspace’s total cluster allowance), cluster_size_quota (the
allowance for the requested cluster size) and cluster_size (the requested
size is not offered on the plan at all). New values may be added.
How many of the resource the workspace currently has.
Maximum allowed by the current plan. 0 means the plan does not include the resource at all.
Example generated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"instance": "https://example.com",
"current_plan": "example",
"required_plan": "example",
"code": "example",
"current_usage": 1,
"current_limit": 1
}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"
}Client error
object
object
Example generated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"instance": "https://example.com",
"errors": [
{
"field": "example",
"detail": "example",
"code": "example",
"value": "example"
}
]
}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"
}