Understanding Call Concurrency

Plan, monitor, and scale simultaneous Vapi calls

Overview

Call concurrency represents how many Vapi calls can be active at the same time. Each call occupies one slot, similar to using a finite set of phone lines.

In this guide, you’ll learn to:

  • Understand the default concurrency allocation and when it is usually sufficient
  • Keep outbound and inbound workloads within your subscription’s concurrency limit
  • Increase capacity with concurrent call line add-ons
  • Inspect concurrency data through API responses and analytics queries

What is concurrency?

Usage only or your Success Package determines how many concurrent call slots your subscription includes. When all slots are busy, you cannot start an outbound call or accept an inbound call until a slot becomes available. See Pricing and Success Packages for the included limits.

Inbound agents

Rarely hit concurrency caps unless traffic surges (launches, seasonal spikes).

Outbound agents

More likely to reach limits when running large calling batches.

These limits help keep calls reliable for every customer. You can increase concurrency by adding concurrent call lines to your subscription.

Managing concurrency

Outbound campaigns

Batch long lead lists into smaller chunks (for example, 50–100 numbers) and run those batches sequentially. This keeps your peak concurrent calls near the default limit while still working through large sets quickly.

High-volume operations

If you regularly need more simultaneous calls, compare the concurrency included with each Success Package or purchase concurrent call line add-ons.

Use billing reports to pair minute usage with concurrency spikes so you can upgrade before calls are blocked.

Increase your concurrency limit

Usage only and your optional Success Package determine the concurrency included with your subscription. You can purchase concurrent call line add-ons for more capacity. See Buy capacity add-ons. The Dashboard shows when the additional capacity takes effect before you confirm the purchase.

View concurrency in call responses

When you create a call with POST /call, the response includes a subscriptionLimits object that shows the current state of your account.

Example request

curl 'https://api.vapi.ai/call' \
-H 'authorization: Bearer {VAPI-PRIVATE-TOKEN}' \
-H 'content-type: application/json' \
--data-raw '{
"assistantId": "4a170597-a0c2-4657-8c32-cb93f080cead",
"customer": {"number": "+918936850777"},
"phoneNumberId": "c6ea6cb0-0dfb-4a65-918f-6a33abb54b64"
}'

Example response snippet

{
"subscriptionLimits": {
"concurrencyBlocked": false,
"concurrencyLimit": 10,
"remainingConcurrentCalls": 9
},
"id": "019a9046-121e-766d-bd1f-84f3ccc309c1",
"status": "queued"
}

Field reference

  • concurrencyBlocked — true if the call could not start because all slots were full.
  • concurrencyLimit — Total concurrent call slots currently available to your org.
  • remainingConcurrentCalls — How many slots were open at the time you created the call.

Build monitoring around these values to alert when you approach the cap.

Track concurrency with the Analytics API

Use the /analytics endpoint to review historical concurrency usage and spot patterns that justify more capacity.

Example request

curl 'https://api.vapi.ai/analytics' \
-H 'authorization: Bearer {VAPI-PRIVATE-TOKEN}' \
-H 'content-type: application/json' \
--data-raw '{
"queries": [{
"name": "Number of Concurrent Calls",
"table": "subscription",
"timeRange": {
"start": "2025-10-16T18:30:00.000Z",
"end": "2025-11-17T05:31:10.184Z",
"step": "day"
},
"operations": [{
"operation": "max",
"column": "concurrency",
"alias": "concurrency"
}]
}]
}'

Example response

[{
"name": "Number of Concurrent Calls",
"timeRange": {
"start": "2025-10-16T18:30:00.000Z",
"end": "2025-11-17T05:31:10.184Z",
"step": "day",
"timezone": "UTC"
},
"result": [
{ "date": "2025-11-05T00:00:00.000Z", "concurrency": 0 },
{ "date": "2025-11-10T00:00:00.000Z", "concurrency": 1 },
{ "date": "2025-11-17T00:00:00.000Z", "concurrency": 1 }
]
}]

Adjust the timeRange.step to inspect usage by hour, day, or week. Peaks that align with campaign launches, seasonality, or support events highlight when you should reserve additional call lines.

Next steps