Skip to content

timb-103/nuxt-rate-limit

Repository files navigation

Nuxt Rate Limit

Add rate limits to your Nuxt 3 API routes.

By default, this module will add a rate limit to any requests to a /api endpoint.

Features

  • 🛑 Set rate limits per API route
  • 🕒 Returns seconds until reset
  • ⚡ Takes seconds to setup
  • 🧾 Response x-ratelimit headers

Quick Setup

  1. Add nuxt-rate-limit dependency to your project
pnpm add -D nuxt-rate-limit
yarn add --dev nuxt-rate-limit
npm install --save-dev nuxt-rate-limit
  1. Add nuxt-rate-limit to the modules section of nuxt.config.ts
export default defineNuxtConfig({
  modules: ['nuxt-rate-limit'],
})

That's it! You can now use Nuxt Rate Limit in your Nuxt app ✨

Options

name type default description
enabled boolean true Enabled/disable the rate limit module
headers boolean true Add x-ratelimit headers to response
statusMessage string Too many requests. Please try again in :value: seconds. Customize error message. :value: will be replaced by seconds until reset
routes object {} Add rate limits per route

Default Rate Limit

By default, we add a rate limit to all of your /api routes. You can override this setting by adding /api/* to the nuxtRateLimit routes in your nuxt.config.ts:

export default defineNuxtConfig({
  nuxtRateLimit: {
    routes: {
      '/api/*': {
        maxRequests: 100,
        intervalSeconds: 60,
      },
    },
  },
})

Different limits per route

You can also add limits per route:

export default defineNuxtConfig({
  nuxtRateLimit: {
    routes: {
      '/api/hello': {
        maxRequests: 5,
        intervalSeconds: 10,
      },
      '/api/goodbye': {
        maxRequests: 15,
        intervalSeconds: 60,
      },
    },
  },
})