Single sign-on for your organization: linked identity providers and the email domains that route to them.
List the org's linked identity providers
Returns the identity providers linked to the organization. Each item has the shape GET /identity-providers/{alias} returns. config is sent only with include=config; secrets in it are masked.
Required scope: org.security.read (Read security settings).
query Parameters
includeExtra data to add to the response: config. Send a comma-separated list or repeat the parameter. An unknown name is refused with 400.
Headers
X-Workspace-IdSelects the workspace this request operates in, by workspace UUID or slug (e.g. a sandbox workspace for test integrations). Omitted: the organization's default live workspace. Unknown workspace: 404; workspace outside your organization: 403. Discover workspaces via GET /workspaces.
Workspace UUID or slug.
List the org's linked identity providers › Responses
OK
Attach an identity provider to the org
Creates a realm-level IdP and links it to the active org in one saga - on link failure the realm IdP is deleted to avoid orphans. Provider IDs supported: oidc, keycloak-oidc, saml. The config map is forwarded to Keycloak as-is (issuer URL, client secret, SAML metadata, etc.).
Required scope: org.security.manage (Manage security settings).
query Parameters
includeExtra data to add to the response: config. Send a comma-separated list or repeat the parameter. An unknown name is refused with 400. config is sent without being asked until 2026-11-30; after that date it is sent only when named here.
Headers
Idempotency-KeyUnique key that makes this POST safe to retry: repeats with the same key replay the first response instead of re-executing. Replays are scoped to the retrying principal (same API key / user) and kept for 24 hours. Required on every POST.
Client-generated idempotency key (e.g. a UUID).
X-Workspace-IdSelects the workspace this request operates in, by workspace UUID or slug (e.g. a sandbox workspace for test integrations). Omitted: the organization's default live workspace. Unknown workspace: 404; workspace outside your organization: 403. Discover workspaces via GET /workspaces.
Workspace UUID or slug.
Attach an identity provider to the org › Request Body
aliasprovider_iddisplay_nameenabledhide_on_loginAttach an identity provider to the org › Responses
Created
Fetch one identity provider
Returns one identity provider linked to the organization; secrets in config are masked. 404 when the alias is not linked to the organization.
Required scope: org.security.read (Read security settings).
path Parameters
aliasRealm-level IdP alias
query Parameters
includeExtra data to add to the response: config. Send a comma-separated list or repeat the parameter. An unknown name is refused with 400. config is sent without being asked until 2026-11-30; after that date it is sent only when named here.
Headers
X-Workspace-IdSelects the workspace this request operates in, by workspace UUID or slug (e.g. a sandbox workspace for test integrations). Omitted: the organization's default live workspace. Unknown workspace: 404; workspace outside your organization: 403. Discover workspaces via GET /workspaces.
Workspace UUID or slug.
Fetch one identity provider › Responses
OK
Detach an identity provider from the org
Unlinks the IdP from the active org and deletes the realm-level IdP itself.
Required scope: org.security.manage (Manage security settings).
path Parameters
aliasRealm-level IdP alias
Headers
X-Workspace-IdSelects the workspace this request operates in, by workspace UUID or slug (e.g. a sandbox workspace for test integrations). Omitted: the organization's default live workspace. Unknown workspace: 404; workspace outside your organization: 403. Discover workspaces via GET /workspaces.
Workspace UUID or slug.
Detach an identity provider from the org › Responses
No Content
Update an identity provider's representation
Replaces the IdP's representation. Keycloak's update is full-representation replace, not partial-merge - fetch the IdP first and pass back the merged shape to preserve unchanged fields. 404 when the alias isn't linked to the active org (cross-tenant guard).
Required scope: org.security.manage (Manage security settings).
path Parameters
aliasRealm-level IdP alias
query Parameters
includeExtra data to add to the response: config. Send a comma-separated list or repeat the parameter. An unknown name is refused with 400. config is sent without being asked until 2026-11-30; after that date it is sent only when named here.
Headers
X-Workspace-IdSelects the workspace this request operates in, by workspace UUID or slug (e.g. a sandbox workspace for test integrations). Omitted: the organization's default live workspace. Unknown workspace: 404; workspace outside your organization: 403. Discover workspaces via GET /workspaces.
Workspace UUID or slug.
Update an identity provider's representation › Request Body
display_nameenabledhide_on_loginprovider_idUpdate an identity provider's representation › Responses
OK
List the org's email domains
Returns the domain list Keycloak holds for the active organization. Each entry carries the hostname and the verified flag (true once the org admin has asserted ownership in v1; v2 will require DNS-TXT proof). Empty array when the org has no domains.
Required scope: org.security.read (Read security settings).
Headers
X-Workspace-IdSelects the workspace this request operates in, by workspace UUID or slug (e.g. a sandbox workspace for test integrations). Omitted: the organization's default live workspace. Unknown workspace: 404; workspace outside your organization: 403. Discover workspaces via GET /workspaces.
Workspace UUID or slug.
List the org's email domains › Responses
OK
Replace the org's email domain list
Replaces the org's domain list with the supplied entries. v1 ships operator-asserted: every domain the request supplies is set verified=true so Keycloak's OrganizationAuthenticator picks it up for home-realm-discovery. Empty arrays clear the list.
Required scope: org.security.manage (Manage security settings).
Headers
X-Workspace-IdSelects the workspace this request operates in, by workspace UUID or slug (e.g. a sandbox workspace for test integrations). Omitted: the organization's default live workspace. Unknown workspace: 404; workspace outside your organization: 403. Discover workspaces via GET /workspaces.
Workspace UUID or slug.
Replace the org's email domain list › Responses
OK