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.
- 🛑 Set rate limits per API route
- 🕒 Returns seconds until reset
- ⚡ Takes seconds to setup
- 🧾 Response x-ratelimit headers
- 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
- Add
nuxt-rate-limit
to themodules
section ofnuxt.config.ts
export default defineNuxtConfig({
modules: ['nuxt-rate-limit'],
})
That's it! You can now use Nuxt Rate Limit in your Nuxt app ✨
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 |
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,
},
},
},
})
You can also add limits per route:
export default defineNuxtConfig({
nuxtRateLimit: {
routes: {
'/api/hello': {
maxRequests: 5,
intervalSeconds: 10,
},
'/api/goodbye': {
maxRequests: 15,
intervalSeconds: 60,
},
},
},
})