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
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.
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.
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.
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
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
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
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
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
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.
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?