Skip to content
DocsStart free

Set concurrency limits

Protect capacity and spend with Concurrency Control. Layer the simple ceilings first, then add rate rules where you need them.

  1. Set account ceilings, the broad gate, per direction.

    { "id": "acc_01jf18ah3jeb5w6dfp27sgjsbt", "name": "Acme Corp", "max_in": 100, "max_out": 50, "max_dialer": 20 }
  2. Cap a user so one extension can’t open unlimited simultaneous calls.

    { "id": "us_01jatt0336xwzg2zbf3q9pyfm5", "username": "1001", "max_simultaneous": 2 }
  3. Cap a number with a per-DID channel limit.

    { "e164": "12025550123", "max_channels": 10 }
  4. 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).

  5. Verify the live counters for the account:

    Terminal window
    curl 'https://nodes.sip.io/cac?accountId=acc_01jf18ah3jeb5w6dfp27sgjsbt'

CAC counters self-heal via reconciliation against live calls, but if you ever need to force-clear a drifted counter:

Terminal window
curl -X POST https://nodes.sip.io/cac/reset -H 'content-type: application/json' -d '{ "accountId": "acc_01jf18ah3jeb5w6dfp27sgjsbt" }'