DC API verification on Android
When to use
Verify a credential in the browser on Android without a QR scan on the same device: the page calls the W3C Digital Credentials API and Chrome invokes the wallet. Cross-device still works (Chrome shows a QR; Bluetooth must be on for the proximity check).
Before you build: run the integrator intake in igrantio-ows-overview - environment, API key, tenancy, backend host, webhooks, frontend - one question at a time, a recommended default with each.
Prerequisites
- Chrome 141+ (or 128+ with
chrome://flags#web-identity-digital-credentials). - The credential in the user's Data Wallet.
- Bluetooth on both devices for cross-device.
Workflow
- Presentation definition - protocol OpenID4VP, format IETF SD-JWT,
responseMode: "dc_api". For the signed variant (openid4vp-v1-signed) also setexpectedOriginsto your page origin (replay protection). - Verification request (v3) -
requestByReference: truewith thepresentationDefinitionId. The response'sverificationHistory.dcApiRequest+dcApiProtocolare the browser payload. - Invoke the wallet -
navigator.credentials.get({ digital: ... })with the backend-provided request object. Use the ready-madedcApi.tshelpers inigrantio-verifier-frontend(supportsDcApi,invokeWallet,buildReceivePayload) - they handle the Chrome request formats and the plain-vs-signed response shapes. - Post the response back through your backend proxy on an allow-listed receive path; the SSE stream still delivers the final result.
- Verify - read verification history (v3): decode
vpTokenResponse, checkverified,isVerifiedWithTrustList, andtrustServiceProvider.
Adjust for your deployment
- Choose plain
dc_apivs signed per your threat model; signed requiresexpectedOriginsto exactly match the serving origin(s). - Feature-detect and fall back to the QR flow
(
igrantio-verifier-frontend) when the DC API is unavailable. - Credential format and DCQL query are yours to set - compose with any
igrantio-dcql-*workflow skill.
Cross-references
igrantio-dcapi-ios- the iOS variant (ISO 18013-7 Annex C, always signed).igrantio-verifier-frontend-dcApi.tsreference implementation.
Source of truth
This workflow mirrors https://docs.igrant.io/docs/openID4vc-send-verify-credentials-dcapi-android/. Before implementing, fetch that page; if it disagrees with this skill (browser versions, response modes, endpoints), the documentation wins - follow it and report the drift so the skill can be updated.