Skip to content

API Reference

Explore and integrate against the complete admin and protocol API — documented live from the running server.

What it is

Helix IAM publishes its full API as OpenAPI, generated directly from the running server, so the reference is always exactly in step with the version you are running. Browse it interactively, or pull the spec to generate a typed client in your language of choice.

Resource URL
Interactive docs /swagger-ui.html
OpenAPI spec /v3/api-docs
# Fetch the machine-readable spec
curl https://auth.example.com/v3/api-docs -o helix-openapi.json

The spec covers both the admin API (realms, applications, users, roles, scopes, identity providers, sessions, webhooks, SCIM targets, import/export) and the protocol endpoints (OIDC, SAML, account).

Generate a client

Point any OpenAPI generator at the spec to scaffold a typed SDK:

openapi-generator-cli generate \
  -i helix-openapi.json \
  -g typescript-fetch \
  -o ./helix-client

Prefer the official SDK for OIDC

For login flows and admin automation in TypeScript, the TypeScript SDK gives you ergonomic, hand-tuned helpers on top of the API. Use a generated client when you need a language the SDK does not yet cover.

Dynamic Client Registration

Applications can register themselves programmatically via Dynamic Client Registration (DCR) at:

POST /connect/register

DCR is protected by an initial access token issued by an administrator. Present it to register a new client and receive its credentials and a registration access token for later management.

POST /realms/acme/connect/register
Authorization: Bearer <initial-access-token>
Content-Type: application/json

{
  "client_name": "Acme Web",
  "redirect_uris": ["https://app.example.com/callback"],
  "grant_types": ["authorization_code", "refresh_token"]
}

Mint initial access tokens carefully

Treat initial access tokens like onboarding credentials: scope them, time-box them, and hand them only to trusted provisioning systems.

Endpoint catalog

The tables below are generated from the running server's OpenAPI spec (/v3/api-docs). Helix exposes two API surfaces that authenticate differently — see Authenticating to the API:

Surface Path prefix Auth
Admin API /admin/realms/{realm}/… Admin session + CSRF (writes need X-XSRF-TOKEN)
Protocol /realms/{realm}/… OAuth2 / OIDC bearer tokens

Admin API

All paths below are relative to /admin/realms/{realm}.

Users

Method & path Purpose
GET /users · POST /users List / create users
GET · PUT · DELETE /users/{userId} Read / update / delete a user
GET · POST /users/{userId}/roles List / assign user role mappings
DELETE /users/{userId}/roles/{roleId} Unassign a role
GET /users/{userId}/credentials List a user's credentials
DELETE /users/{userId}/credentials/{type}/{id} Revoke a credential
PUT /users/{userId}/password Reset a user's password
GET · PUT /users/{userId}/required-actions Get / set required actions
POST /users/{userId}/impersonate Impersonate a user
GET /users/{userId}/gdpr/export Export a user's personal data
GET /users/{userId}/gdpr/consents List a user's consent records
DELETE /users/{userId}/gdpr Erase a user (right to be forgotten)
POST /users/import Bulk-import users

Clients

Method & path Purpose
GET /clients · POST /clients List / create OIDC clients
GET · PUT · DELETE /clients/{id} Read / update / delete a client
GET · POST /clients/{id}/secret Reveal / regenerate the client secret
GET · POST /clients/{clientId}/roles · DELETE .../roles/{name} Client roles
GET · POST /clients/{clientId}/mappers · PUT · DELETE .../mappers/{mapperId} Protocol mappers
GET · POST · DELETE /clients/{clientId}/service-account/roles Service-account role mappings
GET · PUT /clients/{clientId}/allowed-resources Resource-indicator allow-list (RFC 8707)
GET · PUT /clients/{clientId}/authz/settings Authorization Services (UMA) settings
GET · POST /clients/{clientId}/authz/resources · DELETE .../resources/{name} UMA resources
GET · POST /clients/{clientId}/authz/policies · DELETE .../policies/{name} UMA policies
GET · POST /clients/{clientId}/authz/permissions · DELETE .../permissions/{name} UMA permissions
GET · POST /clients/{clientId}/authz/scopes · DELETE .../scopes/{name} UMA scopes
POST /clients/{clientId}/authz/evaluate Evaluate an authorization request

Roles

Method & path Purpose
GET /roles · POST /roles List / create realm roles
GET · PUT · DELETE /roles/{roleId} Read / update / delete a realm role
PUT /roles/{roleId}/default Set the realm's default role

Groups

Method & path Purpose
GET /groups · POST /groups List / create groups
PUT · DELETE /groups/{groupId} Update / delete a group
GET /groups/{groupId}/members · PUT · DELETE .../members/{userId} Group membership
GET /groups/{groupId}/roles · PUT · DELETE .../roles/{roleId} Group role mappings

Organizations

Method & path Purpose
GET /organizations · POST /organizations List / create organizations
GET · PUT · DELETE /organizations/{orgId} Read / update / delete an organization
GET /organizations/{orgId}/members · PUT · DELETE .../members/{userId} Organization membership

Client scopes

Method & path Purpose
GET /client-scopes · POST /client-scopes List / create client scopes
GET · DELETE /client-scopes/{scopeId} Read / delete a client scope
PUT · DELETE /client-scopes/{scopeId}/claims/{claimId} Attach / detach a claim mapper

Claims

Method & path Purpose
GET /claims · POST /claims List / create claim mappers
PUT · DELETE /claims/{claimId} Update / delete a claim mapper

Identity providers

Method & path Purpose
GET /identity-providers · POST /identity-providers List / create identity providers
GET · PUT · DELETE /identity-providers/{alias} Read / update / delete a provider

Webhooks

Method & path Purpose
GET /webhooks · POST /webhooks List / create subscriptions
PUT · DELETE /webhooks/{id} Update / remove a subscription

Applications

Method & path Purpose
GET /applications · POST /applications List / create applications
GET · PUT · DELETE /applications/{name} Read / update / delete an application

Agents (AI / non-human identity)

Method & path Purpose
GET /agents · POST /agents List / create agents
GET · PUT · DELETE /agents/{id} Read / update / delete an agent
POST /agents/{id}/activate · /suspend · /revoke Lifecycle transitions
GET /agents/owner-review Owner attestation / review queue

SAML clients

Method & path Purpose
GET /saml-clients · POST /saml-clients List / register SAML relying parties
GET · PUT · DELETE /saml-clients/{entityId} Read / update / delete a SAML client
POST /saml-clients/import · /import-url Import from metadata (body / URL)

Keys

Method & path Purpose
GET /keys List realm signing keys
DELETE /keys/{keyId} Retire a key
POST /keys/rotate Rotate the active signing key

Sessions

Method & path Purpose
GET /sessions List active sessions
DELETE /sessions/{id} Revoke a session
GET /sessions/service-accounts List service-account sessions

Authentication flows

Method & path Purpose
GET /flows · POST /flows List / create authentication flows
GET · PUT · PATCH · DELETE /flows/{alias} Read / save / rename / delete a flow
GET · PUT /flow Get / save the browser sign-in flow
GET /authenticators List available authenticators

Admin roles (RBAC)

Method & path Purpose
GET /admin-roles List admin roles
PUT /admin-roles/{roleId} Set an admin role's permissions
GET /admin-roles/permissions List assignable admin permissions

Messaging (SMS / email / push)

Method & path Purpose
GET · PUT /messaging/providers List / save channel providers
DELETE /messaging/providers/{channel}/{driver} Remove a provider
POST /messaging/providers/{channel}/test Send a test message
GET · PUT /messaging/templates List / save message templates
POST /messaging/templates/preview Preview a rendered template
GET · POST /messaging/push-tokens List / register push tokens

SCIM targets (outbound provisioning)

Method & path Purpose
GET /scim-targets · POST /scim-targets List / register downstream SCIM targets
PUT · DELETE /scim-targets/{id} Update / remove a target

Import / export

Method & path Purpose
GET /export Export the realm
POST /import Import a realm
POST /import/keycloak Import from a Keycloak export
POST /users/import Bulk-import users

Realm settings & operations

Method & path Purpose
GET · PUT /settings Read / update realm settings
GET · PUT /subject-claim Read / set the subject-claim strategy
GET · PUT /provisioning Read / update DCR & provisioning config
POST /provisioning/initial-access-tokens Mint a DCR initial access token
GET /endpoints Realm endpoint URLs
GET /health Realm health
GET /events Query the audit-event log
POST /user-federation/{alias}/sync Trigger an LDAP sync
GET /workload-identity · POST · GET/PUT/DELETE /workload-identity/{id} Workload identity federation configs

Global admin endpoints

A few endpoints are server-wide rather than realm-scoped: GET /admin/metrics/summary (Prometheus-style summary) and GET /admin/audit/config.

Protocol endpoints (bearer / public)

These run under the realm prefix /realms/{realm}/… and authenticate with bearer tokens (or their own onboarding credential), not an admin session.

Method & path Auth Purpose
/account/** User bearer token End-user self-service — see Account console
/scim/v2/** Per-realm SCIM token SCIM 2.0 provisioning — see SCIM
POST /connect/register · GET/PUT/DELETE /connect/register/{clientInternalId} Initial / registration access token Dynamic Client Registration (RFC 7591)
POST /workload-identity/token Workload JWT Exchange a workload JWT for a Helix token
POST /agent/delegation/token Client / bearer On-behalf-of agent delegation (RFC 8693)
POST /device/enroll · /device/enroll/start Enrollment token Device / MFA enrollment
GET /push/{id} · POST /push/{id}/approve · /deny Session Push-based MFA approval
GET /qr/{id} · POST /qr/{id}/confirm Session QR-based device confirmation
POST /tx · GET /tx/{id} · POST /tx/{id}/sign · /consume Bearer Signing / consent transactions
GET /saml/idp/metadata Public SAML 2.0 IdP metadata
GET /.well-known/oauth-protected-resource Public RFC 9728 protected-resource metadata

Standard OIDC/SAML endpoints

The usual protocol endpoints — /authorize, /token, /userinfo, /logout, /.well-known/openid-configuration, JWKS — are advertised by the realm's discovery document. See the OIDC quickstart.

See also