Error response format
All error responses are JSON objects. Theerror field is always present. The detail field is included only for 500 responses.
HTTP status codes
| Status | Meaning | When it occurs |
|---|---|---|
400 Bad Request | Invalid request | The url field is missing from the request body or is not a string |
429 Too Many Requests | Rate limit exceeded | The client IP has sent more than 100 requests in the current 15-minute window |
500 Internal Server Error | Server error | An unexpected error occurred during URL analysis |
400 Bad Request
Returned when theurl field is absent or not a string.
429 Too Many Requests
Returned when the rate limit is exceeded. The response includes the configured limit and the current request count for the client IP.500 Internal Server Error
Returned when an unexpected error occurs while analyzing the URL.The
detail field contains the stringified error (String(err)) for debugging purposes. Treat it as opaque in production — its format may change without notice and it may expose internal implementation details.If Redis is unavailable, the rate limiter fails open: requests proceed normally rather than being blocked. Scan result caching is also skipped when Redis is unreachable. The service degrades gracefully — analysis continues using live checker calls.