Back to Skills

deepgram-rate-limits

verified
View on GitHub

Marketplace

claude-code-plugins-plus

jeremylongshore/claude-code-plugins-plus-skills

Plugin

deepgram-pack

ai-ml

Repository

jeremylongshore/claude-code-plugins-plus-skills
1.1kstars

plugins/saas-packs/deepgram-pack/skills/deepgram-rate-limits/SKILL.md

Last Verified

January 22, 2026

Install Skill

Select agents to install to:

Scope:
npx add-skill https://github.com/jeremylongshore/claude-code-plugins-plus-skills/blob/main/plugins/saas-packs/deepgram-pack/skills/deepgram-rate-limits/SKILL.md -a claude-code --skill deepgram-rate-limits

Installation paths:

Claude
.claude/skills/deepgram-rate-limits/
Powered by add-skill CLI

Instructions

# Deepgram Rate Limits

## Overview
Implement proper rate limiting and backoff strategies for Deepgram API integration.

## Deepgram Rate Limits

| Plan | Concurrent Requests | Requests/Minute | Audio Hours/Month |
|------|---------------------|-----------------|-------------------|
| Pay As You Go | 100 | 1000 | Unlimited |
| Growth | 200 | 2000 | Included hours |
| Enterprise | Custom | Custom | Custom |

## Instructions

### Step 1: Implement Request Queue
Create a queue to manage concurrent request limits.

### Step 2: Add Exponential Backoff
Handle rate limit responses with intelligent retry.

### Step 3: Monitor Usage
Track request counts and audio duration.

### Step 4: Implement Circuit Breaker
Prevent cascade failures during rate limiting.

## Output
- Rate-limited request queue
- Exponential backoff handler
- Usage monitoring dashboard
- Circuit breaker implementation

## Examples

### TypeScript Rate Limiter
```typescript
// lib/rate-limiter.ts
interface RateLimiterConfig {
  maxConcurrent: number;
  maxPerMinute: number;
  retryAttempts: number;
  baseDelay: number;
}

export class DeepgramRateLimiter {
  private queue: Array<{
    fn: () => Promise<unknown>;
    resolve: (value: unknown) => void;
    reject: (error: Error) => void;
  }> = [];
  private activeRequests = 0;
  private requestsThisMinute = 0;
  private minuteStart = Date.now();
  private config: RateLimiterConfig;

  constructor(config: Partial<RateLimiterConfig> = {}) {
    this.config = {
      maxConcurrent: config.maxConcurrent ?? 50,
      maxPerMinute: config.maxPerMinute ?? 500,
      retryAttempts: config.retryAttempts ?? 3,
      baseDelay: config.baseDelay ?? 1000,
    };
  }

  async execute<T>(fn: () => Promise<T>): Promise<T> {
    return new Promise((resolve, reject) => {
      this.queue.push({
        fn,
        resolve: resolve as (value: unknown) => void,
        reject,
      });
      this.processQueue();
    });
  }

  private async processQueue() {
    // Reset minute

Validation Details

Front Matter
Required Fields
Valid Name Format
Valid Description
Has Sections
Allowed Tools
Instruction Length:
8534 chars