---
id: config-passwordless-login-verify-pid
title: "Verify admin with PID credential for passwordless login"
description: "Starts a verification of the admin with a PID (Person Identification Data) credential from an EUDI Wallet. The service gives a QR code. The admin scans the QR code with the wallet and presents the PID credential. A successful presentation links the wallet to the admin for passwordless login. Monitor the result with the SSE operation on `/v3/config/admin/authentication/oidc/user/verify/sse`."
sidebar_label: "Verify admin with PID credential for passwordless login"
hide_title: true
hide_table_of_contents: true
api: eJztV9tu2zgQ/ZUBnxJAsZxLgYVRFJvaaeG2u3XXTvJQBDBDjSU2EqmSlB2v4X9fDCnLkpOg3bcFunmIZJIzc3jmqg1L0AojSye1YgM2ddw4CxyWaORCCk7roBfgMgSeFFLBSroMOEzGIziaoLFawThB5fbHR9zxYxAG/TLPYWF0AVzB1fVoDLc8z9H1YJYhWDRLKRBSuUSy+uUvEDrBsBnMWcGV9ebrzQCAFlZeE3CVQGnQonLhIEHbW+/BJdhKCLR2UeW7kwFpLtWDbetyunXThTZQcmtX2iQ5Wgu5TqXqwR9aSaeNP2nQVrnbY5pOr0CXaGriFMzj5XkstFrINPZqY165jKAFtmItExFXFk3sOV/H1uK8xyLWqBknbMCCikkLzidCc+NlJjJhETNoS60sWjbYsLN+nx5d97Y5t+RqTDzqtrfJtNDKoXKkgJdlvoP6zZKWDbMiw4LTm1uXyAZM339D4VjESkOonQwYluVMP6D6YoY6wdZx64xUKYueQbdzssu4a7kiREHDcjuQ2JbM7p169SgyrlIk1n7GYicgsBYGWYc0ml30dzna+r+IXQSaf5owg98raTBhg68MjdGBmii8j1rg7qIfkLuX3l9TKocpGtL3yIsyRza46Pe3z6h/hppGhL3lCUhVVg5KbniBDg2r79vljw7SjdASvgx5gobABWZOf2FmrhWluTbyb0yeUPPqlw6asXJoFM99JUID3swBR9uIWRSVkW7NBl837LKUH5Fe77bRhr1FbtBcVi7zK3RrnlpiZyRT6Xhe1wY4+lyiGo8ubobHLGLXFg38wRVPsSDe7yJWoMs0ldcUPVmcVLJ/W7IZoaW7WA+2e90RFrq+KotYZXI2YJlzpR3EcYKFPuGl7MnUcOV6UjO6X1fBxOikEr48vaDmRxqmjqdSpS+J27B9CORu74MphWKIoJ0nmlDgYSFikkwFJ7KIKV7Q7mWdBZ64J/X3cjKGB1xDl9/Q/pc8r3BXfOcdPXMIZqCorIN7X8MX8hGT0CHmASPM4Uhph16BM1zmnoOSCzyOAHtp70DtAGrB12tdGaLj5AHXb+a+xbRjbsPu/a932hTcsQH7cDt7ejc/coCjDujHiB28oKnGDFJBBwQ0DPr8Jw6DMdbkNvmNUYpItdC7QsKFLyRYcEm+tVVZauN+3/uzcYl8v1/qBkI7hg5u0whBafRSJn5cE5py3yFIehZNF62dFpLPj1F+TJH8PkcYNpOZhbG1FVcC4eizz9LxsZ/mnhectBt1k9mTY0LktNC5pcCRFiiqUJGMBW1SrmpqyRkgra0wgkznSeSNhRSGpK4cogWvsj5iHFcJN4k98feVXDlY5HpVzyM10x7t7fkQboZw9OF2dhzB+Gr2Dqajkw+3M7gZBmvj6Wc4/a1/en7yCoqRFnEx+tQZlX1IWRrCcilQWV+pd8lUcpEhnPX6T1y3Wq163G/3tEnjWtbGn8bDqz+nVycks42Yky7vxIAnK9GiarzHIkaVLLj9rH920TvvnfohS1tXcNXCE4bP9ndBd/R+YYI+TJVWJ/z/A+Q/9AFSlxuHjy4ucy4VRYEPu03dKb+y5Xn4XFhImga8fnp2LNC3jEwExaz1dazumncRy7R1pGazuecWr02+3dLy9wqN7/YRW3Lj0z/0/l1/oTb7QG3Il9mSerfvF74fHYxS23aff381q/F1W9iDb2H1C2nfbal1S/dhNwsQ6D813WdFXlOCfcT1m+Z42HlRoKn/4TSxfrfdbv8BpHp2Zw==
sidebar_class_name: "get api-method"
info_path: docs/openid4vc-api/igrant-io-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"}>Verify admin with PID credential for passwordless login</h1>

<MethodEndpoint method={"get"} path={"/v3/config/admin/authentication/oidc/user/verify"}></MethodEndpoint>



Starts a verification of the admin with a PID (Person Identification Data) credential from an EUDI Wallet. The service gives a QR code. The admin scans the QR code with the wallet and presents the PID credential. A successful presentation links the wallet to the admin for passwordless login. Monitor the result with the SSE operation on `/v3/config/admin/authentication/oidc/user/verify/sse`.

<div><div><ApiTabs label={undefined} id={undefined}><TabItem label={"200"} value={"200"}><div>

The service started the verification.

</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={"vpTokenQrCode"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The QR code that the admin scans with the EUDI Wallet."}}></SchemaItem><SchemaItem collapsible={false} name={"presentationExchangeId"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The presentation exchange identifier of the verification."}}></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"vpTokenQrCode\": \"string\",\n  \"presentationExchangeId\": \"string\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"400"} value={"400"}><div>

Bad request

</div><details style={{"textAlign":"left","marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collaposed={true} open={false}><summary style={{}}><strong>Response Headers</strong></summary><ul style={{"marginLeft":"1rem"}}></ul></details><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={"errorCode"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","example":400}}></SchemaItem><SchemaItem collapsible={false} name={"errorDescription"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","example":"Bad input parameter"}}></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"errorCode\": 400,\n  \"errorDescription\": \"Bad input parameter\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"401"} value={"401"}><div>

Unauthorized

</div><details style={{"textAlign":"left","marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collaposed={true} open={false}><summary style={{}}><strong>Response Headers</strong></summary><ul style={{"marginLeft":"1rem"}}></ul></details><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={"errorCode"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","example":400}}></SchemaItem><SchemaItem collapsible={false} name={"errorDescription"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","example":"Bad input parameter"}}></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"errorCode\": 400,\n  \"errorDescription\": \"Bad input parameter\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"500"} value={"500"}><div>

Internal server error

</div><details style={{"textAlign":"left","marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collaposed={true} open={false}><summary style={{}}><strong>Response Headers</strong></summary><ul style={{"marginLeft":"1rem"}}></ul></details><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={"errorCode"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","example":400}}></SchemaItem><SchemaItem collapsible={false} name={"errorDescription"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","example":"Bad input parameter"}}></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"errorCode\": 400,\n  \"errorDescription\": \"Bad input parameter\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem></ApiTabs></div></div>
      