Error Codes
Every error response from the Zenoo API includes a machine-readable error code, a human-readable message, and a unique request ID.Response format
Error code reference
Examples
VALIDATION_ERROR (400)
VALIDATION_ERROR (400)
Returned when the request is missing required fields or contains invalid values.
INVALID_JSON (400)
INVALID_JSON (400)
Returned when the request body cannot be parsed as JSON.
FORBIDDEN (403)
FORBIDDEN (403)
Returned when the API key is valid but does not have access to the requested project.
NOT_FOUND (404)
NOT_FOUND (404)
Returned when the project hash, endpoint, or resource does not exist.
TOKEN_EXPIRED (404)
TOKEN_EXPIRED (404)
Returned when a pull token has expired. Pull tokens are valid for 30 days after results become available. Start tokens (verification URLs) expire after 24 hours.
RATE_LIMITED (429)
RATE_LIMITED (429)
Returned when request volume exceeds your project’s rate limit. The Response headers:
Retry-After header tells you how many seconds to wait.INTERNAL_ERROR (500)
INTERNAL_ERROR (500)
Returned for unexpected server errors. These are transient and should be retried.
PROVIDER_ERROR (502)
PROVIDER_ERROR (502)
Returned when an upstream verification provider (registry, screening) fails. Zenoo automatically retries provider failures for async flows. For sync flows, retry the request.
Retry logic
Use the following exponential backoff schedule for retryable errors:
RATE_LIMITED (429), always use the Retry-After header value instead of the default backoff schedule.
For detailed retry implementation, see Error Handling.
Next steps
- Rate Limits — Per-endpoint rate limits and best practices
- Error Handling — Retry strategies and circuit breaker behavior
- Glossary — Term definitions