## TL;DR
Twilio caps how many calls per second an account may start, and a parallel dialer that ignores the cap gets 13224 rejections. Throttle the dialer to stay under the account's calls-per-second limit, queue the overflow, and back off when a 13224 slips through instead of retrying immediately.

## The query

```text
twilio error 13224 'dial: too many requests'  -  agent's parallel dialer hit the CPS limit
```

## Steps

### 1. Find the account's actual calls-per-second limit
Check the Twilio console for the account's CPS limit (it varies by account type and history). Treat that number as the hard ceiling, not a target: aim to run at 80 percent of it.

Expected: a known CPS ceiling and a target rate below it.

### 2. Throttle the dialer with a rate limiter
Put a token-bucket or fixed-window rate limiter in front of every call-creation request, shared across all parallel workers and agents on the account. The limiter, not each worker's good intentions, enforces the pace.

Expected: call-creation requests never exceed the target rate no matter how many workers run.

### 3. Queue overflow instead of dropping it
When the dialer has more calls ready than the limiter allows, hold them in a queue with their scheduled times. Dials go out in order as capacity frees up; nothing is lost to the throttle.

Expected: all queued calls eventually dial, delayed rather than failed.

### 4. Back off on 13224 instead of retrying hot
If a 13224 still arrives (limits can shift), pause new call creation briefly with exponential backoff before resuming. Log each occurrence so a rising trend triggers a limit-increase request rather than silent retries.

Expected: 13224 events become rare and self-recovering.

## Use this when

- Twilio dialing fails with error 13224 dial too many requests
- A parallel dialer or several agents share one Twilio account
- Failures started when dial concurrency increased

## Not for this skill when

- Dials fail with 21211 (that is malformed numbers, not rate)
- Twilio rejects for insufficient balance or geo permissions
- Calls connect but audio quality is poor

## Variant phrasings

### twilio 13224 dial too many requests
Code-first phrasing. Same throttle-and-queue fix.

### twilio cps limit parallel dialer
Limit-first phrasing. The shared rate limiter is the key step.

### agent hitting twilio rate limit on outbound calls
Symptom phrasing. Confirm the code is 13224 before tuning concurrency.

## Why it happens
Twilio protects its voice infrastructure with a per-account calls-per-second ceiling. A parallel dialer multiplies workers, and each worker dialing at full speed overshoots the shared ceiling fast. The 13224 is Twilio shedding the excess load. Agents make it worse by treating 13224 as transient and retrying immediately, which keeps the account pinned at the limit.

## Edge cases

- CPS limits can be raised by request for accounts in good standing. If the business genuinely needs more throughput, request the increase instead of dancing under a too-low cap.
- Different Twilio products have separate limits. A dialer that also sends SMS shares no quota with voice, but two voice use cases do.
- Bursts within a single second can trip the limiter even when the average rate is fine. Smooth the dial pattern rather than batching dials on second boundaries.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_WwvsrgaD4OsR-BPNhiO7jA
