Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion fern/apis/api/generators.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ groups:
python-sdk:
generators:
- name: fernapi/fern-python-sdk
version: 4.37.1
version: 4.55.5
api:
settings:
prefer-undiscriminated-unions-with-literals: true
Expand Down
143 changes: 121 additions & 22 deletions fern/calls/call-concurrency.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -10,31 +10,91 @@ description: Learn how concurrency slots work, how to stay within the default li
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
- Understand how concurrency is allocated at the account level
- Keep outbound and inbound workloads within plan limits
- Increase reserved capacity directly from the Vapi Dashboard
- Scale capacity through Dashboard add-ons, startup programs, or enterprise plans
- Inspect concurrency data through API responses and analytics queries
- Apply best practices for high-volume operations

## What is concurrency?
## How concurrency works

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

<CardGroup cols={2}>
<Card title="Inbound agents" icon="phone" iconType="solid">
Rarely hit concurrency caps unless traffic surges (launches, seasonal spikes).
### Account-level allocation

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:

<CardGroup cols={3}>
<Card title="Inbound calls" icon="phone" iconType="solid">
Phone calls and SIP connections that reach your assistants.
</Card>
<Card title="Outbound agents" icon="phone-outgoing" iconType="solid">
More likely to reach limits when running large calling batches.
<Card title="Outbound calls" icon="phone-outgoing" iconType="solid">
Calls your application initiates through the API or campaigns.
</Card>
<Card title="Web calls" icon="globe" iconType="solid">
Browser-based sessions using the Vapi Web SDK.
</Card>
</CardGroup>

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

### Organization pool sharing

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.

<Note>
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.
</Note>

## Scaling your concurrency

Vapi offers several paths to increase concurrency beyond the default 10 slots.

| Tier | Concurrent slots | How to access |
|---|---|---|
| Default | 10 | Included with every account |
| Self-serve add-ons | Up to hundreds | Dashboard billing page, **$10 per line per month** |
| Startup program | 100 | Apply through the Vapi startup program |
| Enterprise | Custom | Contact Vapi sales for dedicated capacity |
| Platform scale | 1,000+ | Available for enterprise customers with reserved infrastructure |

### Purchase add-on lines

You can raise your concurrency limit without contacting support:

<Steps>
<Step title="Open the billing page">
Go to the [Vapi Dashboard](https://dashboard.vapi.ai/settings/billing) and navigate to **Settings > Billing**.
</Step>
<Step title="Find reserved concurrency">
Locate the **Reserved Concurrency (Call Lines)** section on the billing page.
</Step>
<Step title="Increase the limit">
Add the number of extra lines you need. Each additional line costs **$10 per month**.
</Step>
<Step title="Confirm the change">
Changes apply immediately. New slots are available for your next call.
</Step>
</Steps>

### Startup program

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.

### Enterprise plans

Enterprise customers can negotiate custom concurrency allocations that include:
- Dedicated infrastructure for consistent performance at scale
- Concurrency levels above 1,000 simultaneous calls
- Priority support for capacity planning

Contact [Vapi sales](https://vapi.ai/enterprise) to discuss enterprise concurrency needs.

## Managing concurrency

### Outbound campaigns

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

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

## Increase your concurrency limit

You can raise or reserve more call lines without contacting support:
### Separate inbound and outbound workloads

1. Open the [Vapi Dashboard](https://dashboard.vapi.ai/settings/billing).
2. Navigate to **Settings → Billing**.
3. Find **Reserved Concurrency (Call Lines)**.
4. Increase the limit or purchase add-on concurrency lines.
For production deployments where inbound availability is critical, create separate organizations for inbound and outbound traffic under the same subscription. This approach:

Changes apply immediately, so you can scale ahead of known traffic surges.
- Prevents outbound campaign surges from blocking incoming customer calls
- Gives each workload its own concurrency monitoring
- Simplifies capacity planning for each use case

## View concurrency in call responses

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

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.

## Video walkthrough

Watch a walkthrough of concurrency management and scaling in the Vapi Dashboard:

<iframe
width="560"
height="315"
src="https://www.youtube.com/embed/iWZD_HBk9zQ"
title="Vapi Concurrency Management"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowFullScreen
/>

## FAQ

<AccordionGroup>
<Accordion title="Is the concurrency limit per phone number or per account?">
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.
</Accordion>

<Accordion title="What happens when all slots are full?">
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.
</Accordion>

<Accordion title="How quickly do add-on lines activate?">
Add-on lines purchased through the Dashboard billing page activate **immediately**. No restart or configuration change is needed.
</Accordion>

<Accordion title="Do web calls count against my concurrency limit?">
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.
</Accordion>

<Accordion title="Can I share concurrency across multiple organizations?">
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.
</Accordion>

<Accordion title="How do I monitor concurrency in real time?">
Check the `subscriptionLimits` object returned with every `POST /call` response. For historical trends, use the Analytics API with the `subscription` table and `concurrency` column.
</Accordion>
</AccordionGroup>

## Next steps

- **[Call queue management](mdc:docs/calls/call-queue-management):** Build a Twilio queue to buffer calls when you hit concurrency caps.
- **[Outbound campaign planning](mdc:docs/outbound-campaigns/overview):** Design outbound strategies that pair batching with analytics.
- **[Enterprise plans](mdc:docs/enterprise/plans):** Review larger plans that include higher default concurrency.
- **[Call queue management](/calls/call-queue-management):** Build a Twilio queue to buffer calls when you hit concurrency caps.
- **[Outbound campaign planning](/outbound-campaigns/overview):** Design outbound strategies that pair batching with analytics.
- **[Voice latency optimization](/voice-latency):** Reduce response times across the voice AI pipeline.
3 changes: 3 additions & 0 deletions fern/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -368,6 +368,9 @@ navigation:
- page: IVR navigation
path: ivr-navigation.mdx
icon: fa-light fa-phone-office
- page: Voice latency optimization
path: voice-latency.mdx
icon: fa-light fa-gauge-high
- section: Testing
collapsed: true
icon: fa-light fa-clipboard-check
Expand Down
Loading
Loading