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
{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 returns200 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.
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 bothstatus === "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.
attributes from the response to process the verified user data in your application, and store what you need before the 15-minute window closes.
