API rate limits + retry behaviour
What our limits are, how you'll know when you hit them, how to back off properly.
01
Default limits
- **100 requests / minute / tenant** for /api/v1/* endpoints (calls, leads, sms).
- **10 outbound calls / minute** to prevent dialer abuse.
- **5 SMS / second** to a single recipient (carrier filtering).
02
How you'll know
- Hit a limit → 429 status code.
- Headers tell you:
X-RateLimit-Limit,X-RateLimit-Remaining,X-RateLimit-Reset(unix timestamp).
03
Recommended backoff
- **Exponential backoff with jitter**: wait
min(2^attempt + random(0,1), 60)seconds. - After 5 attempts, give up + alert on your end.
- Use a job queue (Bull, RQ, Sidekiq) for any sustained API workload.
04
Bulk operations
- Don't hammer /api/v1/calls — use batches.
- To dial 1,000 leads: upload CSV via /api/v1/leads (one request) + start a campaign (one request).
- Campaign engine paces dialing automatically respecting ACMA + your concurrency.
05
Higher limits
- Need more? Contact sales@voxreach.com.au with your traffic profile.
- Volume-tier customers get automatic higher limits.
Related articles
Tenant API access
Per-tenant API key. Push leads, fetch transcripts, query usage. Rate-limited 120 req/min.
Webhook subscriptions
Subscribe to events: call.ended, call.interested, call.opt_out, sms.received, lead.imported.
Trigger an outbound call via API (for IT teams)
POST a call from your stack — webhook + SDK + curl examples.
Verify webhook signatures (HMAC-SHA256)
Cryptographically verify that an incoming webhook came from VoxReach.
Still stuck?
Email hello@voxreach.com.au — we reply within 2 business hours during AEST hours.
Open a ticket