OpenID4VCI Protocol

Create a credential offer

Create an OpenID4VCI credential offer using the pre-authorized_code flow. Authenticated with the tenant API key (Bearer). The issuer picks a credential template (scoped to the caller's tenant), embeds the claim values, and — by default — generates a 6-digit transaction code (PIN). Returns the offer identifier, the wallet deep-link URI, the issuer identifier, the pre-authorized code, the tx_code (if any), and the grants object the wallet uses to drive the token exchange. The offer expires 10 minutes after creation and is single-use.

post/v1/credential-offers

Request body

template_idstring uuid required

UUID of the credential template to issue from. Must belong to the caller's tenant and not be soft-deleted, else 404. Determines the schema (vct, attributes, selective-disclosure flags).

claimsobject

Claim name/value map to embed in the credential, keyed by the schema's attribute names. Defaults to {} if omitted. Values are stored on the offer and bound into the SD-JWT VC at issuance.

tx_codeboolean

Whether to require a transaction code (PIN) at token exchange. Defaults to true. When true, a random 6-digit numeric tx_code is generated and returned (deliver it to the holder out-of-band). When false, no tx_code is required and the response tx_code is an empty string.

Example request

{
  "template_id": "8f3b1c2d-4e5a-6b7c-8d9e-0f1a2b3c4d5e",
  "claims": {
    "member_id": "M-9042",
    "level": "premium"
  },
  "tx_code": true
}

Response

No response body

Changes