Overview
Paid endpoints allow 60 requests a minute, expensive operations 10, and free reads 120. Over the limit, the API returns429 Too Many Requests and the SDK retries with backoff.
Limits keep usage fair and the system stable. Depending on the endpoint type, they apply per agent (by wallet address) or per IP address.
Rate Limits by Endpoint Type
Endpoint Categories
Paid Endpoints (60/min)
POST /v1/tools/email/quotePOST /v1/tools/email/sendPOST /v1/tools/enrich/emailPOST /v1/tools/enrich/profilePOST /v1/tools/verify/emailPOST /v1/tools/commerce/searchPOST /v1/tools/commerce/buyPOST /v1/tools/sms/send
Expensive Operations (10/min)
Resource-intensive operations get the strictest limit:POST /v1/tools/voice/call: voice callsPOST /v1/tools/research: deep web researchPOST /v1/tools/research/people: people discovery
Free Read Endpoints (120/min)
Read-only endpoints that need no payment:GET /v1/tools/inbox/list: email inbox listGET /v1/tools/inbox/:id: email detailsGET /v1/tools/sms/inbox: SMS inbox listGET /v1/tools/sms/inbox/:id: SMS detailsGET /v1/requests/:id: job status polling
Rate Limit Response
Exceeding a limit returns429 Too Many Requests:
Response Headers
Best Practices
Implement exponential backoff
Implement exponential backoff
On a 429, wait for the
retry_after period before retrying. If it repeats, increase the wait exponentially.Batch operations when possible
Batch operations when possible
Where available, send to many recipients in one request:
- SMS: up to 10 recipients per request
- Email: multiple recipients per send
Cache inbox results
Cache inbox results
Free read endpoints such as inbox list and status polling have generous limits. Caching results client-side still saves calls.
Let the SDK wait for results
Let the SDK wait for results
Both SDKs subscribe to a WebSocket push for the job and also poll
GET /v1/requests/:id on a short backoff (300ms → 2s, relaxing to 5s once the push channel is confirmed). Most results arrive within a few seconds of dispatch. If you poll by hand, make the first check sub-second and back off. There is no webhook for job completion.