⚠️ This API is under active development, please contact us for help ⚠️
The Verifier uses this endpoint to ask the Holder’s Wallet for specific credentials, described via a Digital Credentials Query Language (DCQL) object.
Endpoint
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
response_type | string | ✅ | Must be vp_token. |
response_mode | string | ✅ | Must be one of: fragment or direct_post.jwt. |
client_id | string | ✅ | Identifier of the Verifier. Must be one of: • A pre-registered client ID, or • A hash-bound identifier of the form x509_hash:<base64url(SHA-256(DER(cert)))>.When using x509_hash, the request must be signed using the corresponding X.509 certificate. |
redirect_uri | string | ✅ | Callback endpoint for receiving the Verifiable Presentation response. Example: https://verifier.com/callback. |
dcql_query | object | ✅ | A JSON object describing the requested credentials, URL-encoded as a string. |
nonce | string | ✅ | Strong cryptographic random value to prevent replay attacks. Must be validated in the response. |
state | string | ❌ | Verifier-generated value to maintain application state. |
client_metadata | object | ❌ | Provides capabilities and cryptographic preferences of the Verifier’s client (e.g., supported algorithms and keys). Used by the Wallet to determine compatible formats and encryption methods for returning Verifiable Presentations |
- When using
client_idwithx509_hash:, either therequestparameter orrequest_urimust be provided, and the object must be signed by the private key corresponding to the X.509 certificate used to generate the hash. - When using
response_mode=direct_post.jwt, theredirect_uriis referred to asresponse_uri. - Only pre-registered clients may omit the signature requirement.
Example Request (with pre-registered client)
Example Request (with x509_hash client)
Example dcql_query object
Example client_metadata object
Response
Once the Wallet processes the request:-
If
response_mode=fragment:
The Wallet redirects the browser back toredirect_uri, withvp_tokenand other parameters in the URL fragment. -
If
response_mode=direct_post.jwt:
The Wallet sends a direct POST request to theredirect_uri, containing a signed JWT.
Authorization Request (request_uri)
Using a Request Object is RECOMMENDED to prevent large URL issues.
Example:
request_uri points to a public endpoint containing the signed Authorization Request Object. When present, the Wallet fetches this object directly.