---
id: config-passwordless-login-issue-authenticator
title: "Issue iGrant.io Authenticator credential for passwordless login"
description: "Issues an iGrant.io Authenticator credential to the EUDI Wallet of the admin that owns the access token. The service gives a credential offer and a one-time PIN. The admin scans the credential offer with the wallet and enters the PIN to accept the credential. Monitor the result with the SSE operation on `/v3/config/admin/authentication/oidc/user/authenticator/sse`."
sidebar_label: "Issue iGrant.io Authenticator credential for passwordless login"
hide_title: true
hide_table_of_contents: true
api: eJztV0tv2zgQ/iuDOSWAYjuPAgujKDa13UJ9xVjncSgCmJHGMhuJVEnKjmv4vy+GlG3ZTtDuHvbSzSGSSc1w5pvHN1xiSjYxsnRSK+xibG1FFoQC+d4I5VpSw2XlpqScTITTBhJDKf8SOTgNbkowuOnHcCfynBzoiV8SaSEVuKlwoOfKhrUkIWvB6UdSLbieElgyM5kQZHLGZzZV68mEDAiVggCt6MTJgmAYfwmCQb1NRK36QHAu3dTvzINZrIiUIxO+H8Zf2Hi2qHR7GlrwWSvJnvK6IVvlbqtvNBqALskIxgu0gnF7dt5OtJrIrO3NaostXFKrtpZp0q4smeaGNm1radzCCDfa4hS7GDQNhbVzbdKcrP2kM6l8WHbigBEasqVWlix2l3jW6fBjN5pNkK0TxlG6j5e0thIqITYl0cqRcqxHlGW+9uCbZWVLtMmUCsFvblESdlE/fKPEYYSlYS+cDKZstV9xMBoC1hmpMoyeMfMghDd/xSGBtvlUGrKknF0nXghuC1dR48zBUzIVKiOG8x8eTLUoSL8ykWTWCb2FaRVhKdWv6W5m7r4zdTr6Mtnk6UtJGTBp4cr/RXgRov3LATP0vZKGUux+RTJGm55OCaPw3m/YfR/9JLhb6S0CUjnKiFOSnkRR5oTdi05n9Yz6Z1DbiOBbkYJUZeWgFEYU5Mhg7e8utPwhe0SW7ZuSSMmwcQGZ098YmRvFTUYb+YPSA2he/dZJE3O9KZH7hkgG/DF7GK0itJRURroFdr8u8bKUH4lf71fREt+SMGS4C/sV9lpkltHpy0w6ka9J8OiqJBX3L257xxjhjSUDn4USGRWM+32EBbmp5nafkQdLsEr8l0yCbDS7ZL3Nu173qdC1xxhhZXLs4tS50nbb7ZQKfSJK2ZJZTfXIbu4qGBqdVolnuxfU/EzDyIlMquwlcRu29w2534ZixBkZEmkdkE1GiLAQIbfkOpYYoRIF717WxeDxO+jQl8MYHmkBuzCHCWMm8orWzX+8o2cM4RgoKuvggZiWJvKJ0jAljIONMIYjpR15Bc4ImXsMSpHQcQTUylp7artQC75e6MowHCePtHgz9ozTTL0lPvhf77QphMMufri7PvStMWxBKaxdmxc01TYz++wYARsEfRtgDMNhuClxjhtypUg10et+IhLfT6gQkmNrq7LUxv25jecmJJux8iARmjm05812Fi2Nnsk0TIuaW4AjkPzk0qqHshC0UIMw0QZuyciJFA85QW9DqRbimtPh6MoXa3zs58TnBYdh9ghHbAp8eMwWOZ3o3HLiSAucVaRYxoI2mVA1tH5q4TGCIpjqPI38YTM+YQFp3UCShnmV9RnjhEqFSe2J91cK5WCS67kN4ayR9tbenffgtgdHH+6ujyOIB9fvYNQ/+XB3Dbe9cFo8uoLTPzqn5yevoOjrpF30PzWnjIlPKcuzYC4TUtY37HUxlSKZEpy1Ogehm8/nLeG3W9pk7VrWtj/FvcGX0eCEZVYROunynRzwYKU6qTbRwwi5k4Wwn3XOLlrnrVM/c2nrCqEa9viZ+FeuKYxN2ZioIeeRer9kGsT4/y3oP78F1c3F0ZNrl7mQimPuk2xZ0+NXnJ2HO8pE8gjgj+HnzkF8oZJpwhlqfdfapcr7CKfaOta2XD4ISzcmX614+XtFxjN9hDNhfM0H3l+TCnPrI3OP760l87YnCU9Ce2PUqsnx7wfXtR27vPXoeat+Ye3rLbVo6N6nsGAC/2emfVbkNVfVR1q82Xwedl4U2DT98DWDf79arf4GU8Wh3Q==
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"}>Issue iGrant.io Authenticator credential for passwordless login</h1>

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



Issues an iGrant.io Authenticator credential to the EUDI Wallet of the admin that owns the access token. The service gives a credential offer and a one-time PIN. The admin scans the credential offer with the wallet and enters the PIN to accept the credential. Monitor the result with the SSE operation on `/v3/config/admin/authentication/oidc/user/authenticator/sse`.

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

The service started the credential issuance.

</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={"credentialOffer"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The credential offer URI that the admin presents to the wallet."}}></SchemaItem><SchemaItem collapsible={false} name={"credentialExchangeId"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The credential exchange identifier of the issuance."}}></SchemaItem><SchemaItem collapsible={false} name={"pin"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The one-time PIN that the admin enters in the wallet to accept the credential offer."}}></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"credentialOffer\": \"string\",\n  \"credentialExchangeId\": \"string\",\n  \"pin\": \"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>
      