CheapVHR LogoCheapVHR
Error Responses

Error Responses

Understanding error codes and responses from the CheapVHR API

Error Response Format
All error responses follow a consistent JSON structure
{
  "error": "Error Type",
  "message": "Detailed error description",
  "code": 400
}
400
Bad Request
The request was invalid or cannot be served

Invalid VIN format

{
  "error": "Invalid VIN format",
  "message": "VIN must be 17 characters long",
  "code": 400
}

Missing required parameters

{
  "error": "Missing required parameter",
  "message": "VIN parameter is required",
  "code": 400
}
401
Unauthorized
Authentication failed or API key is invalid

Missing API key

{
  "error": "Unauthorized",
  "message": "API key is required",
  "code": 401
}

Invalid API key

{
  "error": "Unauthorized",
  "message": "Invalid API key",
  "code": 401
}
404
Not Found
The requested resource was not found

Report not found

{
  "error": "Not Found",
  "message": "Report with ID 12345 not found",
  "code": 404
}

Invalid endpoint

{
  "error": "Not Found",
  "message": "Endpoint not found",
  "code": 404
}
429
Too Many Requests
Rate limit exceeded

Rate limit exceeded

{
  "error": "Too Many Requests",
  "message": "Rate limit exceeded. Try again in 60 seconds",
  "code": 429,
  "retry_after": 60
}
500
Internal Server Error
An unexpected error occurred on the server

Server error

{
  "error": "Internal Server Error",
  "message": "An unexpected error occurred",
  "code": 500
}
Handling Errors
Best practices for error handling in your application

JavaScript Example

try {
  const response = await fetch('https://api.cheapvhr.com/v1/user/info', {
    headers: {
      'x-api-key': 'your-api-key'
    }
  });
  
  if (!response.ok) {
    const error = await response.json();
    console.error(`Error ${error.code}: ${error.message}`);
    return;
  }
  
  const data = await response.json();
  // Handle success
} catch (error) {
  console.error('Network error:', error);
}

Error Handling Tips

  • Always check the HTTP status code before processing the response
  • Parse error responses to get detailed error information
  • Implement retry logic for 5xx server errors
  • Respect rate limits and implement exponential backoff for 429 errors
  • Log errors for debugging and monitoring purposes