---
id: admin-login
title: "Admin login"
description: "Authenticates an administrative user by validating the provided username and password. Upon successful authentication, a pair of JSON Web Tokens (JWT) - access and refresh - are issued, along with basic user details. These tokens are required for accessing protected endpoints within the system."
sidebar_label: "Admin login"
hide_title: true
hide_table_of_contents: true
api: eJztVs1uGzcQfpXBXJoAK8l2k6LYU5zYLWw0dmAr9UHxYbQc7TLhkhuSK0UQdOuT9NH6JMVwVz+OlcYFeqwuXpPz+83wm1lhpDJgPsHTNlZsoy4oamfxPkPFofC6Sf/m+/ccgCyQqrXVIXqKes7QBvYwXcKcjFYUtS0hVgyNd3OtWKV7SzUDWQUNhbBwXg3hfeMshLYoOIRZa4AehJEBQUPag5vB5e31FdzxFMbuE9sAzy7vxs9hAJR0k1nPM8+hkkPPoENoWWVAxtkSFjpWMKWgiy5UxZG0CUMYVxwYYmdU9Dx/brVnBTPne+uSTeNd5CKyAraqcdrGkIxqmxINyxC5HmKGos8hvnZqifkKC2cj2yif1DSmz2z0MQisKwxFxTXJV1w2jDm66UcuImbYeNewj5qD3G7w25MM0Wtb4teVGlcMXJM2QEp5wcbNUohiYojrDDfwH7I1c76miPlO6JB9MfVD2NUR1+sucQFO2mkb7p63+/W6EwuNs6FL6+ToSP489HDDsfVSjcel3dRpV9NUzca7mTYMiiJJDf4j0Huv38f88m78MESBuQv/acp9qltdyer78en9EmobuWSPGfIXqhvDmP/YW/pW42wF8aOrrHL8SnEbBZ2BZ0Fwzj7oomLf2nKoWCJLrXXImG2NoalYi77l3vM4CR3wbNs60c7Z24srzPD97fmNkM4uou5GYOy6+Ekup9rH6oziQZ/b1lYicEB7RrU2y6tvgPVIvNRztk+W1uF6zv745z3hqXOGye4XYkYm7KRPjv+N9E8vnybdVM7yVVtPH7TYtyLvfxm+OPRUL2zhvOciQuFZCXOTCVvWT2zz4uj4sd5bMlIOVuA8aFs4CTF25MshdoRSc6ycEi5yITU/xQpzHMmQGKX5MzKu1HaEGQb20qyYT1bYeoM5VjE2IR+NlJ8Ppq1VgzQQ/EC4wTtj2A+o0UNderJxqB2u78VM0Xodl7fCEN0jmzJ59jL/9tAS4+I1iQncSQiz/uOXTatd3o1TKsI8N7vBcL6pyT6x70qwI+jNmRTZzlyKQMf0QM5ufofXrVXwZpsQnL67gDNXtDXb2A3yDNMbTqCfHJ28HL4YHvcESUUiyP5BY2ibxvn4agdIhn1g+tfd0UNw99D7mta2SvDsrz/+fA46AMHtgpUOVSJq4C9FRbbsdoI5ez3riRqkmrrYrg9+CBdRmD5AYDMbBDdnz7q0oFPPxWXW60vj7reibBBKlzqSgQUZwzE5C85oBY1TELmorJM24pABW5oamfYElhdgeM5Gxqdwa2Jemmqj4zIZoTa6ult1Uv9qsgV3Qyml57lsTcongLZAMGuNWQK1SscUZ03WykjO0OiCbUj90EN+2lBRMZwMjx5hvlgshpSuh86Xo143jH67eHN+dXs+EB3pOXk1Ndl9o/JmIL2Zr6fQ3qLy/6735F2vZ4PIX+KoMaS72e3TfOzYaoKSJsoYqxPqG/Rl2lXCa/kEV6spBX7vzXotx59b9kvMJ/cZzsnrjown9+sMKyYlrD1Z4SdeYo5vuqIN0pwVcdNKQI+WnnW20TgtCm7iP8re71Hvu+vbsdBav83WTomOp4VsurTAHD/gB8QMXWqkbm2S8xUasmVLZVovkl35/Q1CDVsG
sidebar_class_name: "post api-method"
info_path: docs/drv-bund-api/drv-bund-controller-api-documentation
custom_edit_url: null
---

> **Build this with an AI coding agent.** Install the iGrant.io Agent Skills, then ask your agent to build the integration:
>
> ```bash
> npx skills add L3-iGrant/skills
> ```


import ApiTabs from "@theme/ApiTabs";
import DiscriminatorTabs from "@theme/DiscriminatorTabs";
import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes";
import MimeTabs from "@theme/MimeTabs";
import ParamsItem from "@theme/ParamsItem";
import ResponseSamples from "@theme/ResponseSamples";
import SchemaItem from "@theme/SchemaItem";
import SchemaTabs from "@theme/SchemaTabs";
import Markdown from "@theme/Markdown";
import OperationTabs from "@theme/OperationTabs";
import TabItem from "@theme/TabItem";

<h1 className={"openapi__heading"}>Admin login</h1>

<MethodEndpoint method={"post"} path={"/auth/admin/login/"}></MethodEndpoint>



Authenticates an administrative user by validating the provided username and password. Upon successful authentication, a pair of JSON Web Tokens (JWT) - access and refresh - are issued, along with basic user details. These tokens are required for accessing protected endpoints within the system.

## Request

<MimeTabs className={"openapi-tabs__mime"}><TabItem label={"application/json"} value={"application/json-schema"}><details style={{}} className={"openapi-markdown__details mime"} data-collapsed={false} open={true}><summary style={{}} className={"openapi-markdown__details-summary-mime"}><h3 className={"openapi-markdown__details-summary-header-body"}>Body</h3></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"username"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The email address of the user."}}></SchemaItem><SchemaItem collapsible={false} name={"password"} required={true} schemaName={"password"} qualifierMessage={undefined} schema={{"type":"string","format":"password","description":"The user's password."}}></SchemaItem></ul></details></TabItem></MimeTabs><div><div><ApiTabs label={undefined} id={undefined}><TabItem label={"200"} value={"200"}><div>

Returns access and refresh tokens along with user profile data.

</div><div><MimeTabs className={"openapi-tabs__mime"} schemaType={"response"}><TabItem label={"application/json"} value={"application/json"}><SchemaTabs className={"openapi-tabs__schema"}><TabItem label={"Schema"} value={"Schema"}><details style={{}} className={"openapi-markdown__details response"} data-collapsed={false} open={true}><summary style={{}} className={"openapi-markdown__details-summary-response"}><strong>Schema</strong></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"refresh"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"JWT refresh token"}}></SchemaItem><SchemaItem collapsible={false} name={"access"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"JWT access token"}}></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>user</strong><span className={"openapi-schema__name"}> object</span></span></summary><div style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"id"} required={false} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","example":3}}></SchemaItem><SchemaItem collapsible={false} name={"username"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","example":"johndoe@deutsche-rentenversicherung.de"}}></SchemaItem><SchemaItem collapsible={false} name={"email"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","nullable":true}}></SchemaItem><SchemaItem collapsible={false} name={"userType"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** [`ADMIN`, `USER`]"} schema={{"type":"string","enum":["ADMIN","USER"],"example":"ADMIN"}}></SchemaItem><SchemaItem collapsible={false} name={"address"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","nullable":true}}></SchemaItem><SchemaItem collapsible={false} name={"birthDate"} required={false} schemaName={"date"} qualifierMessage={undefined} schema={{"type":"string","format":"date","nullable":true}}></SchemaItem><SchemaItem collapsible={false} name={"familyName"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","nullable":true}}></SchemaItem><SchemaItem collapsible={false} name={"givenName"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","nullable":true}}></SchemaItem><SchemaItem collapsible={false} name={"isOver18"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","example":false}}></SchemaItem><SchemaItem collapsible={false} name={"isOver21"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","example":false}}></SchemaItem><SchemaItem collapsible={false} name={"isOver65"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","example":false}}></SchemaItem><SchemaItem collapsible={false} name={"phoneNumber"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","nullable":true}}></SchemaItem></div></details></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"refresh\": \"string\",\n  \"access\": \"string\",\n  \"user\": {\n    \"id\": 3,\n    \"username\": \"johndoe@deutsche-rentenversicherung.de\",\n    \"email\": \"string\",\n    \"userType\": \"ADMIN\",\n    \"address\": \"string\",\n    \"birthDate\": \"2026-08-06\",\n    \"familyName\": \"string\",\n    \"givenName\": \"string\",\n    \"isOver18\": false,\n    \"isOver21\": false,\n    \"isOver65\": false,\n    \"phoneNumber\": \"string\"\n  }\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"400"} value={"400"}><div>

Incorrect credentials provided.

</div><div></div></TabItem><TabItem label={"401"} value={"401"}><div>

Malformed or incomplete request.

</div><div></div></TabItem></ApiTabs></div></div>
      