| name | assemblyai-rate-limits |
| description | Implement AssemblyAI rate limiting, backoff, and queue-based throttling.
Use when handling rate limit errors, implementing retry logic,
or managing concurrent transcription throughput.
Trigger with phrases like "assemblyai rate limit", "assemblyai throttling",
"assemblyai 429", "assemblyai retry", "assemblyai backoff".
|
| allowed-tools | Read, Write, Edit |
| version | 1.5.0 |
| license | MIT |
| author | Jeremy Longshore <jeremy@intentsolutions.io> |
| tags | ["saas","ai","speech-to-text","assemblyai","transcription"] |
| compatibility | Designed for Claude Code |
AssemblyAI Rate Limits
Overview
Handle AssemblyAI rate limits with exponential backoff, queue-based throttling, and concurrency management. AssemblyAI auto-scales limits for paid users.
Prerequisites
assemblyai package installed
- Understanding of async/await patterns
Rate Limit Tiers (Actual)
Async Transcription API
| Endpoint | Free | Pay-as-you-go |
|---|
POST /v2/transcript | 5/min | Scales with usage |
GET /v2/transcript/:id | No hard limit | No hard limit |
POST /v2/upload | 5/min | Scales with usage |
Streaming (WebSocket)
| Metric | Free | Pay-as-you-go |
|---|
| New streams/min | 5 | 100 (auto-scales) |
| Concurrent streams | ~5 | Unlimited (auto-scales 10% every 60s at 70% usage) |
LeMUR
| Metric | Free | Paid |
|---|
| Requests/min | Limited | Scales with usage |
| Max audio input | 100 hours per request | 100 hours per request |
Note: AssemblyAI auto-scales paid limits. At 70%+ utilization, the new session rate limit increases by 10% every 60 seconds with no ceiling cap.
Instructions
Step 1: Exponential Backoff with Jitter
import { AssemblyAI, type Transcript } from 'assemblyai';
const client = new AssemblyAI({
apiKey: process.env.ASSEMBLYAI_API_KEY!,
});
(): <> {
( attempt = ; attempt <= config.; attempt++) {
{
client..({
: audioUrl,
...options,
});
} (: ) {
(attempt === config.) err;
status = err. ?? err.;
(status && status !== && (status < || status >= )) err;
exponentialDelay = config. * .(, attempt);
jitter = .() * config.;
delay = .(exponentialDelay + jitter, config.);
.();
( (r, delay));
}
}
();
}