---
title: "Verifies a Presentation and all Verifiable Credentials it contains, returning detailed verification results."
method: POST
path: "/presentations/verify"
tags: ["Presentations"]
---

# Verifies a Presentation and all Verifiable Credentials it contains, returning detailed verification results.

`POST /presentations/verify`

Verifies a verifiablePresentation and, by default, all verifiable credentials
contained within it.

The verification process includes verifying the presentation's own proof (including domain
and challenge validation, if provided); verifying each contained verifiable credential's proof,
status, and validity period(s); and checking that the holder in the presentation matches the
verification method used in the presentation's proof.

Business rule validation (such as verifying that credential subjects match the presentation holder)
is outside the scope of this verification endpoint and should be performed by the calling application.

The API is compositional: when credential verification is disabled or limited via
implementation-specific options, individual credentials can be verified separately
using the <code>/credentials/verify</code> endpoint.

Given the possibility of denial of service, buffer overflow, or other attacks, an implementation
is permitted to apply rate limits or otherwise restrict requests against this API endpoint
as needed, using a <code>413</code>, <code>429</code>, or other response error code as appropriate.

## Request body

- union
  - VerifyPresentationRequest
    - `verifiablePresentation` VerifiablePresentation — unresolved $ref
    - `options` VerifyPresentationOptions — unresolved $ref
  - ProoflessVerifyPresentationRequest
    - `presentation` Presentation — unresolved $ref
  - VerifyEnvelopedPresentationRequest
    - `verifiablePresentation` EnvelopedVerifiablePresentation — unresolved $ref
    - `options` VerifyPresentationOptions — unresolved $ref

## Response `200`

Verification process completed successfully. The response body contains detailed results
indicating whether the presentation and its contained credentials passed or failed verification.
A <code>200</code> status indicates the verification process itself succeeded, regardless of whether
the presentation and/or credentials were determined to be valid or invalid.

- VerifyPresentationResponse — unresolved $ref

## Other responses

- `400` — Invalid or malformed input that prevented the verification process from being performed. This indicates issues with the request format, structure, or parameters, rather than verification failures.
- `413` — Payload too large
- `429` — Request rate limit exceeded.

---

[API](https://skmtc.dev/w3c/apis/verifiable-credential-api-for-lifecycle-management.md) · [All operations](https://skmtc.dev/w3c/apis/verifiable-credential-api-for-lifecycle-management/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/w3c/verifiable-credential-api-for-lifecycle-management/revisions/3ba233461759/schema)
