---
id: config-digital-wallet-open-id-configure-secure-vault
title: "Configure secure vault"
description: "Configures a secure vault for cryptographic key storage used in OID4VCI and OpenID4VP operations."
sidebar_label: "Configure secure vault"
hide_title: true
hide_table_of_contents: true
api: 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
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"}>Configure secure vault</h1>

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



Configures a secure vault for cryptographic key storage used in OID4VCI and OpenID4VP operations.

## 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={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>hashicorpVault</strong><span className={"openapi-schema__name"}> object</span></span></summary><div style={{"marginLeft":"1rem"}}><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

HashiCorp Vault configuration for external key management used for OID4VCI credential signing.

</div><SchemaItem collapsible={false} name={"enabled"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"Specifies whether Hashicorp Vault is enabled"}}></SchemaItem><SchemaItem collapsible={false} name={"vaultUsername"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Username for Hashicorp Vault authentication"}}></SchemaItem><SchemaItem collapsible={false} name={"vaultPassword"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Password for Hashicorp Vault authentication"}}></SchemaItem><SchemaItem collapsible={false} name={"vaultAddress"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Address of the Hashicorp Vault server"}}></SchemaItem><SchemaItem collapsible={false} name={"vaultNamespace"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Namespace in Hashicorp Vault"}}></SchemaItem></div></details></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>igrantioVault</strong><span className={"openapi-schema__name"}> object</span><span className={"openapi-schema__divider"}></span><span className={"openapi-schema__required"}>required</span></span></summary><div style={{"marginLeft":"1rem"}}><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

iGrant.io managed vault configuration for OID4VCI credential signing.

</div><SchemaItem collapsible={false} name={"enabled"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"Specifies whether iGrant.io Vault is enabled"}}></SchemaItem></div></details></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>qtsp</strong><span className={"openapi-schema__name"}> object</span></span></summary><div style={{"marginLeft":"1rem"}}><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

Qualified Trust Service Provider (QTSP) configuration for qualified electronic signatures compliant with eIDAS regulation.

</div><SchemaItem collapsible={false} name={"enabled"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"Specifies whether Qualified Trust Service Provider (QTSP) is enabled"}}></SchemaItem><SchemaItem collapsible={false} name={"cscUrl"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"URL for the CSC service"}}></SchemaItem><SchemaItem collapsible={false} name={"clientId"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Client ID for QTSP authentication"}}></SchemaItem><SchemaItem collapsible={false} name={"clientSecret"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Client secret for QTSP authentication"}}></SchemaItem><SchemaItem collapsible={false} name={"userID"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"User ID for QTSP service"}}></SchemaItem></div></details></SchemaItem></ul></details></TabItem></MimeTabs><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={"secureVault"} required={false} schemaName={"integer[]"} qualifierMessage={undefined} schema={{"type":"array","items":{"type":"integer"},"description":"Secure vault ID, `1` for iGrant.io, `2` for Hashicorp secure vault, `3` for QTSP vault","enum":[1,2,3]}}></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"secureVault\": [\n    0\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>
      