Oid4vci

Endpoints for creating and managing Open ID for verifiable credential issuance

Get credential supported record(s).

get

This endpoint gets credential supported record(s).

Authorizations
Query parameters
supported_cred_idstringOptional

The supported_cred_id you would like to filter by

formatstringOptional

The credential format you would like to filter by

identifierstringOptional

The credential identifier you would like to filter by

Responses
200
Ok
application/json
get
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"
      ]
    }
  }
]

Create a credential supported record.

post

This endpoint creates a credential supported record.

Authorizations
Body
formatstringOptional
idstringOptional
cryptographic_binding_methods_supportedstring[]Optional
cryptographic_suites_supportedstring[]Optional
displayobject[]Optional
format_dataobjectOptional
vc_additional_dataobjectOptional
Responses
200
Ok
application/json
post
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
}

Create a JWT-VC credential supported record.

post

This endpoint creates a JWT-VC credential supported record.

Authorizations
Body
@contextobject[]Optional
formatstringOptional
idstringOptional
typeanyOptional
credentialSubjectobjectOptional
cryptographic_binding_methods_supportedstring[]Optional
cryptographic_suites_supportedstring[]Optional
displayobject[]Optional
orderstring[]Optional
Responses
200
Ok
application/json
post
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"
}

Create a SD-JWT credential supported record.

post

This endpoint creates SD-JWT a credential supported record.

Authorizations
Body
formatstringOptional
idstringOptional
claimsobjectOptional
cryptographic_binding_methods_supportedstring[]Optional
cryptographic_suites_supportedstring[]Optional
displayobject[]Optional
orderstring[]Optional
sd_liststring[]Optional
vctstringOptional
Responses
200
Ok
application/json
post
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
}

Gets a credential supported record by supported_cred_id.

get

This endpoint gets a credential supported record by supported_cred_id.

Authorizations
Path parameters
supported_cred_idstringRequired

The supported_cred_id you would like to get

Responses
200
Ok
application/json
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"
    ]
  }
}

Delete a credential supported record.

delete

This endpoint deletes a credential supported record.

Authorizations
Path parameters
supported_cred_idstringRequired

The supported_cred_id you would like to delete

Responses
200
Ok
delete
DELETE /api/v1/oid4vci/credentials-supported/{supported_cred_id} HTTP/1.1
Host: 
x-api-key: YOUR_API_KEY
Accept: */*

No content

Get credential exchange record(s).

get

This endpoint gets credential exchange record(s).

Authorizations
Query parameters
exchange_idstringOptional

The exchange_id you would like to filter by

statestringOptional

The state you would like to filter by.

supported_cred_idstringOptional

The supported_cred_id you would like to filter by

Responses
200
Ok
application/json
get
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"
  }
]

Get a credential exchange record by exchange_id.

get

This endpoint gets a credential exchange record by exchange_id.

Authorizations
Path parameters
exchange_idstringRequired

The exchange_id you would like to get

Responses
200
Ok
application/json
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"
}

Delete a credential exchange record.

delete

This endpoint deletes a credential exchange record.

Authorizations
Path parameters
exchange_idstringRequired

The exchange_id you would like to delete

Responses
200
Ok
delete
DELETE /api/v1/oid4vci/exchanges/{exchange_id} HTTP/1.1
Host: 
x-api-key: YOUR_API_KEY
Accept: */*

No content

Creates a credential exchange, and gets an offer.

post

This endpoint creates a credential exchange and gets an offer.

Authorizations
Body
credential_subjectobjectOptional
supported_cred_idstringOptional
didstringOptional
verification_methodstringOptional
Responses
200
Ok
application/json
post
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?