Three things worth knowing before you read further, because they shape every response:
lookups is required and has no default — you always name exactly what you want, and you are never charged latency for work you did not ask for.
Each lookup carries its own cache_hit, so one result can mix cached and freshly fetched fields.
A lookup that fails does not fail the request. You get 200, the field is absent, and the reason is in errors, which is present only when something failed — see partial failures.
WHOIS, DNS, SSL, headers, screenshots, reputation, email security, subdomains, CT logs, BGP and ASN, fingerprinting, threat intelligence, and DNS security (DNSSEC/CAA) in one request — with an aggregate risk score in every response.
Requests are rate-limited per API key with a sliding window. Every response includes headers that let your client adapt without guesswork.
Header
Description
X-RateLimit-Limit
Maximum requests per minute for your plan
X-RateLimit-Remaining
Requests remaining in the current window
Retry-After
Seconds to wait before retrying on 429
Freshness
Caching
Domain results are cached per lookup, per domain, each with its own TTL — 30 minutes for fast-moving data like dns and headers, up to 24 hours for whois and ct_logs. Every lookup object reports its own cache_hit, so a single result can mix cached and live fields. See the Domain Intelligence docs for the full table.
IP results work the same way, under a separate ip: key namespace — 24 hours for abuse_contact, 6 hours for reverse_dns, 30 minutes for threat_intel. geo and asn read a local database and are never cached, so their cache_hit is always false. See the IP Intelligence docs.
Failure Modes
Error Handling
HTTP errors cover malformed requests, auth failures, feature gating, and server-side faults. Partial lookup failures are returned inside successful responses instead.
Status
Meaning
400 Bad Request
Invalid request body, missing required fields, or invalid target
Sub-lookups can fail without failing the request. In those cases the API still returns 200 OK and surfaces the affected lookup details in the per-result errors array.
Tracing
Request Correlation
Pass an optional X-Client-Request-ID header for end-to-end tracing. The API echoes it back in response headers and includes it in server-side logs.
Self-Service
Account & Keys
Every plan can inspect its own usage and rotate its API key without contacting support.
Endpoint
Description
GET/v1/usage
Your aggregated usage for the last 30 days (override with ?days=1..365): request counts, cache hit rate, latency, status codes, and feature usage.
POST/v1/keys/rotate
Issues a fresh API key, returned exactly once. Previous keys keep working for a 24-hour grace window so deployed clients can be switched over without downtime.
Both are covered in full on the Account reference — parameters, every response field, four-language examples, and the sequence for rotating a key without downtime.
A rotated key is returned exactly once and cannot be retrieved again. Deploy it everywhere before old_keys_expire_at, after which the previous keys stop authenticating.
Release Notes
What's New
Every customer-facing change is listed on the changelog, newest first.