POST /api/verifier/requests HTTP/1.1
Authorization: Bearer <jwt>
Content-Type: application/json
{
"verifier_did": "did:alyra:verifier...",
"presentation_type": "identity_verification",
"required_credentials": [
{
"credential_type": "NationalID",
"issuer_did": "did:alyra:issuer...",
"required_attributes": ["full_name", "date_of_birth"]
}
],
"purpose": "Age and identity verification",
"callback_url": "https://verifier.example.com/callback",
"expires_at": "2026-06-27T01:00:00Z",
"required_predicates": [
{
"attribute": "age",
"operator": ">=",
"value": 18
}
]
}
Body
| Field | Type | Required | Description |
|---|---|---|---|
verifier_did | string | Yes | DID of the verifier creating the request. |
presentation_type | string | Yes | Request category. |
required_credentials | array | Yes | Credential requirements the holder must satisfy. |
purpose | string | Yes | Purpose shown to the holder. |
callback_url | string | No | Optional callback target. |
expires_at | string | No | ISO 8601 expiration timestamp. |
required_predicates | array | No | Predicate requirements for proof-based verification. |
Response
201 Created
{
"success": true,
"message": "Presentation request created successfully",
"request": {
"id": "request-uuid",
"verifier_did": "did:alyra:verifier...",
"presentation_type": "identity_verification",
"required_credentials": [],
"purpose": "Age and identity verification",
"status": "pending",
"created_at": "2026-06-27T00:00:00Z",
"expires_at": "2026-06-27T01:00:00Z"
},
"qr_code_data": "{...}"
}
GET /api/verifier/requests/:id or list submitted presentations with GET /api/verifier/:did/presentations.