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: proven-4-2-test.proven.indicio.tech
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: proven-4-2-test.proven.indicio.tech
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: proven-4-2-test.proven.indicio.tech
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: proven-4-2-test.proven.indicio.tech
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: proven-4-2-test.proven.indicio.tech
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: proven-4-2-test.proven.indicio.tech
x-api-key: YOUR_API_KEY
Accept: */*
No content
List of mDoc credential type configurations.
Bad request
Missing or invalid API key
API key lacks required scope
Internal server error
GET /api/v1/oid4vci/credentials-supported/mdoc HTTP/1.1
Host: proven-4-2-test.proven.indicio.tech
x-api-key: YOUR_API_KEY
Accept: */*
[
{
"config_id": "c4d8f7f2-f8d0-4d0b-93d0-9f9f31a5c003",
"wallet_id": "wallet-123",
"doctype": "org.iso.18013.5.1.mDL",
"supported_cred_id": "9fd5ef9d-b8b8-4f52-b6a9-95b9ce4f6f8a",
"format": "mso_mdoc",
"label": "Mobile Driver's License",
"description": "ISO 18013-5 Mobile Driver's License",
"created_at": "2026-03-10T18:30:00.000Z",
"updated_at": "2026-03-10T18:30:00.000Z"
}
]mDoc type registered.
Bad request
Missing or invalid API key
API key lacks required scope
Internal server error
POST /api/v1/oid4vci/credentials-supported/mdoc HTTP/1.1
Host: proven-4-2-test.proven.indicio.tech
x-api-key: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 121
{
"doctype": "org.iso.18013.5.1.mDL",
"label": "Mobile Driver's License",
"description": "ISO 18013-5 Mobile Driver's License"
}{
"agentRecord": {
"supported_cred_id": "9fd5ef9d-b8b8-4f52-b6a9-95b9ce4f6f8a",
"identifier": "org.iso.18013.5.1.mDL",
"format": "mso_mdoc",
"display": [
{
"name": "org.iso.18013.5.1.mDL"
}
],
"format_data": {
"doctype": "org.iso.18013.5.1.mDL",
"claims": {}
}
},
"dbConfig": {
"config_id": "c4d8f7f2-f8d0-4d0b-93d0-9f9f31a5c003",
"wallet_id": "wallet-123",
"doctype": "org.iso.18013.5.1.mDL",
"supported_cred_id": "9fd5ef9d-b8b8-4f52-b6a9-95b9ce4f6f8a",
"format": "mso_mdoc",
"label": "Mobile Driver's License",
"description": "ISO 18013-5 Mobile Driver's License",
"created_at": "2026-03-10T18:30:00.000Z",
"updated_at": "2026-03-10T18:30:00.000Z"
}
}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
Optional mDoc doctype filter.
Optional mDoc connection_id filter.
Optional mDoc config_id filter.
Ok
Bad request
Internal server error
GET /api/v1/oid4vci/exchanges HTTP/1.1
Host: proven-4-2-test.proven.indicio.tech
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: proven-4-2-test.proven.indicio.tech
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: proven-4-2-test.proven.indicio.tech
x-api-key: YOUR_API_KEY
Accept: */*
No content
This endpoint creates a credential exchange and gets an offer.
Ok
A URL encoded OpenID credential offer URI (openid-credential-offer://)
Bad request
Internal server error
POST /api/v1/oid4vci/issue HTTP/1.1
Host: proven-4-2-test.proven.indicio.tech
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"
}
}mDoc issuer keys provisioned.
Bad request
Missing or invalid API key
API key lacks required scope
Internal server error
POST /api/v1/oid4vci/setup/mdoc HTTP/1.1
Host: proven-4-2-test.proven.indicio.tech
x-api-key: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 15
{
"force": false
}{
"key_id": "8d3e8f18-5e7d-4f1a-a72b-1db2f1d0c001",
"cert_id": "6af84a3c-b6e9-4b1c-844a-6ce6a1f2d002",
"message": "mDoc issuer keys provisioned successfully."
}mDoc issuer readiness status.
Missing or invalid API key
API key lacks required scope
Internal server error
GET /api/v1/oid4vci/status/mdoc HTTP/1.1
Host: proven-4-2-test.proven.indicio.tech
x-api-key: YOUR_API_KEY
Accept: */*
{
"keys": [
{
"key_id": "8d3e8f18-5e7d-4f1a-a72b-1db2f1d0c001",
"cert_id": "6af84a3c-b6e9-4b1c-844a-6ce6a1f2d002"
}
],
"defaultCertificate": {
"cert_id": "6af84a3c-b6e9-4b1c-844a-6ce6a1f2d002",
"key_id": "8d3e8f18-5e7d-4f1a-a72b-1db2f1d0c001",
"subject_dn": "CN=Proven mDoc Issuer",
"issuer_dn": "CN=Proven mDoc Issuer"
},
"trustAnchors": []
}Last updated