Identity API
Reference
Errors
What can go wrong, and whether it costs you anything.
Errors come back with "success": false and a human-readable message. Billing errors from the check endpoints also carry a code:
JSON
{"success": false,"code": "INSUFFICIENT_CREDITS","message": "Account balance is too low for this check.","requestId": "REQ-1791820800000","timestamp": "2026-10-12T10:00:00.000Z"}
| Status | When | Billed | What to do |
|---|---|---|---|
400 | Missing or invalid field ("Validation error", with an errors array), or an unknown bankCode. | No | Fix the request. The errors array names each bad field. |
401 | No Authorization header, a malformed token, or an expired or revoked key. | No | Check the token is Base64 of clientId:clientSecret and the key is active. |
403 | "Insufficient permissions. Required: identity.write" (or identity.read). | No | Add the Identity scope to the key under Settings → Developers. |
403 INSUFFICIENT_CREDITS | Your wallet balance is lower than the price of the check. | No | Top up your wallet, then retry. |
404 | Check or session not found (or it belongs to another account). | No | Check the ID, and that you're using the right account's key. |
429 | Too many requests in a short period. | No | Back off and retry. |
502 PROVIDER_ERROR | The register didn't answer (timeout or outage). | Refunded | Retry after a short wait. The charge is returned to your wallet automatically. |
500 | Unexpected error on our side. | No | Retry; contact support with the time of the request if it persists. |
A "no match" isn't an error
When the details don't match the register, you get 200 with "isValid": false (or null if the register couldn't decide). The check ran, so it's billed. Only treat "isValid": true as verified.