API documentation

Errors and limits

Errors come in a single envelope shape; the status code says what happened. Lists are paginated and requests are rate limited.

Error envelope

Every failed response has the same shape:

{
  "success": false,
  "message": "Not found",
  "error": { "type": "NotFoundError", "code": 404 }
}

Another firm’s record returns 404 even if it exists; its existence is not leaked. A client error (invalid field, conflict) is 4xx, and internal server detail is not returned.

Responses

CodeMeaning
400Invalid request (malformed id, missing or invalid field)
401Key missing, invalid, expired or revoked
402The watched target limit of your tier is reached or your credit balance is too low; the target was not added
403Insufficient scope, no API access in plan, or product not enabled
404Record not found or not owned by this key’s firm
408The request exceeded its maximum response time
409A scan is already running for the firm; wait for it to finish
429Rate limit exceeded; retry after a minute
503Threat Investigation is temporarily unavailable; do not retry automatically, try again later yourself

Rate limit

Rate limitResponse limits
Rate limits and pagination500 requests per 15 min · per IP
Threat Investigation20 requests per 1 min · per firm

Response limits

EndpointsPage sizedefaultmax
GET /v1/leakslimit50100
GET /v1/leaks/{reportId}/credentialslimit50100
GET /v1/leak-eventslimit50100
GET /v1/scanslimit50100
GET /v1/scans/{scanId}/findingslimit50100
GET /v1/inventorylimit50100
GET /v1/analyseslimit25100
GET /v1/protection-resourceslimit50100
GET /v1/requestslimit50100
GET /v1/webhooks/{groupId}/deliverieslimit100100
GET /v1/watch/assetspageSize20200
GET /v1/watch/findingspageSize20200
GET /v1/hunter/searchlimit50200
GET /v1/hunter/auditlimit100500
GET /v1/hunter/targetspageSize50200
GET /v1/hunter/findingspageSize50200

Retrying

On 429, wait a moment and try again. Do NOT retry Threat Investigation searches automatically: blind retries use up the per-minute limit.

Was this page helpful?