You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs: add concurrent lines details and voice latency optimization guide
Enhance call-concurrency.mdx with account-level allocation, org pool sharing,
scaling tiers ($10/line/month, startup program, enterprise), purchase flow
with Steps component, inbound/outbound separation best practice, video
walkthrough, and FAQ section.
Create new voice-latency.mdx covering the full voice AI pipeline, LLM model
selection and prompt caching, STT/TTS provider selection, tool call
optimization, squad design, network/infrastructure, Weekly release channel,
and an optimization checklist.
Update docs.yml navigation to add voice latency page in Best practices section.
Closes DEVREL-578
Co-Authored-By: Claude Opus 4.6 <[email protected]>
@@ -10,31 +10,91 @@ description: Learn how concurrency slots work, how to stay within the default li
10
10
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.
11
11
12
12
**In this guide, you'll learn to:**
13
-
- Understand the default concurrency allocation and when it is usually sufficient
13
+
- Understand how concurrency is allocated at the account level
14
14
- Keep outbound and inbound workloads within plan limits
15
-
-Increase reserved capacity directly from the Vapi Dashboard
15
+
-Scale capacity through Dashboard add-ons, startup programs, or enterprise plans
16
16
- Inspect concurrency data through API responses and analytics queries
17
+
- Apply best practices for high-volume operations
17
18
18
-
## What is concurrency?
19
+
## How concurrency works
19
20
20
-
Every Vapi account includes **10 concurrent call slots** by default. When all slots are busy, new outbound dials or inbound connections wait until a slot becomes free.
21
+
Every Vapi account includes **10 concurrent call slots** by default. When all slots are busy, new outbound dials or inbound connections are blocked until a slot becomes free.
These limits ensure the underlying compute stays reliable for every customer. Higher concurrency requires reserving additional capacity, which Vapi provides through custom or add-on plans.
39
+
A single pool of 10 slots is shared across all three call types. If 6 inbound calls and 3 outbound calls are active, only 1 slot remains for any new call regardless of type.
40
+
41
+
### Organization pool sharing
42
+
43
+
When multiple organizations share the same billing subscription, they share the same concurrency pool. A call on Organization A counts against the same limit as a call on Organization B.
44
+
45
+
<Note>
46
+
If your inbound and outbound workloads compete for slots, consider separating them into different organizations under the same subscription. This does not increase total capacity, but lets you monitor and manage each workload independently.
47
+
</Note>
48
+
49
+
## Scaling your concurrency
50
+
51
+
Vapi offers several paths to increase concurrency beyond the default 10 slots.
52
+
53
+
| Tier | Concurrent slots | How to access |
54
+
|---|---|---|
55
+
| Default | 10 | Included with every account |
56
+
| Self-serve add-ons | Up to hundreds | Dashboard billing page, **$10 per line per month**|
57
+
| Startup program | 100 | Apply through the Vapi startup program |
58
+
| Enterprise | Custom | Contact Vapi sales for dedicated capacity |
59
+
| Platform scale | 1,000+ | Available for enterprise customers with reserved infrastructure |
60
+
61
+
### Purchase add-on lines
62
+
63
+
You can raise your concurrency limit without contacting support:
64
+
65
+
<Steps>
66
+
<Steptitle="Open the billing page">
67
+
Go to the [Vapi Dashboard](https://dashboard.vapi.ai/settings/billing) and navigate to **Settings > Billing**.
68
+
</Step>
69
+
<Steptitle="Find reserved concurrency">
70
+
Locate the **Reserved Concurrency (Call Lines)** section on the billing page.
71
+
</Step>
72
+
<Steptitle="Increase the limit">
73
+
Add the number of extra lines you need. Each additional line costs **$10 per month**.
74
+
</Step>
75
+
<Steptitle="Confirm the change">
76
+
Changes apply immediately. New slots are available for your next call.
77
+
</Step>
78
+
</Steps>
79
+
80
+
### Startup program
81
+
82
+
The Vapi startup program provides **100 concurrent call lines** to qualifying early-stage companies. Visit the [Vapi startup program](https://vapi.ai/startup) page to check eligibility and apply.
83
+
84
+
### Enterprise plans
85
+
86
+
Enterprise customers can negotiate custom concurrency allocations that include:
87
+
- Dedicated infrastructure for consistent performance at scale
Contact [Vapi sales](https://vapi.ai/enterprise) to discuss enterprise concurrency needs.
32
92
33
93
## Managing concurrency
34
94
35
95
### Outbound campaigns
36
96
37
-
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.
97
+
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.
38
98
39
99
### High-volume operations
40
100
@@ -47,16 +107,13 @@ If you regularly exceed **50,000 minutes per month**, talk with Vapi about:
47
107
Use billing reports to pair minute usage with concurrency spikes so you can upgrade before calls are blocked.
48
108
</Tip>
49
109
50
-
## Increase your concurrency limit
51
-
52
-
You can raise or reserve more call lines without contacting support:
110
+
### Separate inbound and outbound workloads
53
111
54
-
1. Open the [Vapi Dashboard](https://dashboard.vapi.ai/settings/billing).
55
-
2. Navigate to **Settings → Billing**.
56
-
3. Find **Reserved Concurrency (Call Lines)**.
57
-
4. Increase the limit or purchase add-on concurrency lines.
112
+
For production deployments where inbound availability is critical, create separate organizations for inbound and outbound traffic under the same subscription. This approach:
58
113
59
-
Changes apply immediately, so you can scale ahead of known traffic surges.
114
+
- Prevents outbound campaign surges from blocking incoming customer calls
115
+
- Gives each workload its own concurrency monitoring
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.
148
205
206
+
## Video walkthrough
207
+
208
+
Watch a walkthrough of concurrency management and scaling in the Vapi Dashboard:
<Accordiontitle="Is the concurrency limit per phone number or per account?">
224
+
Concurrency is an **account-level limit**. All calls across every phone number, assistant, and call type (inbound, outbound, web) share the same pool of slots.
225
+
</Accordion>
226
+
227
+
<Accordiontitle="What happens when all slots are full?">
228
+
New calls receive a `concurrencyBlocked: true` response and do not connect. For inbound calls, the caller hears a busy signal or your telephony provider's default behavior. Monitor the `remainingConcurrentCalls` field to avoid this.
229
+
</Accordion>
230
+
231
+
<Accordiontitle="How quickly do add-on lines activate?">
232
+
Add-on lines purchased through the Dashboard billing page activate **immediately**. No restart or configuration change is needed.
233
+
</Accordion>
234
+
235
+
<Accordiontitle="Do web calls count against my concurrency limit?">
236
+
Yes. Web calls initiated through the Vapi Web SDK consume concurrency slots from the same account-level pool as phone-based inbound and outbound calls.
237
+
</Accordion>
238
+
239
+
<Accordiontitle="Can I share concurrency across multiple organizations?">
240
+
Organizations under the same billing subscription share a single concurrency pool. A call on one organization reduces available slots for all organizations on that subscription.
241
+
</Accordion>
242
+
243
+
<Accordiontitle="How do I monitor concurrency in real time?">
244
+
Check the `subscriptionLimits` object returned with every `POST /call` response. For historical trends, use the Analytics API with the `subscription` table and `concurrency` column.
245
+
</Accordion>
246
+
</AccordionGroup>
247
+
149
248
## Next steps
150
249
151
-
-**[Call queue management](mdc:docs/calls/call-queue-management):** Build a Twilio queue to buffer calls when you hit concurrency caps.
152
-
-**[Outbound campaign planning](mdc:docs/outbound-campaigns/overview):** Design outbound strategies that pair batching with analytics.
153
-
-**[Enterprise plans](mdc:docs/enterprise/plans):**Review larger plans that include higher default concurrency.
250
+
-**[Call queue management](/calls/call-queue-management):** Build a Twilio queue to buffer calls when you hit concurrency caps.
251
+
-**[Outbound campaign planning](/outbound-campaigns/overview):** Design outbound strategies that pair batching with analytics.
252
+
-**[Voice latency optimization](/voice-latency):**Reduce response times across the voice AI pipeline.
0 commit comments