Christian
11/05/2025, 8:18 AMVapi Support Bot
11/05/2025, 8:20 AMjs
const MAX_CONCURRENCY = 10; // your Vapi org limit
let activeCalls = 0;
const queue = [];
function launchCall(callData) {
if (activeCalls < MAX_CONCURRENCY) {
activeCalls++;
vapi.calls.create(callData).finally(() => {
activeCalls--;
if (queue.length) launchCall(queue.shift());
});
} else {
queue.push(callData);
}
}
This pattern ensures you never exceed your concurrency limit, even when mixing campaigns and direct API calls. For large campaigns, Vapi will queue calls automatically, but for direct API calls, you must manage this logic yourself to avoid errors or dropped calls.
Reference: See the concurrency section in the [Outbound Campaigns Overview](https://docs.vapi.ai/outbound-campaigns/overview).
Source:
- [Outbound campaigns overview](https://docs.vapi.ai/outbound-campaigns/overview)