Docs/Rate Limits

Rate Limits

Understand the request limits for each plan and how to handle them gracefully.

Limits by plan

PlanRate LimitDaily Limit
Free60 requests / minute25 verifications
Pro300 requests / minutePer plan allocation
Business300 requests / minutePer plan allocation

Rate limit response

When you exceed the rate limit, you'll receive a 429 Too Many Requests response:

json
{
  "error": "Too Many Requests",
  "message": "Rate limit exceeded. Please slow down.",
  "status_code": 429,
  "retry_after": 15
}

Retry-After header

The Retry-After response header indicates how many seconds to wait before retrying:

http
HTTP/1.1 429 Too Many Requests
Retry-After: 15
Content-Type: application/json

Handling rate limits in code

python
import requests, time

def verify_with_retry(email, api_key, max_retries=3):
    for attempt in range(max_retries):
        response = requests.post(
            "https://verimails.com/api/verify/single",
            headers={"Authorization": f"Bearer {api_key}"},
            json={"email": email}
        )

        if response.status_code == 200:
            return response.json()

        if response.status_code == 429:
            retry_after = int(response.headers.get("Retry-After", 15))
            print(f"Rate limited. Waiting {retry_after}s...")
            time.sleep(retry_after)
            continue

        response.raise_for_status()

    raise Exception("Max retries exceeded")

Best practices