Rate limits
Per-second request limits by plan, plus the separate monthly link quota and bulk-create ceiling.
Three independent numbers govern what you can do — don't conflate them:
1. Per-second request rate (every /v1/* call)
A token-bucket limit, keyed to your API key, enforced on every request — reads, writes, and webhook management alike:
| Plan | Requests/second |
|---|---|
| Free | 2 |
| Plus | 5 |
| Team | 10 |
| Business/API | 50 |
| Enterprise | 50 (negotiable by contract; implemented identically to Business today) |
Every response — successful or not — carries:
X-RateLimit-Remaining: <n>
X-RateLimit-Limit: <n>
Exceeding it returns 429 with { "error": "Too many requests" } and a
Retry-After: <seconds> header.
2. Bulk-create's own ceiling
POST /v1/links/bulk is rate-limited separately from the table above —
100 requests/second, the same for every plan, since a single bulk
request can already create up to 5,000 links. This is on top of (not
instead of) your plan's per-item batch-size cap — see
Links.
3. Monthly link quota (not a rate limit)
How many links your plan can create per calendar month, across the dashboard and the API combined — there's no separate, larger API allowance. Check it anytime:
GET /v1/usage — scope: read
{
"periodStart": 1759276800,
"linksCreated": 42,
"linksQuota": 150,
"clicks": 318,
"plan": "free"
}
linksQuota is null on Enterprise (no cap). On Free/Plus/Team,
exceeding it returns 422 with { "error": "Monthly link quota exceeded", "remaining": 0 } —
upgrade to raise it, nothing is throttled without that explicit error.
Business/API doesn't hard-stop: it includes 50,000 links/month, then
bills overage per the pricing page.