Authentik Core API

Users, groups, applications, tokens, brands, application entitlements and authenticated sessions — the identity records and the objects users see.

Business capability
Identity & Access Management BC-620.20

Operations 78

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

GET /core/application_entitlements/ List application entitlements · Core application entitlements list #
Ask an LLM
“Which entitlements are defined for my applications in authentik?”
“Can I filter entitlements to a single application?”
Tell an agent
List all application entitlements.
Show entitlements defined for application {app}.
POST /core/application_entitlements/ Create an application entitlement · Core application entitlements create #
Ask an LLM
“How do I define a new entitlement that users of an application can be granted?”
“Can I attach custom attributes to a new entitlement?”
Tell an agent
Create entitlement {name} for application {app}.
Add a new entitlement {name} on app {app} with attributes {attributes}.
GET /core/application_entitlements/{pbm_uuid}/ Get an application entitlement · Core application entitlements retrieve #
Ask an LLM
“What attributes does a specific entitlement carry?”
“Which application does a given entitlement belong to?”
Tell an agent
Get entitlement {pbm_uuid}.
Show the name, app and attributes of entitlement {pbm_uuid}.
PUT /core/application_entitlements/{pbm_uuid}/ Replace an application entitlement · Core application entitlements update #
Ask an LLM
“Can I fully overwrite an existing entitlement's name and application?”
“What must I resend to replace an entitlement completely?”
Tell an agent
Replace entitlement {pbm_uuid} with name {name} on app {app}.
Overwrite entitlement {pbm_uuid} so it is {name} for application {app}.
PATCH /core/application_entitlements/{pbm_uuid}/ Edit fields on an entitlement · Core application entitlements partial update #
Ask an LLM
“Can I rename an entitlement without resending its application?”
“Is it possible to change only an entitlement's attributes?”
Tell an agent
Rename entitlement {pbm_uuid} to {name}.
Set only the attributes of entitlement {pbm_uuid} to {attributes}.
DELETE /core/application_entitlements/{pbm_uuid}/ Delete an application entitlement · Core application entitlements destroy #
Ask an LLM
“Can I remove an entitlement that is no longer needed?”
“What permanently deletes an application entitlement?”
Tell an agent destructive · confirm first
Delete entitlement {pbm_uuid}.
Remove application entitlement {pbm_uuid} permanently.
GET /core/application_entitlements/{pbm_uuid}/used_by/ See what uses an entitlement · Core application entitlements used by list #
Ask an LLM
“Which objects depend on a given entitlement before I delete it?”
“Is an entitlement still referenced by any policy binding?”
Tell an agent
List everything that uses entitlement {pbm_uuid}.
Show objects referencing entitlement {pbm_uuid}.
GET /core/application_entitlements/requestable/ List entitlements I can request · Core application entitlements requestable list #
Ask an LLM
“Which entitlements am I allowed to request access to?”
“Can I see requestable entitlements for just one application?”
Tell an agent
List the entitlements the current user can request.
Show requestable entitlements for application {app}.
GET /core/applications/ List applications · Core applications list #
Ask an LLM
“What applications are configured in my authentik instance?”
“Can I list only applications that have a launch URL, or those a particular user can access?”
Tell an agent
List applications in group {group}.
Show the applications user {for_user} has access to.
POST /core/applications/ Create an application · Core applications create #
Ask an LLM
“How do I register a new application in authentik?”
“Can I link a provider and a launch URL when creating an application?”
Tell an agent
Create application {name} with slug {slug}.
Create application {name} ({slug}) using provider {provider} and launch URL {meta_launch_url}.
GET /core/applications/{slug}/ Get an application · Core applications retrieve #
Ask an LLM
“Which provider is attached to a given application?”
“What launch URL and publisher does an application show?”
Tell an agent
Get application {slug}.
Show the provider and metadata for application {slug}.
PUT /core/applications/{slug}/ Replace an application · Core applications update #
Ask an LLM
“Can I overwrite an application's whole configuration in one call?”
“What happens to unset fields when I replace an application entirely?”
Tell an agent
Replace application {slug} with name {name} and new slug {new_slug}.
Overwrite application {slug} as {name}, bound to provider {provider}.
PATCH /core/applications/{slug}/ Edit fields on an application · Core applications partial update #
Ask an LLM
“Can I hide an application from the user library without changing anything else?”
“Is it possible to change just an application's icon or description?”
Tell an agent
Set meta-hide to {meta_hide} on application {slug}.
Change only the launch URL of application {slug} to {meta_launch_url}.
DELETE /core/applications/{slug}/ Delete an application · Core applications destroy #
Ask an LLM
“Can I remove an application from authentik for good?”
“What deletes an application I retired?”
Tell an agent destructive · confirm first
Delete application {slug}.
Remove application {slug} permanently.
GET /core/applications/{slug}/check_access/ Check access to an application · Core applications check access retrieve #
Ask an LLM
“Does a specific user pass the policies to open an application?”
“Why is someone being denied access to an app?”
Tell an agent
Check whether user {for_user} can access application {slug}.
Test my own access to application {slug}.
GET /core/applications/{slug}/used_by/ See what uses an application · Core applications used by list #
Ask an LLM
“Which objects reference an application before I delete it?”
“Is an application still used by any brand or binding?”
Tell an agent
List everything that uses application {slug}.
Show objects that depend on application {slug}.
GET /core/applications/requestable/ List applications I can request · Core applications requestable list #
Ask an LLM
“Which applications can I ask to be given access to?”
“Can I search requestable applications by name?”
Tell an agent
List the applications the current user can request access to.
Find requestable applications named {name}.
GET /core/authenticated_sessions/ List signed-in sessions · Core authenticated sessions list #
Ask an LLM
“Who is currently logged in to authentik, and from where?”
“Can I find sessions by a user's username or last IP address?”
Tell an agent
List active sessions for user {username}.
Show sessions last seen from IP {ip}.
GET /core/authenticated_sessions/{uuid}/ Get a signed-in session · Core authenticated sessions retrieve #
Ask an LLM
“What device and IP is a specific session coming from?”
“Can I inspect one authenticated session by its id?”
Tell an agent
Get session {uuid}.
Show the user agent and last IP of session {uuid}.
DELETE /core/authenticated_sessions/{uuid}/ Revoke a session · Core authenticated sessions destroy #
Ask an LLM
“Can I log out one specific session remotely?”
“What ends a single suspicious login session?”
Tell an agent destructive · confirm first
Revoke session {uuid}.
Sign out the single session {uuid}.
GET /core/authenticated_sessions/{uuid}/used_by/ See what uses a session · Core authenticated sessions used by list #
Ask an LLM
“Which objects reference a given authenticated session?”
“Does anything depend on a session before I revoke it?”
Tell an agent
List objects that use session {uuid}.
Show what references authenticated session {uuid}.
DELETE /core/authenticated_sessions/bulk_delete/ Revoke all sessions for several users · Core authenticated sessions bulk delete destroy #
Ask an LLM
“Can I force-logout several users at once?”
“Is there a way to kill every session belonging to a list of users?”
Tell an agent destructive · confirm first
Revoke all sessions for users {user_pks}.
Log out every session of the users with ids {user_pks}.
GET /core/brands/ List brands · Core brands list #
Ask an LLM
“Which brands are configured, and which domain does each serve?”
“Can I find the default brand or brands using a given authentication flow?”
Tell an agent
List all brands.
Find the brand for domain {domain}.
POST /core/brands/ Create a brand · Core brands create #
Ask an LLM
“How do I add a new brand for another domain with its own logo and title?”
“Can I assign custom flows and a web certificate when creating a brand?”
Tell an agent
Create a brand for domain {domain}.
Create a brand on {domain} titled {branding_title} with logo {branding_logo}.
GET /core/brands/{brand_uuid}/ Get a brand · Core brands retrieve #
Ask an LLM
“Which flows and certificate does a particular brand use?”
“What logo and title is set on a brand?”
Tell an agent
Get brand {brand_uuid}.
Show the branding and flows of brand {brand_uuid}.
PUT /core/brands/{brand_uuid}/ Replace a brand · Core brands update #
Ask an LLM
“Can I overwrite a brand's entire configuration at once?”
“What happens to flows I leave out when replacing a brand?”
Tell an agent
Replace brand {brand_uuid} with domain {domain}.
Overwrite brand {brand_uuid} on {domain} with title {branding_title}.
PATCH /core/brands/{brand_uuid}/ Edit fields on a brand · Core brands partial update #
Ask an LLM
“Can I change just a brand's favicon or custom CSS?”
“Is it possible to swap only the recovery flow on a brand?”
Tell an agent
Set the custom CSS of brand {brand_uuid} to {branding_custom_css}.
Change only the recovery flow on brand {brand_uuid} to {flow_recovery}.
DELETE /core/brands/{brand_uuid}/ Delete a brand · Core brands destroy #
Ask an LLM
“Can I remove a brand I no longer serve?”
“What deletes a brand permanently?”
Tell an agent destructive · confirm first
Delete brand {brand_uuid}.
Remove brand {brand_uuid} for good.
GET /core/brands/{brand_uuid}/used_by/ See what uses a brand · Core brands used by list #
Ask an LLM
“Which objects reference a brand before I delete it?”
“Is a brand still in use anywhere?”
Tell an agent
List everything that uses brand {brand_uuid}.
Show objects depending on brand {brand_uuid}.
GET /core/brands/current/ Get the brand for the current request · Core brands current retrieve #
Ask an LLM
“Which brand is being served for the domain I'm on right now?”
“What title and logo apply to the current request?”
Tell an agent
Get the current brand.
Show the brand that applies to this request's domain.
GET /core/groups/ List groups · Core groups list #
Ask an LLM
“What groups exist in authentik, and who belongs to them?”
“Can I find the groups a particular username is a member of?”
Tell an agent
List groups that include member {username}.
Search groups for {search}, including their users.
POST /core/groups/ Create a group · Core groups create #
Ask an LLM
“How do I create a new group and put users in it?”
“Can a new group inherit from parent groups or get roles assigned?”
Tell an agent
Create group {name}.
Create group {name} with members {users} under parents {parents}.
GET /core/groups/{group_uuid}/ Get a group · Core groups retrieve #
Ask an LLM
“Who are the members of a specific group?”
“Can I see a group's parents, children and inherited roles?”
Tell an agent
Get group {group_uuid}.
Show group {group_uuid} with its users and inherited roles.
PUT /core/groups/{group_uuid}/ Replace a group · Core groups update #
Ask an LLM
“Can I overwrite a group's whole definition, member list included?”
“What must I send to fully replace a group?”
Tell an agent
Replace group {group_uuid} with name {name}.
Overwrite group {group_uuid} as {name} with exactly members {users}.
PATCH /core/groups/{group_uuid}/ Edit fields on a group · Core groups partial update #
Ask an LLM
“Can I rename a group without touching its members?”
“Is it possible to grant a group superuser status on its own?”
Tell an agent
Rename group {group_uuid} to {name}.
Set is-superuser to {is_superuser} on group {group_uuid}.
DELETE /core/groups/{group_uuid}/ Delete a group · Core groups destroy #
Ask an LLM
“Can I remove a group entirely?”
“What deletes a group I no longer need?”
Tell an agent destructive · confirm first
Delete group {group_uuid}.
Remove group {group_uuid} permanently.
POST /core/groups/{group_uuid}/add_user/ Add a user to a group · Core groups add user create #
Ask an LLM
“How do I add one person to an existing group?”
“Can I add a single member without rewriting the group's user list?”
Tell an agent
Add user {pk} to group {group_uuid}.
Put user id {pk} into group {group_uuid}.
POST /core/groups/{group_uuid}/remove_user/ Remove a user from a group · Core groups remove user create #
Ask an LLM
“Can I take one member out of a group?”
“What removes a single user from a group without deleting the user?”
Tell an agent
Remove user {pk} from group {group_uuid}.
Drop user id {pk} out of group {group_uuid}.
GET /core/groups/{group_uuid}/used_by/ See what uses a group · Core groups used by list #
Ask an LLM
“Which policies or bindings reference a group?”
“Is a group still used anywhere before I delete it?”
Tell an agent
List everything that uses group {group_uuid}.
Show objects that depend on group {group_uuid}.
GET /core/object_attributes/ List custom object attributes · Core object attributes list #
Ask an LLM
“Which custom attribute definitions exist for users or other models?”
“Can I list only enabled attribute definitions for a given model?”
Tell an agent
List custom attribute definitions for model {model}.
Show object attributes with enabled = {enabled}.
POST /core/object_attributes/ Define a custom object attribute · Core object attributes create #
Ask an LLM
“How do I add a custom field definition to a model such as users?”
“Can a custom attribute be required, unique or validated with a regex?”
Tell an agent
Create attribute {key} labelled {label} of type {type} on {object_type}.
Define required attribute {key} ({label}, {type}) on {object_type} with regex {regex}.
GET /core/object_attributes/{attribute_id}/ Get a custom attribute definition · Core object attributes retrieve #
Ask an LLM
“What type and validation rules does a custom attribute have?”
“Is a particular attribute definition required or unique?”
Tell an agent
Get attribute definition {attribute_id}.
Show the key, type and regex of attribute {attribute_id}.
PUT /core/object_attributes/{attribute_id}/ Replace a custom attribute definition · Core object attributes update #
Ask an LLM
“Can I fully redefine an existing custom attribute?”
“What fields must be resent to replace an attribute definition?”
Tell an agent
Replace attribute {attribute_id} with key {key}, label {label}, type {type} on {object_type}.
Overwrite attribute definition {attribute_id} as {key} of type {type} for {object_type}, labelled {label}.
PATCH /core/object_attributes/{attribute_id}/ Edit a custom attribute definition · Core object attributes partial update #
Ask an LLM
“Can I disable a custom attribute without deleting it?”
“Is it possible to change only an attribute's label?”
Tell an agent
Set enabled to {enabled} on attribute {attribute_id}.
Change the label of attribute {attribute_id} to {label}.
DELETE /core/object_attributes/{attribute_id}/ Delete a custom attribute definition · Core object attributes destroy #
Ask an LLM
“Can I remove a custom attribute definition I no longer want?”
“What deletes an object attribute definition?”
Tell an agent destructive · confirm first
Delete attribute definition {attribute_id}.
Remove custom attribute {attribute_id}.
GET /core/tokens/ List tokens · Core tokens list #
Ask an LLM
“What API and app-password tokens exist in authentik?”
“Can I list only the tokens belonging to one username or with a given intent?”
Tell an agent
List tokens owned by {username}.
Show tokens with intent {intent}.
POST /core/tokens/ Create a token · Core tokens create #
Ask an LLM
“How do I create an API token for a user?”
“Can I make a token that expires on a specific date?”
Tell an agent
Create token {identifier} with intent {intent}.
Create token {identifier} for user {user} expiring at {expires}.
GET /core/tokens/{identifier}/ Get a token's details · Core tokens retrieve #
Ask an LLM
“When does a specific token expire and who owns it?”
“Can I see a token's metadata without revealing its secret?”
Tell an agent
Get token {identifier}.
Show the owner, intent and expiry of token {identifier}.
PUT /core/tokens/{identifier}/ Replace a token · Core tokens update #
Ask an LLM
“Can I overwrite a token's full definition including its identifier?”
“What must I resend to replace a token completely?”
Tell an agent
Replace token {identifier} with new identifier {new_identifier}.
Overwrite token {identifier} using identifier {new_identifier} and description {description}.
PATCH /core/tokens/{identifier}/ Edit fields on a token · Core tokens partial update #
Ask an LLM
“Can I extend a token's expiry date without recreating it?”
“Is it possible to change only a token's description?”
Tell an agent
Set the expiry of token {identifier} to {expires}.
Change the description of token {identifier} to {description}.
DELETE /core/tokens/{identifier}/ Delete a token · Core tokens destroy #
Ask an LLM
“Can I revoke an API token by deleting it?”
“What permanently removes a leaked token?”
Tell an agent destructive · confirm first
Delete token {identifier}.
Revoke and remove token {identifier}.
POST /core/tokens/{identifier}/set_key/ Set a token's secret key · Core tokens set key create #
Ask an LLM
“Can I set the secret value of a token to a key I choose?”
“What permission do I need to overwrite a token's key, and is it logged?”
Tell an agent
Set the key of token {identifier} to {key}.
Replace the secret of token {identifier} with {key}.
GET /core/tokens/{identifier}/used_by/ See what uses a token · Core tokens used by list #
Ask an LLM
“Which objects reference a token before I delete it?”
“Is a token still tied to an outpost or other object?”
Tell an agent
List everything that uses token {identifier}.
Show objects depending on token {identifier}.
GET /core/tokens/{identifier}/view_key/ Reveal a token's secret key · Core tokens view key retrieve #
Ask an LLM
“How can I see the actual secret value of a token?”
“Is viewing a token's key recorded in the audit log?”
Tell an agent
Show the secret key of token {identifier}.
Reveal the key for token {identifier}.
PUT /core/transactional/applications/ Create an application and provider together · Core transactional applications update #
Ask an LLM
“Can I create an application and its provider in one atomic step?”
“Is there a way to validate and apply an app, provider and policy bindings as a blueprint?”
Tell an agent
Create application {app} with a {provider_model} provider configured as {provider}.
Apply app {app}, {provider_model} provider {provider} and bindings {policy_bindings} in one transaction.
GET /core/users/ List users · Core users list #
Ask an LLM
“Which users are in my authentik directory?”
“Can I find users who haven't logged in since a certain date, or who are inactive?”
Tell an agent
Find the user with email {email}.
List users who last logged in before {date}.
POST /core/users/ Create a user · Core users create #
Ask an LLM
“How do I add a new user account?”
“Can I put a new user straight into groups and a directory path?”
Tell an agent
Create user {username} named {name}.
Create user {username} ({name}) with email {email} in groups {groups}.
GET /core/users/{id}/ Get a user · Core users retrieve #
Ask an LLM
“What groups and attributes does a specific user have?”
“When did a particular user last sign in?”
Tell an agent
Get user {id}.
Show the profile, groups and last login of user {id}.
PUT /core/users/{id}/ Replace a user · Core users update #
Ask an LLM
“Can I overwrite a user's whole record in one call?”
“What must I send to fully replace a user account?”
Tell an agent
Replace user {id} with username {username} and name {name}.
Overwrite user {id} as {username} ({name}) with email {email}.
PATCH /core/users/{id}/ Edit fields on a user · Core users partial update #
Ask an LLM
“Can I deactivate a user without deleting them?”
“Is it possible to change just a user's email address?”
Tell an agent
Set is-active to {is_active} on user {id}.
Change the email of user {id} to {email}.
DELETE /core/users/{id}/ Delete a user · Core users destroy #
Ask an LLM
“Can I permanently delete a user account?”
“What removes a former employee's account entirely?”
Tell an agent destructive · confirm first
Delete user {id}.
Remove user account {id} permanently.
POST /core/users/{id}/impersonate/ Impersonate a user · Core users impersonate create #
Ask an LLM
“Can an admin sign in as another user to troubleshoot their account?”
“Do I have to give a reason when I impersonate someone?”
Tell an agent
Impersonate user {id} with reason {reason}.
Start impersonating user {id} because {reason}.
POST /core/users/{id}/recovery/ Create an account recovery link · Core users recovery create #
Ask an LLM
“Can I generate a temporary recovery link to hand to a locked-out user?”
“How long does an account recovery link stay valid?”
Tell an agent
Create a recovery link for user {id}.
Generate a recovery link for user {id} valid for {token_duration}.
POST /core/users/{id}/recovery_email/ Email an account recovery link · Core users recovery email create #
Ask an LLM
“Can authentik email a user a link to recover their account?”
“Which email stage is used to send a recovery message?”
Tell an agent
Email a recovery link to user {id} using email stage {email_stage}.
Send user {id} a recovery email through stage {email_stage}, valid for {token_duration}.
POST /core/users/{id}/set_password/ Set a user's password · Core users set password create #
Ask an LLM
“Can an admin set a new plain-text password for a user?”
“What resets a user's password to a value I choose?”
Tell an agent
Set the password of user {id} to {password}.
Reset user {id}'s password to {password}.
POST /core/users/{id}/set_password_hash/ Set a password from a Django hash · Core users set password hash create #
Ask an LLM
“Can I migrate a user's password by importing an existing Django password hash?”
“Does setting a pre-hashed password sync the change to LDAP or Kerberos?”
Tell an agent
Set user {id}'s password from the Django hash {password}.
Import pre-hashed password {password} for user {id}.
GET /core/users/{id}/used_by/ See what uses a user · Core users used by list #
Ask an LLM
“Which objects reference a user before I delete the account?”
“Is a user still bound to any policies or tokens?”
Tell an agent
List everything that uses user {id}.
Show objects that depend on user account {id}.
POST /core/users/account_lockdown/ Lock down a user account · Core users account lockdown create #
Ask an LLM
“Can I lock down a compromised account and get a flow link to finish it?”
“What happens if I trigger an account lockdown without naming a user?”
Tell an agent destructive · confirm first
Start an account lockdown for user {user}.
Lock down my own account.
POST /core/users/export/ Export users to a file · Core users export create #
Ask an LLM
“Can I export my user directory to a downloadable file?”
“Is the user export generated asynchronously, and how do I know when it's done?”
Tell an agent
Export all users.
Export users in group {group} with active = {is_active}.
GET /core/users/impersonate_end/ Stop impersonating a user · Core users impersonate end retrieve #
Ask an LLM
“How do I get back to my own admin account after impersonating someone?”
“What ends an active impersonation session?”
Tell an agent
End the current impersonation.
Stop impersonating and return to my own account.
GET /core/users/me/ Get the signed-in user · Core users me retrieve #
Ask an LLM
“Who am I signed in as right now?”
“Can I fetch the current user's details and whether they are being impersonated?”
Tell an agent
Show information about the current user.
Get my own account details.
GET /core/users/paths/ List user directory paths · Core users paths retrieve #
Ask an LLM
“What directory paths are users organized into?”
“Can I search the list of user paths?”
Tell an agent
List all user paths.
Search user paths for {search}.
POST /core/users/service_account/ Create a service account · Core users service account create #
Ask an LLM
“How do I create a non-human service account for automation?”
“Can a new service account get its own group and an expiring token?”
Tell an agent
Create service account {name}.
Create service account {name} with a group, create_group = {create_group}.
POST /core/users/switch/ Switch the browser to another user · Core users switch create #
Ask an LLM
“Can I switch my browser session over to a different user account?”
“Where does user switching send me afterwards?”
Tell an agent
Switch the browser session to user {user_pk}.
Start user switching to {user_pk} and then go to {next}.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/authentik:authentik-core-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

authentik-core-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: authentik Core API
  version: 2026.11.0-rc1
  description: Making authentication simple.
  contact:
    email: hello@goauthentik.io
  license:
    name: MIT
    url: https://github.com/goauthentik/authentik/blob/main/LICENSE
  x-source-url: https://api.goauthentik.io/schema.yml
  x-last-validated: '2026-09-04'
servers:
- url: /api/v3
tags:


# --- truncated at 32 KB (168 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/authentik/refs/heads/main/openapi/authentik-core-api-openapi.yml