▪ Free plan: 3 websites with daily snapshots, no card required → ▪ ▪ Free plan: 3 websites, no card →

Error codes

The API uses standard HTTP status codes and returns structured JSON error responses with a machine-readable code field and a human-readable message.

Error response format

json
{
  "error": {
    "code": "monitor_limit_exceeded",
    "message": "Your plan allows up to 20 monitors. Upgrade to create more.",
    "status": 422
  }
}

Common error codes

HTTP StatusCodeDescription
401missing_api_keyNo Authorization header
401invalid_api_keyKey not found or revoked
401expired_api_keyKey has expired
403ip_not_allowedRequest IP not in key's whitelist
403feature_not_availableFeature requires a higher plan
404not_foundResource doesn't exist
409snapshot_in_progressA capture is already running
422validation_errorInvalid request body (see errors field)
422monitor_limit_exceededPlan monitor limit reached
422frequency_not_allowedFrequency too low for plan
429rate_limit_exceededToo many requests
500server_errorInternal server error

Validation errors

When the request body fails validation (422), the response includes a detailed errors object mapping each invalid field to its error messages:

json
{
  "error": {
    "code": "validation_error",
    "message": "The given data was invalid.",
    "status": 422,
    "errors": {
      "url": ["The url field is required."],
      "frequency_minutes": ["The frequency minutes must be at least 60."]
    }
  }
}