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

# Create a presentation request

> Create a presentation request from a preset.

## Overview

Once you've picked a preset (see [Browse presentation presets](/products/didx-me/guides/verifiers/browse-presentation-presets)), create the request by passing its id. The response carries the URIs you'll deliver to the user.

This guide uses **`didx:basic-identity-request`**, which asks for `firstName` and `lastName` from a basic identity credential, accepting issuers such as the South African Reserve Bank and the Department of Home Affairs.

<Tip>
  Need to verify something no preset covers? See [Custom presentation
  template](/products/didx-me/guides/verifiers/create-presentation-template). For everything else, use a preset.
</Tip>

## Endpoint

```
POST https://test.didxtech.com/me-creds/api/v1/presentations/request
```

## Request

```bash theme={null}
curl -X POST "https://test.didxtech.com/me-creds/api/v1/presentations/request" \
  -H "Authorization: Bearer <access_token>" \
  -H "Content-Type: application/json" \
  -d '{
    "presetId": "didx:basic-identity-request"
  }'
```

### Request body

| Field      | Type   | Description                                                                                                                                   |
| ---------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------- |
| `presetId` | string | The id of the preset you're verifying against (e.g. `didx:basic-identity-request`). Browse available presets at `GET /presets/presentations`. |

<Note>
  Pass either `presetId` *or* `presentationTemplateId`, not both. Most integrations only ever use `presetId`. The
  template path is for [custom presentation shapes](/products/didx-me/guides/verifiers/create-presentation-template).
</Note>

## Response

**HTTP 200 OK**

```json theme={null}
{
  "data": {
    "id": "cmbhsgi6c00cls60120oyb8tl",
    "createdAt": "2025-06-04T10:12:20.101Z",
    "updatedAt": "2025-06-04T10:12:20.101Z",
    "status": "requested",
    "error": null,
    "expiresAt": "2025-07-04T10:12:20.088Z",
    "authorizationRequestUri": "https://test.didxtech.com/invitation?request_uri=...",
    "authorizationRequestQrUri": "https://test.didxtech.com/invitation?request_uri=...&qr=true"
  }
}
```

### Key response fields

| Field                       | Description                                                             |
| --------------------------- | ----------------------------------------------------------------------- |
| `id`                        | Unique presentation request identifier. Save this for later steps       |
| `status`                    | `requested` initially. Transitions to `verified` once the user responds |
| `authorizationRequestUri`   | Link the user can paste directly into their wallet                      |
| `authorizationRequestQrUri` | QR-optimised version for scanning with a wallet app                     |
| `expiresAt`                 | Request expires after 30 days                                           |

## Deliver the request

Save the `id` so you can read the user's response later, then deliver the request to the user. Two options:

1. By email, username, or other identifier: [Deliver via identifier](/products/didx-me/guides/verifiers/deliver/via-identifier).
2. As a QR code or deeplink rendered in your own UI: [Deliver out of band](/products/didx-me/guides/verifiers/deliver/out-of-band).
