Preview release.These docs are a work in progress. Pages are still being written, links may break, and structure may shift without notice. Treat everything here as a draft and report issues onGitHub.
Issue a credential through OpenID4VCI
POST
/oid4vci/credential
const url = 'https://example.com/oid4vci/credential';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"credential_configuration_id":"example","credential_identifier":"example","format":"dc+sd-jwt","proof":{"jwt":"example","proof_type":"jwt"},"proofs":{"jwt":["example"]},"vct":"https://example.com"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://example.com/oid4vci/credential \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "credential_configuration_id": "example", "credential_identifier": "example", "format": "dc+sd-jwt", "proof": { "jwt": "example", "proof_type": "jwt" }, "proofs": { "jwt": [ "example" ] }, "vct": "https://example.com" }'Issues a dc+sd-jwt credential for an authenticated self-attestation principal. Error responses use the OpenID4VCI error envelope, not RFC 9457 Problem Details.
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”Media typeapplication/json
object
credential_configuration_id
string
credential_identifier
string
format
string
Example
dc+sd-jwtproof
object
jwt
required
string
proof_type
required
string
Example
jwtproofs
object
jwt
Array<string>
vct
string format: uri
Responses
Section titled “Responses”Credential response
Media typeapplication/json
object
c_nonce
string
c_nonce_expires_in
integer format: uint64
credential
required
string
credential_profile
string
credentials
Array<object>
object
credential
required
string
key
additional properties
any
format
string
Example
{ "c_nonce": "next-b64url-nonce", "c_nonce_expires_in": 300, "credential": "eyJhbGciOiJFZERTQSIsInR5cCI6ImRjK3NkLWp3dCJ9.payload.signature~disclosure~", "format": "dc+sd-jwt"}Invalid credential request, proof, or type
Media typeapplication/json
object
error
required
string
error_description
string
Example
{ "error": "invalid_proof", "error_description": "credential proof is invalid"}Invalid credential access token
Media typeapplication/json
object
error
required
string
error_description
string
Example
{ "error": "invalid_token", "error_description": "credential access token is invalid"}Credential request is denied
Media typeapplication/json
object
error
required
string
error_description
string
Example
{ "error": "access_denied", "error_description": "credential request is denied"}Credential request is rate limited
Media typeapplication/json
object
error
required
string
error_description
string
Example
{ "error": "temporarily_unavailable", "error_description": "credential request is rate limited"}OpenID4VCI issuer failed
Media typeapplication/json
object
error
required
string
error_description
string
Example
{ "error": "server_error", "error_description": "credential issuer failed"}