Skip to main content
When a request fails, the Varo Cloud API returns a JSON error object with a machine-readable code and a human-readable message so your application can handle failures programmatically and surface clear feedback to users.

Error Response Format

All error responses share the same envelope structure. The top-level error object always contains code, message, and request_id. For validation failures, a details array is also included with field-level information:
Include the request_id value when contacting Varo Cloud support — it allows the support team to trace and resolve your request quickly.

HTTP Status Codes

The API uses standard HTTP status codes to indicate the outcome of every request.

Error Codes

The error.code field contains a stable, machine-readable string that identifies the type of failure. Use this value in your error-handling logic rather than parsing the human-readable message.

Handling Validation Errors

When the API returns a validation_error, the error.details array contains one entry per invalid field, each with a field name and an issue description. Iterate over details to surface actionable feedback:
This pattern lets you map error.details directly onto form field errors or structured log entries without relying on string-matching the human-readable message.

Retries and Rate Limiting

On a 429 Too Many Requests response, do not retry immediately. Read the X-RateLimit-Reset header, which contains a Unix timestamp indicating when your quota resets, and wait until that time before sending another request.On 500 Internal Server Error or 503 Service Unavailable responses, use exponential backoff starting at 1 second. These errors are typically transient and resolve quickly, but hammering the API during an incident will delay recovery and exhaust your rate limit.
The following snippet demonstrates a simple retry helper with exponential backoff for server-side errors and respect for the rate-limit reset time: