Oid4vci
Endpoints for creating and managing Open ID for verifiable credential issuance
This endpoint gets credential supported record(s).
The supported_cred_id you would like to filter by
The credential format you would like to filter by
The credential identifier you would like to filter by
Ok
Bad request
Internal server error
GET /api/v1/oid4vci/credentials-supported HTTP/1.1
Host:
x-api-key: YOUR_API_KEY
Accept: */*
[
{
"supported_cred_id": "dd6384eb-b0b8-4084-af3b-2ddc5668addd",
"wallet_id": "c286d1c7-c548-48d1-8580-76d3fe317bff",
"created_at": "2025-06-23T20:56:23.546Z",
"cryptographic_binding_methods_supported": null,
"cryptographic_suites_supported": null,
"display": null,
"format": "vc+sd-jwt",
"format_data": {
"vct": "ExampleIDCard",
"claims": {
"given_name": {
"mandatory": true,
"value_type": "string"
},
"family_name": {
"mandatory": true,
"value_type": "string"
},
"something_nested": {
"key1": {
"key2": {
"key3": {
"mandatory": true,
"value_type": "string"
}
}
}
},
"age_equal_or_over": {
"12": {
"mandatory": true,
"value_type": "boolean"
},
"14": {
"mandatory": true,
"value_type": "boolean"
},
"16": {
"mandatory": true,
"value_type": "boolean"
},
"18": {
"mandatory": true,
"value_type": "boolean"
},
"21": {
"mandatory": true,
"value_type": "boolean"
},
"65": {
"mandatory": true,
"value_type": "boolean"
}
}
},
"display": [
{
"name": "ID Card",
"locale": "en-US",
"text_color": "#FFFFFF",
"background_color": "#12107c"
}
],
"cryptographic_binding_methods_supported": [
"jwk"
]
},
"identifier": "IDCard",
"updated_at": "2025-06-23T20:56:23.546Z",
"vc_additional_data": {
"sd_list": [
"/given_name",
"/family_name",
"/age_equal_or_over/12",
"/age_equal_or_over/14",
"/age_equal_or_over/16",
"/age_equal_or_over/18",
"/age_equal_or_over/21",
"/age_equal_or_over/65"
]
}
},
{
"supported_cred_id": "e18dcae7-75c7-4ee1-b818-0b0b2e83ef74",
"wallet_id": "c286d1c7-c548-48d1-8580-76d3fe317bff",
"created_at": "2025-06-23T20:56:28.234Z",
"cryptographic_binding_methods_supported": [
"did"
],
"cryptographic_suites_supported": [
"ES256"
],
"display": [
{
"logo": {
"url": "https://w3c-ccg.github.io/vc-ed/plugfest-1-2022/images/JFF_LogoLockup.png",
"alt_text": "a square logo of a university"
},
"name": "Email Credential",
"locale": "en-US",
"text_color": "#FFFFFF",
"background_color": "#12107c"
}
],
"format": "jwt_vc_json",
"format_data": {
"order": null,
"types": [
"VerifiableCredential",
"EmailCredential"
],
"context": [
"https://www.w3.org/2018/credentials/v1",
"https://www.w3.org/2018/credentials/examples/v1"
],
"credentialSubject": {
"domain": {},
"address": {},
"local_part": {},
"verified_at": {}
}
},
"identifier": "Email - JWT VC",
"updated_at": "2025-06-23T20:56:28.234Z",
"vc_additional_data": {
"type": [
"VerifiableCredential",
"EmailCredential"
],
"@context": [
"https://www.w3.org/2018/credentials/v1",
"https://www.w3.org/2018/credentials/examples/v1"
]
}
}
]
This endpoint creates a credential supported record.
Ok
Bad request
Internal server error
POST /api/v1/oid4vci/credentials-supported HTTP/1.1
Host:
x-api-key: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 943
{
"format": "vc+sd-jwt",
"id": "IDCard",
"format_data": {
"cryptographic_binding_methods_supported": [
"jwk"
],
"display": [
{
"name": "ID Card",
"locale": "en-US",
"background_color": "#12107c",
"text_color": "#FFFFFF"
}
],
"vct": "ExampleIDCard",
"claims": {
"given_name": {
"mandatory": true,
"value_type": "string"
},
"family_name": {
"mandatory": true,
"value_type": "string"
},
"something_nested": {
"key1": {
"key2": {
"key3": {
"mandatory": true,
"value_type": "string"
}
}
}
},
"age_equal_or_over": {
"12": {
"mandatory": true,
"value_type": "boolean"
},
"14": {
"mandatory": true,
"value_type": "boolean"
},
"16": {
"mandatory": true,
"value_type": "boolean"
},
"18": {
"mandatory": true,
"value_type": "boolean"
},
"21": {
"mandatory": true,
"value_type": "boolean"
},
"65": {
"mandatory": true,
"value_type": "boolean"
}
}
}
},
"vc_additional_data": {
"sd_list": [
"/given_name",
"/family_name",
"/age_equal_or_over/12",
"/age_equal_or_over/14",
"/age_equal_or_over/16",
"/age_equal_or_over/18",
"/age_equal_or_over/21",
"/age_equal_or_over/65"
]
}
}
{
"created_at": "2025-06-23T20:56:23.546Z",
"updated_at": "2025-06-23T20:56:23.546Z",
"supported_cred_id": "dd6384eb-b0b8-4084-af3b-2ddc5668addd",
"format": "vc+sd-jwt",
"identifier": "IDCard",
"format_data": {
"vct": "ExampleIDCard",
"claims": {
"given_name": {
"mandatory": true,
"value_type": "string"
},
"family_name": {
"mandatory": true,
"value_type": "string"
},
"something_nested": {
"key1": {
"key2": {
"key3": {
"mandatory": true,
"value_type": "string"
}
}
}
},
"age_equal_or_over": {
"12": {
"mandatory": true,
"value_type": "boolean"
},
"14": {
"mandatory": true,
"value_type": "boolean"
},
"16": {
"mandatory": true,
"value_type": "boolean"
},
"18": {
"mandatory": true,
"value_type": "boolean"
},
"21": {
"mandatory": true,
"value_type": "boolean"
},
"65": {
"mandatory": true,
"value_type": "boolean"
}
}
},
"display": [
{
"name": "ID Card",
"locale": "en-US",
"text_color": "#FFFFFF",
"background_color": "#12107c"
}
],
"cryptographic_binding_methods_supported": [
"jwk"
]
},
"vc_additional_data": {
"sd_list": [
"/given_name",
"/family_name",
"/age_equal_or_over/12",
"/age_equal_or_over/14",
"/age_equal_or_over/16",
"/age_equal_or_over/18",
"/age_equal_or_over/21",
"/age_equal_or_over/65"
]
},
"wallet_id": "c286d1c7-c548-48d1-8580-76d3fe317bff",
"cryptographic_binding_methods_supported": null,
"cryptographic_suites_supported": null,
"display": null
}
This endpoint creates a JWT-VC credential supported record.
Ok
Bad request
Internal server error
POST /api/v1/oid4vci/credentials-supported/jwt HTTP/1.1
Host:
x-api-key: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 616
{
"cryptographic_binding_methods_supported": [
"did"
],
"cryptographic_suites_supported": [
"ES256"
],
"display": [
{
"name": "Email Credential",
"locale": "en-US",
"logo": {
"url": "https://w3c-ccg.github.io/vc-ed/plugfest-1-2022/images/JFF_LogoLockup.png",
"alt_text": "a square logo of a university"
},
"background_color": "#12107c",
"text_color": "#FFFFFF"
}
],
"format": "jwt_vc_json",
"credentialSubject": {
"verified_at": {},
"local_part": {},
"address": {},
"domain": {}
},
"type": [
"VerifiableCredential",
"EmailCredential"
],
"id": "Email - JWT VC",
"@context": [
"https://www.w3.org/2018/credentials/v1",
"https://www.w3.org/2018/credentials/examples/v1"
]
}
{
"created_at": "2025-06-23T20:56:28.234Z",
"updated_at": "2025-06-23T20:56:28.234Z",
"supported_cred_id": "e18dcae7-75c7-4ee1-b818-0b0b2e83ef74",
"format": "jwt_vc_json",
"identifier": "Email - JWT VC",
"cryptographic_binding_methods_supported": [
"did"
],
"cryptographic_suites_supported": [
"ES256"
],
"display": [
{
"logo": {
"url": "https://w3c-ccg.github.io/vc-ed/plugfest-1-2022/images/JFF_LogoLockup.png",
"alt_text": "a square logo of a university"
},
"name": "Email Credential",
"locale": "en-US",
"text_color": "#FFFFFF",
"background_color": "#12107c"
}
],
"format_data": {
"order": null,
"types": [
"VerifiableCredential",
"EmailCredential"
],
"context": [
"https://www.w3.org/2018/credentials/v1",
"https://www.w3.org/2018/credentials/examples/v1"
],
"credentialSubject": {
"domain": {},
"address": {},
"local_part": {},
"verified_at": {}
}
},
"vc_additional_data": {
"type": [
"VerifiableCredential",
"EmailCredential"
],
"@context": [
"https://www.w3.org/2018/credentials/v1",
"https://www.w3.org/2018/credentials/examples/v1"
]
},
"wallet_id": "c286d1c7-c548-48d1-8580-76d3fe317bff"
}
This endpoint creates SD-JWT a credential supported record.
Ok
Bad request
Internal server error
POST /api/v1/oid4vci/credentials-supported/sd-jwt HTTP/1.1
Host:
x-api-key: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 747
{
"format": "vc+sd-jwt",
"id": "test",
"vct": "testCard",
"claims": {
"given_name": {
"mandatory": true,
"value_type": "string"
},
"family_name": {
"mandatory": true,
"value_type": "string"
},
"something_nested": {
"key1": {
"key2": {
"key3": {
"mandatory": true,
"value_type": "string"
}
}
}
},
"age_equal_or_over": {
"12": {
"mandatory": true,
"value_type": "boolean"
},
"14": {
"mandatory": true,
"value_type": "boolean"
},
"16": {
"mandatory": true,
"value_type": "boolean"
},
"18": {
"mandatory": true,
"value_type": "boolean"
},
"21": {
"mandatory": true,
"value_type": "boolean"
},
"65": {
"mandatory": true,
"value_type": "boolean"
}
}
},
"sd_list": [
"/given_name",
"/family_name",
"/age_equal_or_over/12",
"/age_equal_or_over/14",
"/age_equal_or_over/16",
"/age_equal_or_over/18",
"/age_equal_or_over/21",
"/age_equal_or_over/65"
]
}
{
"created_at": "2025-06-23T22:37:10.953Z",
"updated_at": "2025-06-23T22:37:10.953Z",
"supported_cred_id": "3f3427bd-381d-466a-b395-6ed104937ac3",
"format": "vc+sd-jwt",
"identifier": "test",
"format_data": {
"vct": "testCard",
"order": null,
"claims": {
"given_name": {
"mandatory": true,
"value_type": "string"
},
"family_name": {
"mandatory": true,
"value_type": "string"
},
"something_nested": {
"key1": {
"key2": {
"key3": {
"mandatory": true,
"value_type": "string"
}
}
}
},
"age_equal_or_over": {
"12": {
"mandatory": true,
"value_type": "boolean"
},
"14": {
"mandatory": true,
"value_type": "boolean"
},
"16": {
"mandatory": true,
"value_type": "boolean"
},
"18": {
"mandatory": true,
"value_type": "boolean"
},
"21": {
"mandatory": true,
"value_type": "boolean"
},
"65": {
"mandatory": true,
"value_type": "boolean"
}
}
}
},
"vc_additional_data": {
"sd_list": [
"/given_name",
"/family_name",
"/age_equal_or_over/12",
"/age_equal_or_over/14",
"/age_equal_or_over/16",
"/age_equal_or_over/18",
"/age_equal_or_over/21",
"/age_equal_or_over/65"
]
},
"wallet_id": "c286d1c7-c548-48d1-8580-76d3fe317bff",
"cryptographic_binding_methods_supported": null,
"cryptographic_suites_supported": null,
"display": null
}
This endpoint gets a credential supported record by supported_cred_id.
The supported_cred_id you would like to get
Ok
Bad request
Not Found
Internal server error
GET /api/v1/oid4vci/credentials-supported/{supported_cred_id} HTTP/1.1
Host:
x-api-key: YOUR_API_KEY
Accept: */*
{
"supported_cred_id": "dd6384eb-b0b8-4084-af3b-2ddc5668addd",
"wallet_id": "c286d1c7-c548-48d1-8580-76d3fe317bff",
"created_at": "2025-06-23T20:56:23.546Z",
"cryptographic_binding_methods_supported": null,
"cryptographic_suites_supported": null,
"display": null,
"format": "vc+sd-jwt",
"format_data": {
"vct": "ExampleIDCard",
"claims": {
"given_name": {
"mandatory": true,
"value_type": "string"
},
"family_name": {
"mandatory": true,
"value_type": "string"
},
"something_nested": {
"key1": {
"key2": {
"key3": {
"mandatory": true,
"value_type": "string"
}
}
}
},
"age_equal_or_over": {
"12": {
"mandatory": true,
"value_type": "boolean"
},
"14": {
"mandatory": true,
"value_type": "boolean"
},
"16": {
"mandatory": true,
"value_type": "boolean"
},
"18": {
"mandatory": true,
"value_type": "boolean"
},
"21": {
"mandatory": true,
"value_type": "boolean"
},
"65": {
"mandatory": true,
"value_type": "boolean"
}
}
},
"display": [
{
"name": "ID Card",
"locale": "en-US",
"text_color": "#FFFFFF",
"background_color": "#12107c"
}
],
"cryptographic_binding_methods_supported": [
"jwk"
]
},
"identifier": "IDCard",
"updated_at": "2025-06-23T20:56:23.546Z",
"vc_additional_data": {
"sd_list": [
"/given_name",
"/family_name",
"/age_equal_or_over/12",
"/age_equal_or_over/14",
"/age_equal_or_over/16",
"/age_equal_or_over/18",
"/age_equal_or_over/21",
"/age_equal_or_over/65"
]
}
}
This endpoint deletes a credential supported record.
The supported_cred_id you would like to delete
Ok
No content
Bad request
Internal server error
DELETE /api/v1/oid4vci/credentials-supported/{supported_cred_id} HTTP/1.1
Host:
x-api-key: YOUR_API_KEY
Accept: */*
No content
This endpoint gets credential exchange record(s).
The exchange_id you would like to filter by
The state you would like to filter by.
The supported_cred_id you would like to filter by
Ok
Bad request
Internal server error
GET /api/v1/oid4vci/exchanges HTTP/1.1
Host:
x-api-key: YOUR_API_KEY
Accept: */*
[
{
"exchange_id": "253eb7bc-5060-45e4-bc06-fb006d1654ce",
"supported_cred_id": "dd6384eb-b0b8-4084-af3b-2ddc5668addd",
"wallet_id": "c286d1c7-c548-48d1-8580-76d3fe317bff",
"state": "offer",
"pin": null,
"credential_subject": {},
"verification_method": "did:sov:Qi5LPB4mtKfbhQqC2f6yPj#key-1",
"issuer_id": "did:sov:Qi5LPB4mtKfbhQqC2f6yPj",
"code": "iQ7DWmf2vjogMtQ_bdrDQg",
"nonce": null,
"token": null,
"created_at": "2025-06-23T21:04:42.554Z",
"updated_at": "2025-06-23T21:04:42.571Z"
},
{
"exchange_id": "5d78070b-527a-4267-afc4-c4cb385ed6fb",
"supported_cred_id": "e18dcae7-75c7-4ee1-b818-0b0b2e83ef74",
"wallet_id": "c286d1c7-c548-48d1-8580-76d3fe317bff",
"state": "offer",
"pin": null,
"credential_subject": {},
"verification_method": "did:sov:Qi5LPB4mtKfbhQqC2f6yPj#key-1",
"issuer_id": "did:sov:Qi5LPB4mtKfbhQqC2f6yPj",
"code": "QYU7Io9wO13VGt7fshoMQg",
"nonce": null,
"token": null,
"created_at": "2025-06-23T21:05:07.459Z",
"updated_at": "2025-06-23T21:05:07.488Z"
}
]
This endpoint gets a credential exchange record by exchange_id.
The exchange_id you would like to get
Ok
Bad request
Not Found
Internal server error
GET /api/v1/oid4vci/exchanges/{exchange_id} HTTP/1.1
Host:
x-api-key: YOUR_API_KEY
Accept: */*
{
"exchange_id": "253eb7bc-5060-45e4-bc06-fb006d1654ce",
"supported_cred_id": "dd6384eb-b0b8-4084-af3b-2ddc5668addd",
"wallet_id": "c286d1c7-c548-48d1-8580-76d3fe317bff",
"state": "offer",
"pin": null,
"credential_subject": {},
"verification_method": "did:sov:Qi5LPB4mtKfbhQqC2f6yPj#key-1",
"issuer_id": "did:sov:Qi5LPB4mtKfbhQqC2f6yPj",
"code": "iQ7DWmf2vjogMtQ_bdrDQg",
"nonce": null,
"token": null,
"created_at": "2025-06-23T21:04:42.554Z",
"updated_at": "2025-06-23T21:04:42.571Z"
}
This endpoint deletes a credential exchange record.
The exchange_id you would like to delete
Ok
No content
Bad request
Not found
Internal server error
DELETE /api/v1/oid4vci/exchanges/{exchange_id} HTTP/1.1
Host:
x-api-key: YOUR_API_KEY
Accept: */*
No content
This endpoint creates a credential exchange and gets an offer.
Ok
Bad request
Internal server error
POST /api/v1/oid4vci/issue HTTP/1.1
Host:
x-api-key: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 305
{
"supported_cred_id": "dd6384eb-b0b8-4084-af3b-2ddc5668addd",
"credential_subject": {
"given_name": "Caleb",
"family_name": "Bob",
"something_nested": {
"key1": {
"key2": {
"key3": "something nested"
}
}
},
"source_document_type": "id_card",
"age_equal_or_over": {
"12": true,
"14": true,
"16": true,
"18": true,
"21": true,
"65": false
}
}
}
{
"offer": {
"credential_issuer": "https://example/oid4vc/tenant/c286d1c7-c548-48d1-8580-76d3fe317bff",
"credentials": [
"IDCard"
],
"grants": {
"urn:ietf:params:oauth:grant-type:pre-authorized_code": {
"pre-authorized_code": "iQ7DWmf2vjogMtQ_bdrDQg",
"user_pin_required": false
}
}
},
"credential_offer": "openid-credential-offer://?credential_offer=%7B%22credential_issuer%22%3A%20%22https%3A//example/oid4vc/tenant/c286d1c7-c548-48d1-8580-76d3fe317bff%22%2C%20%22credentials%22%3A%20%5B%22IDCard%22%5D%2C%20%22grants%22%3A%20%7B%22urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Apre-authorized_code%22%3A%20%7B%22pre-authorized_code%22%3A%20%22iQ7DWmf2vjogMtQ_bdrDQg%22%2C%20%22user_pin_required%22%3A%20false%7D%7D%7D",
"exchange": {
"state": "created",
"created_at": "2025-06-23T21:04:42.554462Z",
"updated_at": "2025-06-23T21:04:42.554462Z",
"exchange_id": "253eb7bc-5060-45e4-bc06-fb006d1654ce",
"supported_cred_id": "dd6384eb-b0b8-4084-af3b-2ddc5668addd",
"credential_subject": {
"given_name": "Caleb",
"family_name": "Bob",
"something_nested": {
"key1": {
"key2": {
"key3": "something nested"
}
}
},
"source_document_type": "id_card",
"age_equal_or_over": {
"12": true,
"14": true,
"16": true,
"18": true,
"21": true,
"65": false
}
},
"verification_method": "did:sov:Qi5LPB4mtKfbhQqC2f6yPj#key-1",
"issuer_id": "did:sov:Qi5LPB4mtKfbhQqC2f6yPj"
}
}
Was this helpful?