Skip to main content

Error Response Format

API-generated errors generally use a consistent envelope, even when the successful response for that endpoint is raw JSON or a file stream:

HTTP Status Codes

Do not assume every successful 2xx response includes a success field. Search endpoints and most point lookups do, but job endpoints, autocomplete endpoints, manifests, scanner endpoints, and download endpoints may not.

Common Errors

400 Bad Request

Typical causes:
  • missing required parameters
  • invalid filter JSON
  • filter nesting deeper than 2 levels
  • more than 50 filter leaf conditions
  • unsupported filter operator or field for that endpoint
  • wildcard-like patterns that are too short
  • unsupported scanner query_config keys
  • malformed filter_id

401 Unauthorized

Typical causes:
  • missing x-api-key
  • revoked or invalid key

403 Forbidden

Typical causes:
  • daily lookup quota exhausted
  • endpoint requires a higher plan
  • scanner quota exhausted
  • file search, exports, bulk search, or AI filter not enabled on the current plan

404 Not Found

Typical causes:
  • unknown log_id, file_id, job_id, scanner_uid, or run_uid
  • job or scanner exists but is not owned by the authenticated caller

429 Too Many Requests

Typical causes:
  • endpoint rate limit exceeded
  • daily bulk-search limit reached
  • scanner creation or test-delivery rate limits hit

Client Handling Pattern

When writing a client:
  1. trust HTTP status first
  2. parse JSON when the endpoint is documented as JSON
  3. only inspect success when the payload actually includes it
  4. treat download endpoints as raw text or binary streams

Example Client Logic