Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.encrata.com/llms.txt

Use this file to discover all available pages before exploring further.

Limits by endpoint

Rate limits are applied per API key, not per IP. Each key has its own independent counter per endpoint.
EndpointLimitWindow
/api/agent/lookup60 requests1 minute
/api/agent/validate60 requests1 minute
/api/agent/breaches60 requests1 minute
/api/agent/ip60 requests1 minute
/api/agent/phone60 requests1 minute
/api/agent/domain30 requests1 minute
/api/agent/company30 requests1 minute
/api/agent/google30 requests1 minute
/api/agent/darkweb30 requests1 minute
/api/agent/monitors60 requests1 minute
/api/agent/lists60 requests1 minute
/api/webhooks/*30 requests1 minute
Enterprise plans get 10× the above limits (e.g. 600/min for lookup, 300/min for domain).

Response headers

Every response includes rate limit headers:
HeaderDescriptionExample
X-RateLimit-LimitMax requests in the current window60
X-RateLimit-RemainingRequests remaining42
X-RateLimit-ResetUnix timestamp when the window resets1716134460
When you’re rate limited (HTTP 429), an additional header is returned:
HeaderDescriptionExample
Retry-AfterSeconds until you can retry12

Handling rate limits

Exponential backoff

The recommended strategy is exponential backoff with the Retry-After header:
import time
import requests

def lookup_with_retry(email, api_key, max_retries=3):
    url = "https://encrata.com/api/agent/lookup"
    headers = {"Authorization": f"Bearer {api_key}"}

    for attempt in range(max_retries):
        resp = requests.post(url, headers=headers, json={"e": email})

        if resp.status_code == 429:
            retry_after = int(resp.headers.get("Retry-After", 2 ** attempt))
            time.sleep(retry_after)
            continue

        return resp.json()

    raise Exception("Max retries exceeded")

Best practices

Respect Retry-After

Always use the Retry-After header value instead of a fixed delay.

Spread requests

Distribute requests evenly across the window rather than bursting.

Use bulk endpoints

For high-volume lookups, use bulk endpoints instead of individual calls.

Monitor remaining

Check X-RateLimit-Remaining to preemptively slow down before hitting limits.