Authentik Core API
Users, groups, applications, tokens, brands, application entitlements and authenticated sessions — the identity records and the objects users see.
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}.
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.
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}.
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}.
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}.
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}.
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}.
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}.
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}.
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}.
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}.
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}.
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}.
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.
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}.
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.
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.
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}.
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.
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}.
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}.
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.
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}.
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}.
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}.
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}.
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}.
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}.
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}.
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}.
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}.
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}.
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}.
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.
Ask an LLM
“Which applications have users granted consent to?”
“Can I list consents for one user or one application?”
Tell an agent
List consents given by user {user}.
Show all consents granted to application {application}.
Ask an LLM
“What permissions did a user consent to for an app?”
“When does a specific consent record expire?”
Tell an agent
Get consent {id}.
Show the details of consent record {id}.
Ask an LLM
“Can I withdraw consent a user gave to an application?”
“What forces an app to ask a user for consent again?”
Tell an agent destructive · confirm first
Revoke consent {id}.
Delete consent record {id} so the user is prompted again.
Ask an LLM
“Does anything reference a given consent record?”
“Which objects depend on a user consent?”
Tell an agent
List objects that use consent {id}.
Show what references consent record {id}.
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}.
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}.
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}.
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}.
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}.
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.
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}.
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}.
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}.
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}.
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.
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}.
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.
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.
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}.
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}.
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}.
Documentation
📖
Documentation
https://docs.goauthentik.io/developer-docs/api/
📖
APIReference
https://api.goauthentik.io/
📖
Documentation
https://docs.goauthentik.io
Specifications
SDKs
Other Resources
🔗
SDKs
https://pypi.org/project/authentik-client/
🔗
SDKs
https://www.npmjs.com/package/@goauthentik/api
🔗
Overlay
https://raw.githubusercontent.com/api-evangelist/authentik/refs/heads/main/overlays/authentik-core-api-overlay.yaml
🔗
APIsJSON
https://raw.githubusercontent.com/api-evangelist/authentik/refs/heads/main/apis.yml