> ## Documentation Index
> Fetch the complete documentation index at: https://mintlify.com/credebl/platform/llms.txt
> Use this file to discover all available pages before exploring further.

# Credential verification

> Request and verify proof presentations from holders using connection-based and out-of-band proof request flows.

Verification allows a verifier organization to request that a holder prove they possess one or more credentials. CREDEBL supports two verification flows:

* **Connection-based proof request** — send a proof request to a holder over an established DIDComm connection.
* **Out-of-band (OOB) proof request** — generate a proof request invitation that a holder can accept without a pre-existing connection. Can also be sent via email.

Two request formats are supported:

* **Indy (AnonCreds)** — request specific attributes and/or predicates from AnonCreds credentials, optionally restricting by `credDefId` or `schemaId`.
* **Presentation Exchange (DIF PE)** — request credentials using a W3C Presentation Definition with `input_descriptors`.

## Base path

All endpoints are rooted at `/orgs/:orgId/proofs` or `/orgs/:orgId/verified-proofs`.

## Authentication

Every endpoint requires a JWT bearer token.

```http theme={null}
Authorization: Bearer <your-jwt-token>
```

## Role-based access

| Operation                   | Required roles                                             |
| --------------------------- | ---------------------------------------------------------- |
| Send proof requests         | `owner`, `admin`, `verifier`                               |
| Read proof presentations    | `owner`, `admin`, `issuer`, `verifier`, `member`, `holder` |
| Delete verification records | `owner`                                                    |

## Endpoints

<CardGroup cols={2}>
  <Card title="Send proof request" icon="paper-plane" href="/api-reference/credentials/verification#send-proof-request">
    `POST /orgs/:orgId/proofs` — Request a proof from a connected holder.
  </Card>

  <Card title="Send OOB proof request" icon="share" href="/api-reference/credentials/verification#send-out-of-band-proof-request">
    `POST /orgs/:orgId/proofs/oob` — Generate an OOB proof request invitation.
  </Card>

  <Card title="Verify presentation" icon="check" href="/api-reference/credentials/verification#verify-presentation">
    `POST /orgs/:orgId/proofs/:proofId/verify` — Verify a submitted proof presentation.
  </Card>

  <Card title="List proof presentations" icon="list" href="/api-reference/credentials/verification#list-proof-presentations">
    `GET /orgs/:orgId/proofs` — Retrieve all proof presentation records.
  </Card>

  <Card title="Get proof presentation" icon="magnifying-glass" href="/api-reference/credentials/verification#get-proof-presentation-by-id">
    `GET /orgs/:orgId/proofs/:proofId` — Retrieve a specific proof record.
  </Card>

  <Card title="Get verified proof details" icon="shield-check" href="/api-reference/credentials/verification#get-verified-proof-details">
    `GET /orgs/:orgId/verified-proofs/:proofId` — Get the verified attribute values from a completed proof.
  </Card>

  <Card title="Delete verification records" icon="trash" href="/api-reference/credentials/verification#delete-verification-records">
    `DELETE /orgs/:orgId/verification-records` — Delete all verification records for an organization.
  </Card>
</CardGroup>

***

## Send proof request

`POST /orgs/:orgId/proofs`

Send a proof request to a connected holder. Two API versions are available that differ only in how `connectionId` is specified.

**Required roles:** `owner`, `admin`, `verifier`

### Path parameters

<ParamField path="orgId" type="string" required>
  UUID of the verifier organization.
</ParamField>

### Query parameters

<ParamField query="requestType" type="string" required>
  Proof request format. Enum: `INDY` (default) or `PRESENTATIONEXCHANGE`.
</ParamField>

### Request body

<Tabs>
  <Tab title="v1 — single connection">
    `POST /orgs/:orgId/proofs` (unversioned / default)

    <ParamField body="connectionId" type="string" required>
      UUID of the single connection to send the proof request to.
    </ParamField>

    <ParamField body="proofFormats" type="object">
      Required when `requestType` is `INDY`. Contains an `indy` sub-object.

      <Expandable title="proofFormats.indy">
        <ParamField body="attributes" type="object[]" required>
          Array of requested attribute/predicate objects. Each object may include:

          * `attributeName` (string) — request a single attribute by name. Mutually exclusive with `attributeNames`.
          * `attributeNames` (string\[]) — request multiple attributes in a single group. Mutually exclusive with `attributeName`.
          * `schemaId` (string, optional) — restrict to credentials from this schema.
          * `credDefId` (string, optional) — restrict to credentials from this credential definition.
          * `condition` (string, optional) — predicate condition operator: `>=`, `<=`, `>`, `<`. Required when `value` is set.
          * `value` (string, optional) — numeric string for predicate comparison. Required when `condition` is set.
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField body="presentationDefinition" type="object">
      Required when `requestType` is `PRESENTATIONEXCHANGE`. A W3C Presentation Definition object.

      <Expandable title="presentationDefinition fields">
        <ParamField body="id" type="string" required>
          Unique identifier for this presentation definition.
        </ParamField>

        <ParamField body="purpose" type="string">
          Human-readable description of the verification purpose.
        </ParamField>

        <ParamField body="input_descriptors" type="object[]" required>
          Array of input descriptor objects, each specifying what credential data is requested. Min 1 element.

          Each descriptor must include:

          * `id` (string, required) — unique descriptor ID.
          * `name` (string, optional) — human-readable name.
          * `purpose` (string, optional) — reason for requesting this descriptor.
          * `schema` (object\[], required) — array of schema URIs: `[{ "uri": "https://..." }]`.
          * `constraints` (object, optional) — contains `fields` array, each with a `path` (string\[]) JSONPath.
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField body="comment" type="string">
      Optional comment attached to the proof request.
    </ParamField>

    <ParamField body="autoAcceptProof" type="string">
      Automatic proof acceptance mode. Enum: `always`, `contentApproved`, `never`.
    </ParamField>

    <ParamField body="goalCode" type="string">
      Goal code for the proof request thread.
    </ParamField>

    <ParamField body="parentThreadId" type="string">
      Attach this proof request to an existing thread.
    </ParamField>

    <ParamField body="willConfirm" type="boolean">
      Whether the verifier will confirm receipt.
    </ParamField>

    <ParamField body="protocolVersion" type="string">
      DIDComm protocol version.
    </ParamField>
  </Tab>

  <Tab title="v2 — multiple connections">
    `POST /v2/orgs/:orgId/proofs` (API version 2)

    Identical to v1, except `connectionId` accepts an array of UUIDs to send the same proof request to multiple connections simultaneously.

    <ParamField body="connectionId" type="string[]" required>
      Array of connection UUIDs to send the proof request to. Min 1 element. Maximum is controlled by the `PROOF_REQ_CONN_LIMIT` environment variable.
    </ParamField>

    All other fields (`proofFormats`, `presentationDefinition`, `comment`, `autoAcceptProof`, etc.) are identical to v1.
  </Tab>
</Tabs>

### Examples

<CodeGroup>
  ```bash v1 — Indy attribute proof theme={null}
  curl --request POST \
    --url "http://localhost:5000/v1/orgs/3fa85f64-5717-4562-b3fc-2c963f66afa6/proofs?requestType=INDY" \
    --header "Authorization: Bearer <your-jwt-token>" \
    --header "Content-Type: application/json" \
    --data '{
      "connectionId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
      "comment": "KYC verification for onboarding",
      "autoAcceptProof": "never",
      "proofFormats": {
        "indy": {
          "attributes": [
            {
              "attributeName": "firstName",
              "credDefId": "WgWxqztrNooG92RXvxSTWv:3:CL:123:default"
            },
            {
              "attributeName": "lastName",
              "credDefId": "WgWxqztrNooG92RXvxSTWv:3:CL:123:default"
            },
            {
              "attributeName": "employeeId",
              "schemaId": "WgWxqztrNooG92RXvxSTWv:2:EmployeeCredential:1.0"
            }
          ]
        }
      }
    }'
  ```

  ```bash v1 — Indy predicate proof theme={null}
  curl --request POST \
    --url "http://localhost:5000/v1/orgs/3fa85f64-5717-4562-b3fc-2c963f66afa6/proofs?requestType=INDY" \
    --header "Authorization: Bearer <your-jwt-token>" \
    --header "Content-Type: application/json" \
    --data '{
      "connectionId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
      "proofFormats": {
        "indy": {
          "attributes": [
            {
              "attributeName": "age",
              "condition": ">=",
              "value": "18",
              "schemaId": "WgWxqztrNooG92RXvxSTWv:2:PersonCredential:1.0"
            }
          ]
        }
      }
    }'
  ```

  ```bash v2 — multiple connections theme={null}
  curl --request POST \
    --url "http://localhost:5000/v2/orgs/3fa85f64-5717-4562-b3fc-2c963f66afa6/proofs?requestType=INDY" \
    --header "Authorization: Bearer <your-jwt-token>" \
    --header "Content-Type: application/json" \
    --data '{
      "connectionId": [
        "7c9e6679-7425-40de-944b-e07fc1f90ae7",
        "a1b2c3d4-1234-5678-90ab-cdef12345678"
      ],
      "proofFormats": {
        "indy": {
          "attributes": [
            {
              "attributeName": "employeeId",
              "credDefId": "WgWxqztrNooG92RXvxSTWv:3:CL:123:default"
            }
          ]
        }
      }
    }'
  ```

  ```bash v1 — Presentation Exchange theme={null}
  curl --request POST \
    --url "http://localhost:5000/v1/orgs/3fa85f64-5717-4562-b3fc-2c963f66afa6/proofs?requestType=PRESENTATIONEXCHANGE" \
    --header "Authorization: Bearer <your-jwt-token>" \
    --header "Content-Type: application/json" \
    --data '{
      "connectionId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
      "presentationDefinition": {
        "id": "32f54163-7166-48f1-93d8-ff217bdb0653",
        "purpose": "Used for KYC verification.",
        "input_descriptors": [
          {
            "id": "employment_input_1",
            "name": "Employment Verification",
            "purpose": "Verify current employment",
            "schema": [
              { "uri": "https://schemas.example.com/employee/1.0" }
            ],
            "constraints": {
              "fields": [
                { "path": ["$.credentialSubject.employeeId"] },
                { "path": ["$.credentialSubject.department"] }
              ]
            }
          }
        ]
      }
    }'
  ```
</CodeGroup>

```json 201 response theme={null}
{
  "statusCode": 201,
  "message": "Proof request sent successfully",
  "data": {
    "id": "d8b9b81b-7232-4a7f-b9d3-4f7226129677",
    "state": "request-sent",
    "connectionId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
    "threadId": "e1f2g3h4-5678-90ab-cdef-123456789012",
    "protocolVersion": "v1",
    "createdAt": "2024-01-15T12:00:00.000Z"
  }
}
```

| Status             | Description                                                                                                                                |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ |
| `400 Bad Request`  | `requestType` is `INDY` but `proofFormats` is missing; or `requestType` is `PRESENTATIONEXCHANGE` but `presentationDefinition` is missing. |
| `401 Unauthorized` | Missing or invalid bearer token.                                                                                                           |
| `403 Forbidden`    | User does not have `owner`, `admin`, or `verifier` role.                                                                                   |

***

## Send out-of-band proof request

`POST /orgs/:orgId/proofs/oob`

Create an out-of-band proof request invitation. The holder can scan the resulting URL or QR code to respond without a pre-existing connection. The invitation can also be sent to one or more email addresses.

**Required roles:** `owner`, `admin`, `verifier`

### Path parameters

<ParamField path="orgId" type="string" required>
  UUID of the verifier organization.
</ParamField>

### Query parameters

<ParamField query="requestType" type="string" required>
  Proof request format. Enum: `INDY` (default) or `PRESENTATIONEXCHANGE`.
</ParamField>

### Request body

<ParamField body="proofFormats" type="object">
  Proof format for Indy requests. Contains the `indy` sub-object with `requested_attributes` and `requested_predicates`.

  <Expandable title="proofFormats.indy">
    <ParamField body="name" type="string">
      Human-readable name for the proof request. Example: `"Verify national identity"`.
    </ParamField>

    <ParamField body="version" type="string">
      Version string for the proof request. Example: `"1.0"`.
    </ParamField>

    <ParamField body="requested_attributes" type="object">
      A map of referent keys to attribute request objects. Each value may include `name` (single attribute), `names` (multi-attribute), and `restrictions` (array of restriction objects using `schema_id`, `cred_def_id`, etc.).
    </ParamField>

    <ParamField body="requested_predicates" type="object">
      A map of referent keys to predicate request objects. Each value must include `name`, `p_type` (`>=`, `<=`, `>`, `<`), and `p_value`.
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="presentationDefinition" type="object">
  W3C Presentation Definition. Required when `requestType` is `PRESENTATIONEXCHANGE`. Same structure as the connection-based flow.
</ParamField>

<ParamField body="comment" type="string">
  Optional comment.
</ParamField>

<ParamField body="goalCode" type="string">
  Goal code for the proof request thread.
</ParamField>

<ParamField body="protocolVersion" type="string">
  DIDComm protocol version.
</ParamField>

<ParamField body="autoAcceptProof" type="string">
  Automatic proof acceptance mode. Enum: `always`, `contentApproved`, `never`.
</ParamField>

<ParamField body="isShortenUrl" type="boolean">
  Return a shortened invitation URL. Defaults to `true`.
</ParamField>

<ParamField body="emailId" type="string[]">
  Optional array of email addresses to deliver the proof request invitation to. Each must be a valid email. Max size controlled by `OOB_BATCH_SIZE` environment variable.
</ParamField>

<ParamField body="reuseConnection" type="boolean">
  Attempt to reuse an existing connection with the holder.
</ParamField>

<ParamField body="label" type="string">
  Optional display label for the OOB invitation.
</ParamField>

### Examples

<CodeGroup>
  ```bash Indy OOB proof request theme={null}
  curl --request POST \
    --url "http://localhost:5000/v1/orgs/3fa85f64-5717-4562-b3fc-2c963f66afa6/proofs/oob?requestType=INDY" \
    --header "Authorization: Bearer <your-jwt-token>" \
    --header "Content-Type: application/json" \
    --data '{
      "comment": "Please verify your employment credentials",
      "isShortenUrl": true,
      "proofFormats": {
        "indy": {
          "name": "Employment Verification",
          "version": "1.0",
          "requested_attributes": {
            "verifyEmployeeInfo": {
              "names": ["firstName", "lastName", "employeeId"],
              "restrictions": [
                { "cred_def_id": "WgWxqztrNooG92RXvxSTWv:3:CL:123:default" }
              ]
            }
          },
          "requested_predicates": {}
        }
      }
    }'
  ```

  ```bash OOB proof request via email theme={null}
  curl --request POST \
    --url "http://localhost:5000/v1/orgs/3fa85f64-5717-4562-b3fc-2c963f66afa6/proofs/oob?requestType=INDY" \
    --header "Authorization: Bearer <your-jwt-token>" \
    --header "Content-Type: application/json" \
    --data '{
      "emailId": ["alice@example.com", "bob@example.com"],
      "isShortenUrl": true,
      "proofFormats": {
        "indy": {
          "name": "Annual Compliance Check",
          "version": "1.0",
          "requested_attributes": {
            "verifyDept": {
              "name": "department",
              "restrictions": [
                { "schema_id": "WgWxqztrNooG92RXvxSTWv:2:EmployeeCredential:1.0" }
              ]
            }
          },
          "requested_predicates": {}
        }
      }
    }'
  ```

  ```bash Presentation Exchange OOB theme={null}
  curl --request POST \
    --url "http://localhost:5000/v1/orgs/3fa85f64-5717-4562-b3fc-2c963f66afa6/proofs/oob?requestType=PRESENTATIONEXCHANGE" \
    --header "Authorization: Bearer <your-jwt-token>" \
    --header "Content-Type: application/json" \
    --data '{
      "isShortenUrl": true,
      "presentationDefinition": {
        "id": "32f54163-7166-48f1-93d8-ff217bdb0653",
        "purpose": "Used for KYC verification.",
        "input_descriptors": [
          {
            "id": "banking_input_1",
            "name": "Bank Account Information",
            "schema": [
              { "uri": "https://bank-schemas.org/1.0.0/accounts.json" }
            ],
            "constraints": {
              "fields": [
                { "path": ["$.issuer"] }
              ]
            }
          }
        ]
      }
    }'
  ```
</CodeGroup>

```json 201 response theme={null}
{
  "statusCode": 201,
  "message": "Proof request sent successfully",
  "data": {
    "invitationUrl": "http://agent.example.com/s/abc123",
    "proofId": "d8b9b81b-7232-4a7f-b9d3-4f7226129677",
    "state": "request-sent",
    "createdAt": "2024-01-15T12:00:00.000Z"
  }
}
```

***

## Verify presentation

`POST /orgs/:orgId/proofs/:proofId/verify`

Verify a proof presentation that a holder has submitted in response to a proof request.

**Required roles:** `owner`, `admin`, `verifier`

### Path parameters

<ParamField path="orgId" type="string" required>
  UUID of the verifier organization.
</ParamField>

<ParamField path="proofId" type="string" required>
  UUID of the proof record to verify.
</ParamField>

### Examples

<CodeGroup>
  ```bash curl theme={null}
  curl --request POST \
    --url "http://localhost:5000/v1/orgs/3fa85f64-5717-4562-b3fc-2c963f66afa6/proofs/d8b9b81b-7232-4a7f-b9d3-4f7226129677/verify" \
    --header "Authorization: Bearer <your-jwt-token>"
  ```
</CodeGroup>

```json 201 response theme={null}
{
  "statusCode": 201,
  "message": "Proof verified successfully",
  "data": {
    "id": "d8b9b81b-7232-4a7f-b9d3-4f7226129677",
    "isVerified": true,
    "state": "done",
    "connectionId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
    "threadId": "e1f2g3h4-5678-90ab-cdef-123456789012",
    "updatedAt": "2024-01-15T12:05:00.000Z"
  }
}
```

***

## List proof presentations

`GET /orgs/:orgId/proofs`

Retrieve all proof presentation records for an organization. Supports pagination, search, and sorting.

**Required roles:** `owner`, `admin`, `issuer`, `verifier`, `member`, `holder`

### Path parameters

<ParamField path="orgId" type="string" required>
  UUID of the organization.
</ParamField>

### Query parameters

<ParamField query="pageNumber" type="number">
  Page to retrieve. Min `1`. Defaults to `1`.
</ParamField>

<ParamField query="pageSize" type="number">
  Records per page. Min `1`, max `100`. Defaults to `10`.
</ParamField>

<ParamField query="search" type="string">
  Free-text search across proof records.
</ParamField>

<ParamField query="sortField" type="string">
  Field to sort by. Enum: `createDateTime` (default).
</ParamField>

<ParamField query="sortBy" type="string">
  Sort direction. `ASC` or `DESC` (default).
</ParamField>

### Examples

<CodeGroup>
  ```bash curl theme={null}
  curl --request GET \
    --url "http://localhost:5000/v1/orgs/3fa85f64-5717-4562-b3fc-2c963f66afa6/proofs?pageNumber=1&pageSize=10&sortBy=DESC" \
    --header "Authorization: Bearer <your-jwt-token>"
  ```
</CodeGroup>

```json 200 response theme={null}
{
  "statusCode": 200,
  "message": "Proof presentations fetched successfully",
  "data": {
    "totalItems": 1,
    "hasNextPage": false,
    "data": [
      {
        "id": "d8b9b81b-7232-4a7f-b9d3-4f7226129677",
        "state": "done",
        "isVerified": true,
        "connectionId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
        "threadId": "e1f2g3h4-5678-90ab-cdef-123456789012",
        "protocolVersion": "v1",
        "autoAcceptProof": "never",
        "createdAt": "2024-01-15T12:00:00.000Z",
        "updatedAt": "2024-01-15T12:05:00.000Z"
      }
    ]
  }
}
```

***

## Get proof presentation by ID

`GET /orgs/:orgId/proofs/:proofId`

Retrieve the details of a specific proof presentation record, including the submitted proof data.

**Required roles:** `owner`, `admin`, `issuer`, `verifier`, `member`, `holder`

### Path parameters

<ParamField path="orgId" type="string" required>
  UUID of the organization.
</ParamField>

<ParamField path="proofId" type="string" required>
  UUID of the proof record to retrieve.
</ParamField>

### Response

<ResponseField name="data" type="object">
  <Expandable title="properties" defaultOpen>
    <ResponseField name="id" type="string">
      UUID of the proof record.
    </ResponseField>

    <ResponseField name="state" type="string">
      Current state of the proof exchange. Common values: `request-sent`, `presentation-received`, `done`, `abandoned`.
    </ResponseField>

    <ResponseField name="isVerified" type="boolean">
      Whether the submitted proof was cryptographically valid. Populated after verification.
    </ResponseField>

    <ResponseField name="connectionId" type="string">
      UUID of the connection this proof was exchanged over.
    </ResponseField>

    <ResponseField name="threadId" type="string">
      DIDComm thread ID for this proof exchange.
    </ResponseField>

    <ResponseField name="parentThreadId" type="string">
      Parent thread ID if this proof is part of a larger workflow.
    </ResponseField>

    <ResponseField name="protocolVersion" type="string">
      DIDComm protocol version used.
    </ResponseField>

    <ResponseField name="autoAcceptProof" type="string">
      Auto-acceptance mode configured for this proof.
    </ResponseField>

    <ResponseField name="proofData" type="object">
      The proof data submitted by the holder. Structure depends on the proof format.
    </ResponseField>

    <ResponseField name="createdAt" type="string">
      ISO 8601 timestamp of creation.
    </ResponseField>

    <ResponseField name="updatedAt" type="string">
      ISO 8601 timestamp of last update.
    </ResponseField>
  </Expandable>
</ResponseField>

### Examples

<CodeGroup>
  ```bash curl theme={null}
  curl --request GET \
    --url "http://localhost:5000/v1/orgs/3fa85f64-5717-4562-b3fc-2c963f66afa6/proofs/d8b9b81b-7232-4a7f-b9d3-4f7226129677" \
    --header "Authorization: Bearer <your-jwt-token>"
  ```
</CodeGroup>

```json 200 response theme={null}
{
  "statusCode": 200,
  "message": "Proof presentation fetched successfully",
  "data": {
    "id": "d8b9b81b-7232-4a7f-b9d3-4f7226129677",
    "state": "done",
    "isVerified": true,
    "connectionId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
    "threadId": "e1f2g3h4-5678-90ab-cdef-123456789012",
    "protocolVersion": "v1",
    "autoAcceptProof": "never",
    "proofData": {
      "requested_proof": {
        "revealed_attrs": {
          "verifyEmployeeInfo": {
            "sub_proof_index": 0,
            "raw": "Alice",
            "encoded": "27034640024117331033063128044004318218486816931520886405535659934417438781507"
          }
        }
      }
    },
    "createdAt": "2024-01-15T12:00:00.000Z",
    "updatedAt": "2024-01-15T12:05:00.000Z"
  }
}
```

| Status            | Description                         |
| ----------------- | ----------------------------------- |
| `400 Bad Request` | `proofId` is not a valid UUID.      |
| `404 Not Found`   | No proof record found with that ID. |

***

## Get verified proof details

`GET /orgs/:orgId/verified-proofs/:proofId`

Retrieve the revealed attribute values and verification status of a completed proof presentation.

**Required roles:** `owner`, `admin`, `issuer`, `verifier`, `member`, `holder`

### Path parameters

<ParamField path="orgId" type="string" required>
  UUID of the organization.
</ParamField>

<ParamField path="proofId" type="string" required>
  ID of the verified proof record.
</ParamField>

### Examples

<CodeGroup>
  ```bash curl theme={null}
  curl --request GET \
    --url "http://localhost:5000/v1/orgs/3fa85f64-5717-4562-b3fc-2c963f66afa6/verified-proofs/d8b9b81b-7232-4a7f-b9d3-4f7226129677" \
    --header "Authorization: Bearer <your-jwt-token>"
  ```
</CodeGroup>

```json 200 response theme={null}
{
  "statusCode": 200,
  "message": "Verified proof details fetched successfully",
  "data": {
    "proofId": "d8b9b81b-7232-4a7f-b9d3-4f7226129677",
    "isVerified": true,
    "revealedAttributes": {
      "firstName": "Alice",
      "lastName": "Smith",
      "employeeId": "EMP-1042"
    },
    "connectionId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
    "verifiedAt": "2024-01-15T12:05:00.000Z"
  }
}
```

***

## Delete verification records

`DELETE /orgs/:orgId/verification-records`

Delete all verification records associated with an organization. This action is irreversible.

**Required roles:** `owner`

### Path parameters

<ParamField path="orgId" type="string" required>
  UUID of the organization whose verification records will be deleted.
</ParamField>

### Examples

<CodeGroup>
  ```bash curl theme={null}
  curl --request DELETE \
    --url "http://localhost:5000/v1/orgs/3fa85f64-5717-4562-b3fc-2c963f66afa6/verification-records" \
    --header "Authorization: Bearer <your-jwt-token>"
  ```
</CodeGroup>

```json 200 response theme={null}
{
  "statusCode": 200,
  "message": "Verification records deleted successfully"
}
```

| Status             | Description                          |
| ------------------ | ------------------------------------ |
| `400 Bad Request`  | `orgId` is not a valid UUID.         |
| `401 Unauthorized` | Missing or invalid bearer token.     |
| `403 Forbidden`    | User does not have the `owner` role. |
