| name | speak-rate-limits |
| description | Handle Speak API rate limits with exponential backoff, request queuing, and optimization strategies.
Use when implementing rate limits features,
or troubleshooting Speak language learning integration issues.
Trigger with phrases like "speak rate limits", "speak rate limits".
|
| allowed-tools | Read, Write, Edit, Bash(npm:*), Bash(curl:*), Grep |
| version | 1.14.0 |
| license | MIT |
| author | Jeremy Longshore <jeremy@intentsolutions.io> |
| tags | ["saas","speak","api"] |
| compatibility | Designed for Claude Code, also compatible with Codex and OpenClaw |
Speak Rate Limits
Overview
Handle Speak API rate limits with exponential backoff, request queuing, and optimization strategies.
Prerequisites
- Completed
speak-install-auth setup
- Valid API credentials configured
- Understanding of Speak API patterns
Instructions
Rate Limit Overview
| Tier | Assessments/min | Conversations/min | Audio upload/min |
|---|
| Free | 10 | 5 | 10 |
| Pro | 60 | 30 | 60 |
| Enterprise | 300 | 150 | 300 |
Rate-Limited Client
class RateLimitedSpeakClient {
private lastRequest = 0;
private minDelay: number;
constructor(private client: SpeakClient, requestsPerMinute: number = 60) {
this.minDelay = 60000 / requestsPerMinute;
}
private async throttle() {
const elapsed = Date.now() - this.lastRequest;
if (elapsed < this.minDelay) {
await new Promise( => (r, . - elapsed));
}
. = .();
}
() {
.();
.( ..(config));
}
retryOn429<T>(: <T>, maxRetries = ): <T> {
( i = ; i < maxRetries; i++) {
{
();
} (: ) {
(err.?. === && i < maxRetries - ) {
wait = (err..[] || ( ** i));
.();
( (r, wait * ));
;
}
err;
}
}
();
}
}