Skip to main content

Rate Limits

SendSeven enforces rate limits to ensure fair usage and platform stability.

Limits

Endpoint TypeLimit
Standard endpoints100 requests/minute
Bulk operations10 requests/minute
Webhook deliveries1000 events/minute

Rate limit headers

Every response includes rate limit information:

X-RateLimit-Limit: 100
X-RateLimit-Remaining: 87
X-RateLimit-Reset: 1706889600
HeaderDescription
X-RateLimit-LimitMaximum requests per window
X-RateLimit-RemainingRequests remaining in current window
X-RateLimit-ResetUnix timestamp when the window resets

When you hit the limit

A 429 Too Many Requests response is returned:

HTTP/1.1 429 Too Many Requests
Retry-After: 45

{
"detail": "Rate limit exceeded. Retry after 45 seconds.",
"error_code": "RATE_LIMITED"
}

Handling rate limits

import time
import requests

def request_with_backoff(url, headers, max_retries=5):
for attempt in range(max_retries):
response = requests.get(url, headers=headers)
if response.status_code != 429:
return response
retry_after = int(response.headers.get("Retry-After", 2 ** attempt))
time.sleep(retry_after)
raise Exception("Max retries exceeded")

Tips to avoid rate limits

  • Batch requests where possible instead of making individual calls
  • Cache responses for data that doesn't change frequently (contacts, tags)
  • Use webhooks instead of polling for real-time updates
  • Respect Retry-After headers - don't retry immediately