> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sphyre.tech/llms.txt
> Use this file to discover all available pages before exploring further.

# POST /api/verifier/requests

> Create a verifier presentation request

```http theme={null}
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`

```json theme={null}
{
  "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": "{...}"
}
```

The verifier can poll `GET /api/verifier/requests/:id` or list submitted presentations with `GET /api/verifier/:did/presentations`.
