Errors
Error handling and response codes
VeroID uses standard HTTP status codes and returns detailed error information in JSON format.
HTTP Status Codes
| Code | Meaning |
|---|---|
| 200 | Success |
| 400 | Bad Request - Invalid parameters |
| 401 | Unauthorized - Invalid or missing API key |
| 402 | Payment Required - Insufficient credits |
| 403 | Forbidden - Your account is not a developer account, or is not approved for this environment |
| 404 | Not Found - Resource doesn't exist |
| 429 | Too Many Requests - Rate limited |
| 500 | Internal Server Error |
Error Response Format
{
"error": "Error Type",
"code": "ERROR_CODE",
"message": "Human-readable description",
"verificationId": "ver_..."
}Authentication Errors (401)
{
"error": "Unauthorized",
"message": "Missing API key. Include X-API-Key header."
}Credit Errors (402)
{
"error": "Payment Required",
"message": "Insufficient credit balance. Please purchase more credits."
}Access Errors (403)
Returned when a sk_live_* key is used before the onboarding fee is settled or before VeroID has approved your account for production DVS. This applies to every endpoint, including test-api.veroid.com.au. Use a sk_sandbox_* key until your account is approved.
{
"error": "Forbidden",
"message": "Live verification is locked until your account is approved for the production DVS hub. Use a sandbox key against the test endpoint in the meantime."
}If the onboarding fee is the blocker, the message names it instead:
{
"error": "Forbidden",
"message": "Live keys are issued once the one-time developer onboarding fee is paid. Use a sandbox key against the test endpoint in the meantime."
}The API is only available to developer accounts. If the account has been switched to the dashboard track, its keys stop working entirely:
{
"error": "Forbidden",
"message": "API keys are not part of a dashboard account. Switch to a developer account to integrate over the API."
}Rate Limits
| Limit | Value |
|---|---|
| Requests per second | 10 |
| Requests per minute | 100 |
| Requests per hour | 1,000 |