Skip to main content

Telephony

Concurrency and limits

How many calls run at once, and what happens past that.

What concurrency means

Concurrency is the number of active conversations running at the same moment. One concurrent call holds an LLM inference instance, a TTS streaming instance, an STT instance, and a telephony channel for as long as the conversation lasts. When the call ends, the slot frees immediately.

Concurrency is not calls per day. A Finn running 5 concurrent slots with two-minute calls completes roughly 150 calls per hour. Day and month caps are counted separately and enforced separately.

Plan limits

PlanMax concurrent (per Finn)Max concurrent (account-wide)Max calls per dayMax calls per month
Starter551,00010,000
Growth5020025,000250,000
Scale5001,000100,0002,000,000
EnterpriseCustomCustom (5,000+)CustomCustom

Two ceilings apply at once. A Growth account can run 200 concurrent calls total but no more than 50 through any single Finn. Splitting traffic across several Finns is how you use the account-wide headroom. See agents-overview.

The per-Finn limit exists because one Finn presents as one contact identity. Several hundred simultaneous dials from one identity produces a call pattern that does not look like a real business.

Estimating your peak

peak concurrent ≈ (calls per hour) × (average duration in minutes) / 60

A campaign of 1,000 calls at 2 minutes average, spread over 4 hours, is 250 calls/hour, so about 8 concurrent. An inbound clinic taking 30 calls/hour at lunch with 4-minute calls peaks near 2 concurrent.

Most accounts run under 100 concurrent in production. Start on a lower tier, measure real peaks in monitoring, and upgrade after you have numbers.

Phone numbers are usually the real limit

Platform capacity is rarely what stops a high-concurrency outbound run. Carriers cap simultaneous outbound calls per number.

RegionMax concurrent outbound per number
US/Canada~50
UK~30
EU (most)~20
India~10
Othervaries, often ~5-15

These are carrier-imposed. Exceed them and the destination carrier rejects the calls. Rejections count as failed attempts against your contacts, so an undersized pool burns list quality, not just throughput.

pool size ≈ peak concurrent / per-number limit × 1.5

500 concurrent US outbound needs about 15 numbers. Buy pools in the dashboard under phone numbers, not through the API. See phone-numbers and outbound-campaigns.

What happens when you hit the ceiling

Outbound and inbound behave differently.

DirectionBehavior past the limit
OutboundNew calls queue instead of failing. The queue drains as active calls complete.
InboundNew calls get a busy tone or the number's fallback voicemail, configured per number.

Both cases raise a yellow warning banner in the dashboard. Recurring banners mean the tier is undersized, not that something is broken. Inbound overflow is silent from the caller's side, so treat repeated banners on an inbound number as lost calls. Configure the fallback per number in inbound-routing.

The platform allows up to 20% above your concurrent limit for short bursts under 15 minutes. Sustained burst gets throttled. For a planned one-time spike, contact support 48 hours ahead so capacity is provisioned in advance.

Request rate limits

Concurrency limits calls. Separate limits govern API and webhook traffic.

ActionDefault limitPlan overrides
API requests (per key)100 req/minUp to 1,000/min on Scale, unlimited on Enterprise
Webhook deliveries (per endpoint)50 req/secUp to 500/sec on Scale
Audience bulk imports100,000 contacts per uploadHigher on Scale and above
Test calls (per Finn)30/hourSame across plans
New deployments launched10/hour50/hour on Scale and above

Rate-limited requests return 429 Too Many Requests with a Retry-After header.

curl -i -X POST https://api.hirefinn.ai/v1/calls \
  -H "Authorization: Bearer $FINN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"finn_id": "finn_abc123", "to": "+14155550123"}'
HTTP/1.1 429 Too Many Requests
Retry-After: 12

Honor Retry-After rather than retrying on a fixed interval. Tight retry loops keep the key rate-limited. See api-rate-limits and api-errors.

Quality under load

The latency target is under 800ms from end of caller speech to start of Finn response, and it holds at 1 call or 1,000 concurrent. Load is not what degrades a call. These are.

CauseEffectFix
Cross-region calling+100-300ms per hopRegional accounts (Enterprise), or accept it
Premium voice tier under loadHigher TTS varianceStandard voices are steadier under load
Knowledge base over 500 MBSlower retrievalTrim to smaller, focused files
0 to 100 concurrent in secondsCold-start spike on the first few callsRun scheduled test calls before the spike

Region is chosen at account creation and cannot be changed later without data migration. See data-residency.