Rate Limiting

Protect your API endpoints with configurable rate limiting. Supports fixed window, sliding window, and token bucket algorithms with multiple storage backends.

throttleapiprotectionlimits

Providers

rate-limiter-flexible

Flexible rate limiting with multiple algorithms and storage backends

rate-limiter-flexible

Upstash

Serverless Redis-based rate limiting with edge support

@upstash/ratelimit
UPSTASH_REDIS_REST_URLUPSTASH_REDIS_REST_TOKEN

In-Memory

Process-local rate limiting for development and single-instance apps

Usage

Rate limit an API route

Apply rate limiting middleware to an endpoint

import { ratelimit } from '@/lib/ratelimit'

export async function POST(req: Request) {
  const ip = req.headers.get('x-forwarded-for') ?? 'unknown'
  const { success, remaining } = await ratelimit.limit(ip, {
    requests: 10,
    window: '1m',
  })

  if (!success) {
    return Response.json({ error: 'Too many requests' }, { status: 429 })
  }

  // Handle request...
}

Get Started

Add rate limiting to your Primstack project with a single command:

prim ratelimit init