OID4VP
Receive a wallet presentation
POST
/v1/oid4vp/response/{sessionId}Public wallet callback. Accepts JSON or application/x-www-form-urlencoded direct_post; jar responses may carry an encrypted response field.
Backend integrationNo tenant API key is required for this public protocol operation.
Try itAvailable for creating, reading, and deleting verification sessions in Test. Other operations are reference-only; API-key protected routes require a tenant API key on your backend. Open a session request
Parameters
| Name | Location | Required | Schema | Description |
|---|---|---|---|---|
sessionId | path | Yes | string | Session ID |
Request bodyRequired
Request fields
vp_tokenobjectrequiredDCQL credential query id to one or more presentations
statestringrequired
View JSON schema
{
"type": "object",
"required": [
"vp_token",
"state"
],
"properties": {
"vp_token": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "string"
}
},
"description": "DCQL credential query id to one or more presentations"
},
"state": {
"type": "string"
}
},
"additionalProperties": false
}Raw JSON schema
{
"type": "object",
"required": [
"vp_token",
"state"
],
"properties": {
"vp_token": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "string"
}
},
"description": "DCQL credential query id to one or more presentations"
},
"state": {
"type": "string"
}
},
"additionalProperties": false
}Responses
Response 200
Wallet response processed; read the terminal verification outcome from the session
application/json · Response schema
statusanyrequiredredirect_uristring · urioptionalPresent only when the session configured a same-device callback. Its fragment contains a one-time response_code and session_id.
browserstringoptionalOptional AltID browser-return hint, present only with redirect_uri when configured at session creation. It is not a verification result.
Allowed valuesappsafaribraveduckchromeedgefirefoxoperasamsung
View JSON schema
{
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"const": "ok"
},
"redirect_uri": {
"type": "string",
"format": "uri",
"description": "Present only when the session configured a same-device callback. Its fragment contains a one-time response_code and session_id."
},
"browser": {
"type": "string",
"enum": [
"app",
"safari",
"brave",
"duck",
"chrome",
"edge",
"firefox",
"opera",
"samsung"
],
"description": "Optional AltID browser-return hint, present only with redirect_uri when configured at session creation. It is not a verification result."
}
}
}Response 400
Presentation rejected
application/json · Response schema
errorstringrequiredmessagestringrequired
View JSON schema
{
"type": "object",
"required": [
"error",
"message"
],
"properties": {
"error": {
"type": "string"
},
"message": {
"type": "string"
}
}
}Response 409
Session is no longer pending
application/json · Response schema
errorstringrequiredmessagestringrequired
View JSON schema
{
"type": "object",
"required": [
"error",
"message"
],
"properties": {
"error": {
"type": "string"
},
"message": {
"type": "string"
}
}
}Response 413
Payload too large
application/json · Response schema
errorstringrequiredmessagestringrequired
View JSON schema
{
"type": "object",
"required": [
"error",
"message"
],
"properties": {
"error": {
"type": "string"
},
"message": {
"type": "string"
}
}
}Response 429
Rate limit exceeded
application/json · Response schema
errorstringrequiredmessagestringrequired
View JSON schema
{
"type": "object",
"required": [
"error",
"message"
],
"properties": {
"error": {
"type": "string"
},
"message": {
"type": "string"
}
}
}