---
id: config-digital-wallet-open-id-create-key
title: "Create key"
description: "Creates a new cryptographic key for OID4VCI credential signing in the digital wallet."
sidebar_label: "Create key"
hide_title: true
hide_table_of_contents: true
api: eJzlV21v2zgM/iuEPjWA89KsGw7BMFyXdIes21ogXXuHokBVm7G12JImyUlzgf/7gZLjxOmKFjjcp/sUv4l8+JB8yGxYgjY2QjuhJBuxsUHu0AIHiSuIzVo7lRquMxHDAtcwVwYuppOT6/EUYoMJSid4DlakUsgUhASXISQiFY7nsOJ5jq7HIqY0Gk4+pgkbsVjJuUgn4asb/9GFRjlNgvtzXLOIGbRaSYuWjTZsODimnzZYFpElh9LRO651LmLvpP/D0gcbZuMMC05X2hAEJ4K5Ba4JyIa5tUY2YtYZIVMWHTj4LsXPEkH4MOcCDai5D1DiKl8TAdxhQsSwKmI/Vos9k+rhB8buicnPs4tvcIMPcI5rOPp8c94Bg9qgRek89q2LfePRAXyepy+DH7eSx/NUGeGyAgQxlmDic1lahJVwmXdJCT7CXtqDs9nw7bsOBRWb5cuuzvKcrmOIS7Ns8RXMXXa35hbiFbQTNTsbERTcxRmVVw1ymnhTbv06U/TFNq6xj7rBOya8Htjjy7b+hFgpkwjJHW6zhO3ItRLSRfCRW3x3Upq8izJWCXq8r0D717/xUFVVdFB8/lGGPEFDdUN3J6GRXt03Bn+WwmDCRrcMjVFmrBJkUbie7KG/O3R+WLS70zseqBZTNGTvkRc6RzY6GQyqX5j/BXfNEfaRJyCkLh1obniBDo3no3ra0Lx0mTLib0zYITVvB4P/MTVT6dBI0nI0SzTg3RxwVEXMYlwaQa13u2GnWpBWj27vqmjDPiI3aE5Ll/knFDVPLbFTKz0EqYcjL/Y0RDos8i36lUueYkG030WsQJcpmhNaWU8WJ5Osvxz2w+To1wOmGwZMX2mUIukvcN0tGkt0axkhpnisB9wOeYKFqsNlEStNzkYsc07bUb+fYKG6XIueSA2XricUoxjbBi6NSsrYq/YzZl6yMHM8JWV75rgNrw+B3O3yMKNyDFW0zUZTDjw8iJggVyGRLGKSF/T2tO4EX95PpOj0curnAfULKXHogh5cZQhLnpeNPt237NxDcANFaR08IGiDc/GISZgy9wEj3MORVA69AWe4yD0HmsfYicArddvsCOqD79eqNERHd4HrD/c9Etb9utuwB3/3SZmCO5q3N1dPY4tjtBacWqAEza3dwguWasy0zLRAQMOg1wDiMDhjTX9T3hi1iZBztRUTHnsxwYILyq0ttVbG/b7LZ5MS8cfuUbsQ9mvoIJrmEGijliLx21usqP8dgqDf4nC5CA3oZ+E1GjEX/CFHGDcLnYWptSWXMcJRve51gMvkmYOX+/tL092XHULkVKxyS4UjLFBVoaQzFpRJuayppWSAsLbECDKVJ5F3tiQP62abjPfgldZXjOMy4SaxXR+v4NLBPFcrG9JZM+3R3rwZw/WYNq6rTgTTs6tPMJt0P99cwfU4eJvOLuD4t8Hxm+5bKCYq7heTL/s77tyXlKVtNhcxSuvVettMmscZwrA3eJK61WrV4/51T5m0X5+1/S/T8dm32VmXztDkFi5v1YAnK1Fx2WSPRYyULKR9OBie9N70juks6WTB5R6esEjXy2PSHhbNgPvPtv26Gxw+ur7OuZAE0rOyqcX8li2HYX2fC78HtQQ9/GGQgmZ0W9TDA0tTIqPhMLplm80Dt/jd5FVFj3+WaPxIitiSG1+fYUBtBZDmAPESdECTSS9oXjAP5n21P40uL2akJbwWmp3IBpbrCzK/fSXXe8YP9TZgCP8dnjnynkrgHNcfms/Dm2cPNAoVvibi76qq+gcpGMsH
sidebar_class_name: "post 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"}>Create key</h1>

<MethodEndpoint method={"post"} path={"/v2/config/digital-wallet/openid/key-management/keys"}></MethodEndpoint>



Creates a new cryptographic key for OID4VCI credential signing in the digital wallet.

<div><div><ApiTabs label={undefined} id={undefined}><TabItem label={"201"} value={"201"}><div></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={"keyId"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Unique identifier of the newly created key"}}></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>jwk</strong><span className={"openapi-schema__name"}> object</span></span></summary><div style={{"marginLeft":"1rem"}}><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

JSON Web Key (JWK) representation of the created key

</div><SchemaItem collapsible={false} name={"alg"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Cryptographic algorithm intended for use with the key (e.g. ES256)"}}></SchemaItem><SchemaItem collapsible={false} name={"crv"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Elliptic curve identifier (e.g. P-256)"}}></SchemaItem><SchemaItem collapsible={false} name={"kid"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Key identifier, matching the keyId"}}></SchemaItem><SchemaItem collapsible={false} name={"kty"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Key type (e.g. EC for Elliptic Curve)"}}></SchemaItem><SchemaItem collapsible={false} name={"x"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"X coordinate of the elliptic curve point, Base64url-encoded"}}></SchemaItem><SchemaItem collapsible={false} name={"y"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Y coordinate of the elliptic curve point, Base64url-encoded"}}></SchemaItem></div></details></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"keyId\": \"string\",\n  \"jwk\": {\n    \"alg\": \"string\",\n    \"crv\": \"string\",\n    \"kid\": \"string\",\n    \"kty\": \"string\",\n    \"x\": \"string\",\n    \"y\": \"string\"\n  }\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>
      