Troubleshooting

Symptom first, cause second. Quote the X-Request-ID from the failing response whenever you escalate.

API calls

SymptomCause
401 "Invalid API key format"header missing, or the key does not start with iss_ / ver_ and split into three parts
401 "Invalid API key"wrong secret, revoked key, or the key expired
403 "not authorized for this issuer"iss_ key used against a different issuer, verifier or organization — or a ver_ key on an issuer route
400 on initiate-verificationmetadata.redirectUri missing; one of redirectUri or redirect_uri is mandatory
400 offer too largecredentialOfferMode: "by_value" with an offer over the inline limit — use auto
404 on status or diagnosticsthose routes exist only on the public edition, and diagnostics also need DIAGNOSTICS_ENABLED
422 with a Zod enveloperequest body failed schema validation; read the issue paths

Wallet flows

SymptomCause
Wallet cannot open the offerthe string is a deep link, not a URL — render it as a QR code or an HTTPS bridge link
Wallet rejects the credentialplatform root CA not installed on the device
Wallet cannot resolve the offerit does not support credential_offer_uri; force credentialOfferMode: "by_value" if the offer is small enough
Token exchange fails on tx_codethe offer was created with userPinRequired: true and the holder must enter the returned transactionCode
Nothing reaches your hostwallets need public HTTPS — tunnel it, see Local testing

Stuck states

SymptomCause
Issuance status stays pendingthe wallet never exchanged the pre-authorized code; the offer will move to expired
Verification stays initiatedthe wallet never posted a response; it expires after 15 minutes, 60 for email delivery
Verification is failureread failureReason, then the diagnostics timeline
Email never arrivescheck deliveryStatus; bounced and complained are terminal and will not retry
No callback ever firesby design — there are no outbound webhooks, poll instead

Was this page helpful?