Skip to content

Commit 365b155

Browse files
Vapi Taskerclaude
andcommitted
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]>
1 parent ff44ad8 commit 365b155

File tree

3 files changed

+422
-22
lines changed

3 files changed

+422
-22
lines changed

fern/calls/call-concurrency.mdx

Lines changed: 121 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -10,31 +10,91 @@ description: Learn how concurrency slots work, how to stay within the default li
1010
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.
1111

1212
**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
1414
- 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
1616
- Inspect concurrency data through API responses and analytics queries
17+
- Apply best practices for high-volume operations
1718

18-
## What is concurrency?
19+
## How concurrency works
1920

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.
2122

22-
<CardGroup cols={2}>
23-
<Card title="Inbound agents" icon="phone" iconType="solid">
24-
Rarely hit concurrency caps unless traffic surges (launches, seasonal spikes).
23+
### Account-level allocation
24+
25+
Concurrency is an **account-level limit**, not a per-phone-number or per-assistant limit. All calls across your organization draw from the same pool:
26+
27+
<CardGroup cols={3}>
28+
<Card title="Inbound calls" icon="phone" iconType="solid">
29+
Phone calls and SIP connections that reach your assistants.
2530
</Card>
26-
<Card title="Outbound agents" icon="phone-outgoing" iconType="solid">
27-
More likely to reach limits when running large calling batches.
31+
<Card title="Outbound calls" icon="phone-outgoing" iconType="solid">
32+
Calls your application initiates through the API or campaigns.
33+
</Card>
34+
<Card title="Web calls" icon="globe" iconType="solid">
35+
Browser-based sessions using the Vapi Web SDK.
2836
</Card>
2937
</CardGroup>
3038

31-
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+
<Step title="Open the billing page">
67+
Go to the [Vapi Dashboard](https://dashboard.vapi.ai/settings/billing) and navigate to **Settings > Billing**.
68+
</Step>
69+
<Step title="Find reserved concurrency">
70+
Locate the **Reserved Concurrency (Call Lines)** section on the billing page.
71+
</Step>
72+
<Step title="Increase the limit">
73+
Add the number of extra lines you need. Each additional line costs **$10 per month**.
74+
</Step>
75+
<Step title="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
88+
- Concurrency levels above 1,000 simultaneous calls
89+
- Priority support for capacity planning
90+
91+
Contact [Vapi sales](https://vapi.ai/enterprise) to discuss enterprise concurrency needs.
3292

3393
## Managing concurrency
3494

3595
### Outbound campaigns
3696

37-
Batch long lead lists into smaller chunks (for example, 50100 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.
3898

3999
### High-volume operations
40100

@@ -47,16 +107,13 @@ If you regularly exceed **50,000 minutes per month**, talk with Vapi about:
47107
Use billing reports to pair minute usage with concurrency spikes so you can upgrade before calls are blocked.
48108
</Tip>
49109

50-
## Increase your concurrency limit
51-
52-
You can raise or reserve more call lines without contacting support:
110+
### Separate inbound and outbound workloads
53111

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:
58113

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
116+
- Simplifies capacity planning for each use case
60117

61118
## View concurrency in call responses
62119

@@ -146,8 +203,50 @@ curl 'https://api.vapi.ai/analytics' \
146203

147204
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.
148205

206+
## Video walkthrough
207+
208+
Watch a walkthrough of concurrency management and scaling in the Vapi Dashboard:
209+
210+
<iframe
211+
width="560"
212+
height="315"
213+
src="https://www.youtube.com/embed/iWZD_HBk9zQ"
214+
title="Vapi Concurrency Management"
215+
frameBorder="0"
216+
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
217+
allowFullScreen
218+
/>
219+
220+
## FAQ
221+
222+
<AccordionGroup>
223+
<Accordion title="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+
<Accordion title="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+
<Accordion title="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+
<Accordion title="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+
<Accordion title="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+
<Accordion title="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+
149248
## Next steps
150249

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.

fern/docs.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -368,6 +368,9 @@ navigation:
368368
- page: IVR navigation
369369
path: ivr-navigation.mdx
370370
icon: fa-light fa-phone-office
371+
- page: Voice latency optimization
372+
path: voice-latency.mdx
373+
icon: fa-light fa-gauge-high
371374
- section: Testing
372375
collapsed: true
373376
icon: fa-light fa-clipboard-check

0 commit comments

Comments
 (0)