> ## 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.

# Verify presentation

> Retrieve and validate the credential data shared by the user.

## Overview

After the user responds to the request, call this endpoint to check the state of the verification and retrieve the credential data the user shared.

<Info>
  **For real-time applications, prefer webhooks over calling this endpoint repeatedly.** Webhooks notify your
  application the moment a presentation transitions to `verified`, `rejected`, or `expired`, with no waiting and no
  wasted requests. See [Webhooks](/products/didx-me/guides/webhooks).
</Info>

## Endpoint

```
GET https://test.didxtech.com/me-creds/api/v1/presentations/{id}
```

## Request

```bash theme={null}
curl -X GET "https://test.didxtech.com/me-creds/api/v1/presentations/{presentation_id}" \
  -H "Authorization: Bearer <access_token>"
```

Replace `{presentation_id}` with the `id` returned by [Create a presentation request](/products/didx-me/guides/verifiers/create-presentation-request).

## 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": "verified",
    "error": null,
    "presentationTemplateId": "cma2nw2vd00sos601irn14wt1",
    "credentials": [
      {
        "isValid": true,
        "name": "Basic Identity",
        "type": "https://didx.co.za/vct/didx/basic-identity",
        "attributes": {
          "firstName": "John",
          "lastName": "Doe"
        },
        "issues": []
      }
    ],
    "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"
  }
}
```

### Status values

| Status      | Description                                          |
| ----------- | ---------------------------------------------------- |
| `requested` | Waiting for the user to respond                      |
| `verified`  | The user has presented their credential successfully |
| `rejected`  | The user declined the request                        |
| `expired`   | The request expired before the user responded        |

### Credential validation fields

| Field        | Description                                                                                 |
| ------------ | ------------------------------------------------------------------------------------------- |
| `isValid`    | `true` if the credential has been cryptographically verified and has not been tampered with |
| `attributes` | The verified data the user chose to share                                                   |
| `issues`     | Array of validation issues found. Empty if the credential is valid                          |

## Checking validity

Always check both `status === "verified"` and `credentials[].isValid === true` before trusting the presented data. The `isValid` field confirms that:

* The credential has not been tampered with.
* The issuer's decentralised identifier (DID) is legitimate.
* The credential is cryptographically authentic.

Use the `attributes` from the response to process the verified user data in your application.
