---
id: config-digital-wallet-open-id-holder-create-credential-offer
title: "Create credential offer"
description: "Creates an OID4VCI Credential Offer that can be presented to a holder via QR code or deep link."
sidebar_label: "Create credential offer"
hide_title: true
hide_table_of_contents: true
api: eJzlV21v2zYQ/isHfkoA+SUvBQajKJY66eZ2W7I6TTCkRnORTjYbiWRJyq5n+L8PR8q2bCfthgH7si+JLPKOdw+fu+e0EBm51ErjpVaiJ/qW0JMDVHA5OD+96Q+gbykj5SUWcJnnZMFP0EOKCh4IjCVHylMGXgPCRBcZWZhKhN/fQ6ozAm0hIzJQSPXYFonQhizyaYNM9ESqVS7H53IsPRa3WBTkLw2pQfZz8BTD2UQQAhCJsPSlIudf62wuegv24kl5fkRjCpmGAzqfHee0EC6dUIn8ZCwf7yW5YLb2O3CuIsvv/NyQ6AnnrVRjkezAcz0h2FiBDGZQ2QJyq0uYTWQ6Ab+9yWsGqo6YMrFMxJSskzG2b583NJTKXJILTmsz0DlomZ1OUwmZxdyDi9ti2iIRpKpS9O5EWP10dMR+4+OJGC2TRuKuEQNai3ORCOmpdPuxLZ8CQz98ptQDXwBKFcPM0CNYKnBNi5QsL2+hMjcUdsdLh1/P/lhhJLYi7AeGVCvO/J2AY1D7AZ/xfkavUvJLRRATc5HQhOkEZDg0n4NWxBs5wEeaO5AqPCssqTPFoiIwKK0D57WlbLW8ifpT2gzbfXKVMdoyII1yiqyDkjwyZmK5THZSiEyXljK+zj2+jpZLtrHkjFYukvq42+V/25mL5N/XSKy971L2nHKpasI27luH1jGTPtbHXlMxaLEkT9Y9AUPIckKY8XJvwb9Ou0f/qPKbOJK12vZ1Rlwq/HzeyGC0fwfbiGysN1hI5WkcOhN9xdIUJHqn3e7yCfdP4Lc2Ea+RqWQqv4GDc1/uMfmDwspPtJV/UiZ2oXkRGfA/hWagPFmFBTiyU7IQjtnBaJkIR2llpZ+L3t1CnBn5jvhxtEwW4jWhJXtW+Ul4w1nj2DE6tU6tetZBkCpWyUORiKhYDFJJfqJZ3Yx2ASRkV6IzPe7EttDJoqPWLDjqaENKZh2XfZ75zqZoWrqWu5iKC7HuVlup60xFIipbiJ6YeG9cr9PJqNQtNLItxxaVb0stOL1tB1dWZ1XKP55z8z0PQ49jqcbPmbu4vBvIaHMFQ2ZiJNDqIjYtPr5IhOSj4h2KRHAf5oZeF8FK93ba/dWAmzdwqTCgsQDawLoVe3jd4e+3/NxDPAbKyvl6xsnlV8pi97qPMcI9HCjto4Z5i7IIGBhM6TABao/bO257UBu+nOvKMhytR5q/um+zTjUptxAP4dcbbUv0oife3l7v55am5Bx4/UgKDDq3Ci96qmNmXdoKAtYIhvJnDONhYl3afG+hBXOjeL+Zsy5WpfjU3LSp2PVo0xw+tuaNu9Xm0bdl/m6x5FlFqlyv2hmmoZ1RiZIpVovqjxtarZkhf9q82uZjk8o7oK6NwFg9lRnPwZBqTtsTSP5fkvIRyZo7sQVAri3ckJW5xIeiKW8uqDyqlOCgnqgPAVX2jOFVnKfjEev+cnXIEXmd6sIxf6UDJjcptnGg7RhVfcPMiTiXJmEaT8JhUz5hDnXbaeiyg8oF4npUGdrMtUK+EpWHvNAzF1lVIx2ivT3pw00fDt7eXh8mMLi4fgPD89bb22u46cfTBsNLOPqhe3TSegHluU475fkvzVkgD8x2/DVQyJSUC6xa1bTBdEJw3O7uXd1sNmtjWG5rO+7Utq7zy6B/8dvwosU2PDtIX2xxIICV6bRa394WUY+7x6ftk/YR23LHLlE14omfIHujzG5FNvT2P/iIqmvV01ffMQVKxbEHsBa12tyJ6XGc+nIZhrQtxYnfYUry8BBUZ6tIa90ZJWLCAta7E4vFAzr6YIvlkl9/qcgGuUzEFG1gbhTPVYdmoXrkRi76EZXWNUfM24sq9vWdiYR1JVpwazP+m3ubGnt1OeT2+FB/CpZh+hAWZzw840z0xEfxUYSEQ32EiYffL0SBalzhmPdHv9z2sG7CGwF6DAJUP3BmqyU1b0S5q0UxGf7LqT1p8pJ5+Y7mr9bb48qzBuvuHXfztfMnwF8lLX57
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 credential offer</h1>

<MethodEndpoint method={"post"} path={"/v2/config/digital-wallet/openid/sdjwt/credential-offer"}></MethodEndpoint>



Creates an OID4VCI Credential Offer that can be presented to a holder via QR code or deep link.

## 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={"credentialIssuer"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The credential issuer url from which the credential to be requested"}}></SchemaItem><SchemaItem collapsible={false} name={"version"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** [`draft_11`, `draft_13`]"} schema={{"type":"string","description":"Specifies the version of oid4vci draft specification","enum":["draft_11","draft_13"]}}></SchemaItem><SchemaItem collapsible={false} name={"credentials"} required={false} schemaName={"string[]"} qualifierMessage={undefined} schema={{"type":"array","items":{"type":"string"},"description":"The object contains the data related to a certain credential type the Wallet MAY request"}}></SchemaItem><SchemaItem collapsible={false} name={"credentialConfigurationIds"} required={false} schemaName={"object[]"} qualifierMessage={undefined} schema={{"type":"array","items":{"type":"object"},"description":"Array of unique strings that each identify one of the keys in the name/value pairs stored in the credential_configurations_supported Credential Issuer metadata"}}></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={"credentialOffer"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Defines the credential offer with the Credential Offer parameters"}}></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"credentialOffer\": \"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>
      