---
id: config-create-digital-wallet-open-id-holder-global-configuration
title: "Create holder global configuration"
description: "Creates a global configuration for the holder wallet, including credential encryption, status refresh intervals, and redirect URLs for OID4VCI and OpenID4VP flows."
sidebar_label: "Create holder global configuration"
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"}>Create holder global configuration</h1>

<MethodEndpoint method={"post"} path={"/v2/config/digital-wallet/openid/holder/global-configuration"}></MethodEndpoint>



Creates a global configuration for the holder wallet, including credential encryption, status refresh intervals, and redirect URLs for OID4VCI and OpenID4VP flows.

## 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={false} name={"supportCredentialEncryption"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"Define whether holder is supporting credential encyption"}}></SchemaItem><SchemaItem collapsible={false} name={"refreshCredentialStatusInterval"} required={false} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","description":"Define the interval for refreshing credential status"}}></SchemaItem><SchemaItem collapsible={false} name={"redirectUrl"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Define the redirect url for the authorisation request"}}></SchemaItem></ul></details></TabItem></MimeTabs><div><div><ApiTabs label={undefined} id={undefined}><TabItem label={"200"} value={"200"}><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={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>holderGlobalConfiguration</strong><span className={"openapi-schema__name"}> object</span></span></summary><div style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"holderGlobalConfigurationId"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Unique identifier for the holder's global wallet configuration."}}></SchemaItem><SchemaItem collapsible={false} name={"supportCredentialEncryption"} required={true} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"When `true`, the holder's wallet supports encrypted OID4VCI Credential Responses."}}></SchemaItem><SchemaItem collapsible={false} name={"refreshCredentialStatusInterval"} required={false} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","description":"Interval (in seconds) at which the wallet checks credential revocation status."}}></SchemaItem><SchemaItem collapsible={false} name={"redirectUrl"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Default redirect URL for the OAuth 2.0 Authorization Code Flow during OID4VCI credential issuance."}}></SchemaItem><SchemaItem collapsible={false} name={"createdAt"} required={true} schemaName={"number"} qualifierMessage={undefined} schema={{"type":"number","description":"Unix timestamp (in seconds) when this configuration was created."}}></SchemaItem><SchemaItem collapsible={false} name={"updatedAt"} required={true} schemaName={"number"} qualifierMessage={undefined} schema={{"type":"number","description":"Unix timestamp (in seconds) when this configuration was last modified."}}></SchemaItem></div></details></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"holderGlobalConfiguration\": {\n    \"holderGlobalConfigurationId\": \"string\",\n    \"supportCredentialEncryption\": true,\n    \"refreshCredentialStatusInterval\": 0,\n    \"redirectUrl\": \"string\",\n    \"createdAt\": 0,\n    \"updatedAt\": 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>
      