Skip to main content

Rate Limiting

The Tedro API enforces rate limits to protect the platform and ensure fair usage. Limits are applied per IP address and persist across server restarts.

Rate Limit Tiers

The API has three tiers of rate limiting, applied from most restrictive to least:

Sensitive Endpoints

High-security endpoints that handle password resets and credential operations:

Authentication Endpoints

All endpoints under /api/auth/*:
Sign-in has additional brute force protection: 5 failed attempts per email+IP triggers a 15-minute lockout, independent of the rate limit counter. See Authentication for details.

General API

All endpoints under /api/* (applied after auth-specific limits):

Response Headers

When rate limits are active, responses include standard rate limit headers (draft-7):

When You Exceed a Limit

If you exceed a rate limit, the API returns a 429 Too Many Requests response:
The response includes a Retry-After header indicating how many seconds to wait before retrying:

Best Practices

  1. Respect Retry-After — When you receive a 429, wait the specified number of seconds before retrying
  2. Implement exponential backoff — For automated scripts, use exponential backoff with jitter to avoid thundering herd effects
  3. Cache responses — Reduce API calls by caching GET responses on your end
  4. Use pagination efficiently — Fetch only the data you need with appropriate limit values
  5. Monitor headers — Track RateLimit-Remaining to proactively slow down before hitting limits

Example: Handling Rate Limits in Node.js