---
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: eJztV1tv2zYU/isEnxLAlnIrMARFsTR2C21pY8y5PBQBzEjHMhuZ1EjKjmf4v+8cUpZlO0GzPeyly0MsHfLcvnPVkmdgUyNLJ7Xi5zyxtgLLhGLysxHKRVKzi8pNQDmZCqcNSw1k9CYK5jTDE9a/7SXsXhQFOKbHniSyqVT4JJAyVzbQ0hQsPuonUBG7QYoFM5MpsFzOSGdbtB6PwaAZGZK1gq6TU2CD5GtgDOJtKmrRe4xz6Sb+ZB7MIkF4AUy4j4LIeLKodDsSIvZFK0meEt2ArQq3kTcc9pkuwQjCCy1jo3h2GqdajWUee7NisYEL78RaZmlcoavtA21ia2EU8Q5vpCUZ4h8kDYS1c22yAgG70rlUPixbcUBOtK3UyoLl50t+cnREP9vRbINsnTAOsl28JEoWKgUyBZU7JJMcUZbF2oPvloQtuU0nMBX05BYloHj9+B1Sh4ylIS+cDKZspF9TMFoM1hmpcmTYN3MvhLd/JCGBNvlUosd4x64TLwQ34qtOS2f/OZ0IlQPB+Q8VQ83KpKeMJZpRJ/QGJlRWSvU22e3M3XWmTkdfJk2evpaUARNU7v86/CxE+80BM/BnJVEaP//GwRhtLnUGaLJ/7rXsfuj8ILgb7g0CEq3IgVISnsW0LJCGBq5eEP8Cag0L/ygyhKOsHCuFEVNAfHjt7za0dJE8Akv2TUBkiCTKDsgc/8TI3CpqMtrIv9CjXWje/dRJk1C9KSwlaohY2F7NDkbIZCGtjHQLdHrJL0r5O9Djw6qz5B9BGDDUhT2FvBa5JXR6MpcORddD8OC6BJX0zu4uD1HBLSpkX4QSOUwJd+RDMyea2n0OHixBIvm/nCScjCaXrLd52+seTHXtMd6rTIG0iXOlPY/jDM+6opSRzOtRz8nNbQEDo7Mq9dPuFTE/kjBElDBqr7HbcLxryMMmFEPKyJBI64A0GSECocOpJdexxDeFmYDvF3UxePz2OvTFIGFPsGDbMIcNYyaKCtbNf7QlZ8SCGjatrGOPQGNpLJ9xtPotYRRsZCN2oLQDL8AZIQuPQSlSOOwwiPJoR+w5qxnfL3RlCI4uGvdh5CdOO/WW/NG/fdJmKrCM+W/3N/u+tZYtrAxcNmrzgqTaZpo+W0awBkHfBgjDoIw3JU5x41QpUo31up+I1PcTbBySYmurstTG/bqJZxOSZq3cS4R2Du14s9lFsa/McDr7bVFTC0CEJf1SadVLWQhaqEE2xkXuDgwOc/FYALtsRqplST3TsV59sSaHfk98mXEQdo+goinwwSFZ5HSqC0uJIy2jrAJFPJZpkwtVQ+u3FlojoMMmusg6XtmMNCxYVjeQtGVeZX3GOLwmTGa73l+JOLBxoec2hLNG2lt7f3rJ7i7ZAeYDpljSv/nEhr0uviE1aEuG1+z4l6Pj0+47Nu3pNJ72rtpbxtinlKVdEOcC4G5JUV0XE+Yu4noSHe2Fbj6fR8IfR+hyXPPa+Cq57H8d9rvEg0F10hVbOeDBynRaNdFD0dTJQthPjk7OotPo2O9c2rqpUC17/E78ls8UwqZsbdSsoJV6t2Rag/H/r6D//Cuobi4Onl1cFgLDs6qTbFmPx298dhq+UVAJPng19LuliD6oUBVlqPVda3tU4lSZYCKRtOXyUVi4NcVqRWTcJo2f9JiAwviaD3N/PVRotj7R7PG9taS57YeEH0I7a9SqPeM/929qO7bn1pOfW/UDSV8fqUVL9u4ICybQf5q0L7K8p6rCSfKhuR5OXmVomn64TeA/4DL0N1PFod0=
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>
      