Skip to main content Implement Speak rate limiting, backoff, and idempotency patterns for language learning APIs.
Use when handling rate limit errors, implementing retry logic,
or optimizing API request throughput for Speak integrations.
Trigger with phrases like "speak rate limit", "speak throttling",
"speak 429", "speak retry", "speak backoff".
npx skills add jeremylongshore/claude-code-plugins-plus-skills --skill speak-rate-limits ai automation claude-code devops mcp ai-agents
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 => setTimeout(r, this.minDelay - elapsed));
}
this.lastRequest = Date.now();
}
async assessPronunciation(config: PronunciationConfig) {
await this.throttle();
return this.retryOn429(() => this.client.assessPronunciation(config));
}
private async retryOn429<T>(fn: () => Promise<T>, maxRetries = 3): Promise<T> {
for (let i = 0; i < maxRetries; i++) {
try {
return await fn();
} catch (err: any) {
if (err.response?.status === 429 && i < maxRetries - 1) {
const wait = parseInt(err.response.headers['retry-after'] || String(2 ** i));
console.log(`Rate limited. Waiting ${wait}s...`);
await new Promise(r => setTimeout(r, wait * 1000));
continue;
}
throw err;
}
}
throw new Error('Max retries exceeded');
}
}
Batch Assessment Queue async function batchAssess(client: RateLimitedSpeakClient, recordings: Recording[]) {
const results = [];
for (const rec of recordings) {
const result = await client.assessPronunciation({
audioPath: rec.path, targetText: rec.text, language: rec.lang,
});
results.push({ ...rec, score: result.score });
console.log(`Assessed "${rec.text}": ${result.score}/100`);
}
return results;
}
Output
Limits implementation complete
Speak API integration verified
Production-ready patterns applied
Error Handling Error Cause Solution 401 Unauthorized Invalid API key Verify SPEAK_API_KEY environment variable 429 Rate Limited Too many requests Wait Retry-After seconds, use backoff Audio format error Wrong codec/sample rate Convert to WAV 16kHz mono with ffmpeg Session expired Timeout after 30 min Start a new conversation session
Resources
Next Steps See speak-prod-checklist for production readiness.
Examples Basic : Apply rate limits with default configuration for a standard Speak integration.
Advanced : Customize for production with error recovery, monitoring, and team-specific requirements.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Set up and use 1Password CLI (op). Use when installing the CLI, enabling desktop app integration, signing in (single or multi-account), or reading/injecting/running secrets via op.
CLI to manage emails via IMAP/SMTP. Use `himalaya` to list, read, write, reply, forward, search, and organize emails from the terminal. Supports multiple accounts and message composition with MML (MIME Meta Language).
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Set up and use 1Password CLI (op). Use when installing the CLI, enabling desktop app integration, signing in (single or multi-account), or reading/injecting/running secrets via op.
CLI to manage emails via IMAP/SMTP. Use `himalaya` to list, read, write, reply, forward, search, and organize emails from the terminal. Supports multiple accounts and message composition with MML (MIME Meta Language).