---
id: config-digital-wallet-open-id-generate-csr
title: "Generate CSR"
description: "Generates a Certificate Signing Request (CSR) for a specific key, allowing the key to be associated with a certificate from a Certificate Authority."
sidebar_label: "Generate CSR"
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"}>Generate CSR</h1>

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



Generates a Certificate Signing Request (CSR) for a specific key, allowing the key to be associated with a certificate from a Certificate Authority.

## Request

<details style={{"marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collapsed={false} open={true}><summary style={{}}><h3 className={"openapi-markdown__details-summary-header-params"}>Path Parameters</h3></summary><div><ul><ParamsItem className={"paramsItem"} param={{"description":"Unique identifier of the key","in":"path","name":"keyId","required":true,"schema":{"type":"string"}}}></ParamsItem></ul></div></details><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={"commonName"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Common name (CN) for the certificate subject, typically the organisation or service name"}}></SchemaItem><SchemaItem collapsible={false} name={"organization"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Organisation (O) for the certificate subject"}}></SchemaItem><SchemaItem collapsible={false} name={"country"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Two-letter country code (C) for the certificate subject (e.g. SE, DE, US)"}}></SchemaItem><SchemaItem collapsible={false} name={"sanDns"} required={false} schemaName={"string[]"} qualifierMessage={undefined} schema={{"type":"array","description":"Subject Alternative Names (SAN), DNS entries to include in the CSR","items":{"type":"string"}}}></SchemaItem><SchemaItem collapsible={false} name={"sanUri"} required={false} schemaName={"string[]"} qualifierMessage={undefined} schema={{"type":"array","description":"Subject Alternative Names (SAN), URI entries to include in the CSR","items":{"type":"string"}}}></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={false} name={"csr"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"PEM-encoded Certificate Signing Request (CSR) string"}}></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"csr\": \"string\"\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>
      