Before you start
1
Get a production API key with the calls:write scope
Issued from your dashboard. (Demo keys are capped at 120 req/min and restricted to an allowlist of
destinations; production keys allow 600 req/min and any destination.)
2
Have at least one active phone number
Calls originate from a number on your account.
3
Use destinations you own or control
For a load test, dial numbers you control, never real third parties.
All requests go to
https://api.revdesk.com. Rate-limit headers (X-RateLimit-Limit,
X-RateLimit-Remaining, X-RateLimit-Reset) are returned on every response.Place a call
202) and progresses asynchronously. Check its status anytime:
Run a concurrency test
The pattern: fire N calls at once, hold a concurrency cap, and record success rate + latency as you ramp. Below is a self-contained Node script with no dependencies beyondfetch.
Concurrency & capacity
Capacity is measured in concurrent channels: one channel carries one in-progress call leg. Your account has a provisioned concurrent-channel limit, sized to your expected peak. When you exceed it, additional calls are rejected: the placement fails, calls don’t queue. It’s a provisioned setting, not a hard platform limit; tell us your peak and we raise it ahead of launch. How many concurrent calls that allows depends on the path, since a channel is per leg:
For maximum concurrency, use a path where only the destination is on the phone network (the agent or
rep joins over WebRTC). That’s 1 channel per call. The dial bridge rings two phones, so it uses 2.
Two independent limits to keep distinct:
- Request rate. 600 requests/minute per key. Exceeding it returns
429withX-RateLimit-*headers. - Concurrent channels. Your provisioned limit. Exceeding it fails the call placement with a
channel-limit error; it is not a
429.
What to measure
Results
A call is accepted (202) and dispatched asynchronously; subscribe to webhooks or poll
GET /v1/calls/{id} for live status. The ceiling is your provisioned concurrent-channel limit, at
which further placements return a channel-limit error. We size that limit to your peak before go-live.
Fill the table for your account and path:
Planning for high volume? Tell us your peak expected concurrency and we’ll provision capacity
ahead of your launch.