Vercel · infra · fg-0584

A per-IP rate limit on an AI route does not tell bots from people, so automated traffic can still run up your model bill

If you see AI provider usage keeps climbing while every single IP stays under the rate limit, the cause and the fix for Vercel are below, last verified 2026-11-05.

Verified Nov 2026trust 50/100
Symptom
AI provider usage keeps climbing while every single IP stays under the rate limitMany short sessions from different addresses hit the AI route without using the rest of the app
Cause
A rate limit counts requests from one source, such as an IP address or JA4 digest, and Vercel's WAF counts per region. It caps each source but does not check whether the caller is a person, so automated traffic spread across sources each stays under the limit while the total keeps calling your paid model.
Fix
Keep the rate limit, and also require a signed-in user on the AI route, call checkBotId() before any inference, and set a hard spend limit with the AI provider as a backstop.
Apply
import { checkBotId } from 'botid/server' import { NextRequest, NextResponse } from 'next/server' export async function POST(request: NextRequest) { const verification = await checkBotId() if (verification.isBot) { return NextResponse.json({ error: 'Access denied' }, { status: 403 }) } // check the session and the rate limit, then call the model }
Affected
Public AI routes on Vercel protected only by an IP-based rate limit
Sources

Last verified 2026-11-05 · Confirmed by 0 builders

Related traps

Have your agent know this before it fails

$ /plugin marketplace add getfootgun/footgun
$ /plugin install footgun@footgun