Verification
You name a policy. DiligenceID builds the OpenID4VP request, handles the presentation exchange, checks the issuer's trust and the credential's status, and returns a result. You never construct protocol parameters.
Start a verification
curl -sS -X POST "$BASE/v1/verifications" \
-H "Authorization: ApiKey $KEY" \
-H "Content-Type: application/json" \
-d '{ "policy": "verified-employee" }'
Scope: verification.execute.
{
"data": {
"id": "vs_...",
"status": "pending",
"presentationUrl": "openid4vp://...",
"qrCodePayload": "openid4vp://...",
"expiresAt": "2026-08-29T02:12:03.117Z"
}
}
Render qrCodePayload as a QR code for a desktop flow, or use presentationUrl as a deep link on mobile.
Read the outcome
curl -sS "$BASE/v1/verifications/$VERIFICATION_ID" -H "Authorization: ApiKey $KEY"
Scope: verification.read.
status |
Meaning |
|---|---|
pending |
Waiting for the holder |
processing |
The holder's wallet has retrieved the request |
verified |
The presentation satisfied the policy |
rejected |
The presentation did not satisfy the policy; see reason and failureCode |
expired |
The holder did not respond in time |
cancelled |
Cancelled by you |
On verified:
{
"data": {
"id": "vs_...",
"status": "verified",
"decision": "Accepted",
"verifiedAt": "2026-08-29T01:44:11.002Z",
"result": {
"claims": { "employee_id": "4821" },
"issuerDid": "did:web:issuer.example",
"credentialStatus": "active",
"linkedDomainValidated": true
}
}
}
Only the claims the policy asks for are disclosed.
Cancel
curl -sS -X POST "$BASE/v1/verifications/$VERIFICATION_ID/cancel" -H "Authorization: ApiKey $KEY"
Scope: verification.execute. Cancels a pending verification — for example when a user abandons a checkout.
Policies
A policy is configured by an administrator and defines what evidence is required, which issuers are acceptable,
which claims are required, what statuses are acceptable and whether holder binding is required. You reference
it by identifier. Policy management is administrative today and is not on /v1.
Prefer webhooks to polling
Subscribe to verification.completed rather than polling. See Webhooks.
What a verification does and does not tell you
A verified presentation tells you the credential was issued by a trusted issuer, satisfies the policy, and has the status shown. It does not, by itself, establish that the holder's real-world identity has been verified, nor that they hold authority to act for an organisation. Those are separate evidence questions — see Security.