Skip to main content
← Back to API Reference

Rate Limiting Guide

Master API rate limits, headers, and production throttling strategies

API Reference
Rate Limits
Production Ready

Understanding Rate Limits

How WAVE counts and enforces API request limits

WAVE uses a sliding window algorithm with token bucket burst support to track API usage. Each request consumes tokens from your bucket, which refills at a constant rate.

Sliding Window

Your limit resets continuously. If you make 60 requests at 12:00:00, you can make another at 12:01:00.

Burst Allowance

Pro and Enterprise tiers allow short bursts above the sustained rate for handling traffic spikes.

Cost Weighting

Resource-intensive operations (transcoding, uploads) consume more tokens than simple reads.

Rate Limit Tiers

Free

$0/mo
100
requests per 1 minute
Concurrent5
Burst15
Daily Quota10,000
SLA99% uptime
100 requests per minute
5 concurrent connections
10,000 daily quota
Basic rate limit headers
Community support

Best for:

Prototyping
Personal projects
Development testing
Popular

Pro

$99/mo
1000
requests per 1 minute
Concurrent50
Burst200
Daily Quota500,000
SLA99.9% uptime
1,000 requests per minute
50 concurrent connections
500,000 daily quota
Advanced rate limit headers
Burst allowance: 200 requests

Best for:

Production apps
Growing startups
Medium traffic sites

Enterprise

Custom/mo
Unlimited
requests unlimited
Concurrent500+
BurstUnlimited
Daily QuotaUnlimited
SLA99.99% uptime
Unlimited API requests
500+ concurrent connections
No daily quota limits
Custom rate limit configuration
Dedicated IP allowlisting

Best for:

High-traffic platforms
Media companies
Live event broadcasting

Rate Limit Response Headers

Track your API usage with response headers

HTTP/1.1 200 OK
Content-Type: application/json
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 847
X-RateLimit-Reset: 1704067200
X-RateLimit-Window: 60
X-RateLimit-Policy: streams-list;w=60;burst=50
X-RateLimit-Scope: api-key
X-Daily-Quota-Remaining: 498532
HeaderTypeDescriptionExampleWhen Present
X-RateLimit-LimitintegerMaximum number of requests allowed in the current window1000Always
X-RateLimit-RemainingintegerNumber of requests remaining in the current window847Always
X-RateLimit-ResetintegerUnix timestamp (seconds) when the rate limit window resets1704067200Always
X-RateLimit-WindowintegerDuration of the rate limit window in seconds60Always
X-RateLimit-PolicystringRate limit policy identifier for this endpointstreams-create;w=60;burst=20Always
Retry-AfterintegerSeconds to wait before retrying (only on 429 responses)45429 responses only
X-RateLimit-ScopestringScope of the rate limit (api-key, user, ip, global)api-keyAlways
X-Daily-Quota-RemainingintegerRemaining daily quota (resets at midnight UTC)9847Free/Pro tiers

Handling 429 Too Many Requests

What to do when you hit rate limits

HTTP/1.1 429 Too Many Requests
Content-Type: application/json
Retry-After: 45
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1704067245

{
  "error": {
    "code": "rate_limit_exceeded",
    "message": "Rate limit exceeded. Please retry after 45 seconds.",
    "details": {
      "limit": 100,
      "remaining": 0,
      "reset": 1704067245,
      "retryAfter": 45,
      "scope": "api-key",
      "policy": "streams-create;w=60"
    }
  }
}

Quick Reference: Best Practices

Respect Retry-After

Always use the Retry-After header value instead of arbitrary delays.

Cache Aggressively

Cache API responses locally with appropriate TTLs to reduce redundant requests.

Use Webhooks

Replace polling with webhooks for real-time updates and massive rate limit savings.

Batch Operations

Use bulk endpoints and pagination instead of individual requests for multiple items.

Monitor Headers

Track X-RateLimit-Remaining and alert when below 20%.

Use Official SDKs

Our SDKs handle rate limits, retries, and backoff automatically. Don't reinvent the wheel.

WAVE - Enterprise Live Streaming Platform