Skip to main content

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

Endpoint

Request

Replace {presentation_id} with the id returned by Create a presentation request.

Response

HTTP 200 OK

Status values

Credential validation fields

Each entry in issues is typed, so you can branch on the cause rather than parsing the message:
isValid tells you the credential is cryptographically sound. It does not tell you the issuer is one you trust. That’s what trustSignals is for. A credential can be perfectly valid and signed by someone you’ve never heard of.

Read the data within 15 minutes

The platform trims presented attributes 15 minutes after verification. Read them promptly and persist whatever your application needs, because this endpoint is not a store. After the window closes, the request still returns 200 and status stays verified, but each credential comes back stripped:
Trimming is all-or-nothing at the presentation level. If any credential in the response has expired, the platform sets notice.
An expired read is not a verification failure, and it does not mean the issuer was untrusted. isValid stays true while trustSignals empties to [] and issuer becomes null, so code that treats “no trust signal” as “reject” will wrongly reject a presentation that verified correctly. Branch on notice before interpreting the other fields.
This is the strongest argument for webhooks. They fire the moment a presentation reaches verified, so you read the data while it’s still there instead of discovering it’s gone.

Check 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, and store what you need before the 15-minute window closes.