Set concurrency limits
Protect capacity and spend with Concurrency Control. Layer the simple ceilings first, then add rate rules where you need them.
-
Set account ceilings, the broad gate, per direction.
{ "id": "acc_01jf18ah3jeb5w6dfp27sgjsbt", "name": "Acme Corp", "max_in": 100, "max_out": 50, "max_dialer": 20 } -
Cap a user so one extension can’t open unlimited simultaneous calls.
{ "id": "us_01jatt0336xwzg2zbf3q9pyfm5", "username": "1001", "max_simultaneous": 2 } -
Cap a number with a per-DID channel limit.
{ "e164": "12025550123", "max_channels": 10 } -
Add a sliding-window rate rule: e.g. no more than 10 outbound calls per minute, account-wide.
{"account_id": "acc_01jf18ah3jeb5w6dfp27sgjsbt", "scope_kind": "account", "scope_id": null,"direction": "out", "period_sec": 60, "max_count": 10, "hard": 1}Stack rules to cap both bursts and sustained volume (e.g. add a second rule
period_sec: 3600, max_count: 200). -
Verify the live counters for the account:
Terminal window curl 'https://nodes.sip.io/cac?accountId=acc_01jf18ah3jeb5w6dfp27sgjsbt'
If a counter ever sticks
Section titled “If a counter ever sticks”CAC counters self-heal via reconciliation against live calls, but if you ever need to force-clear a drifted counter:
curl -X POST https://nodes.sip.io/cac/reset -H 'content-type: application/json' -d '{ "accountId": "acc_01jf18ah3jeb5w6dfp27sgjsbt" }'