Rate Limits & Usage Quotas
Enforced rate limits per tier using Redis sliding window counters.
Getting Started
Active Tier Rate Limits
FREE plan allows up to 30 req/min (1,000 req/mo). BASIC allows 300 req/min (50,000 req/mo), PRO allows 500 req/min (250,000 req/mo), and PREMIUM supports up to 1,000+ req/min (1,000,000 req/mo). When limits are exceeded, HTTP 429 Too Many Requests is returned with a Retry-After header.
Live Plan Quotas & Rate Limits Matrix
Real-time Config| Subscription Tier | Speed Limit (RPM) | Monthly Allowance | Active API Keys | Key Lifecycle | Spam Lockout Penalty |
|---|---|---|---|---|---|
| FREE | 30 req/min | 1,000 req/mo | 1 Key | 30 Days | 15 Minutes |
| BASIC | 300 req/min | 50,000 req/mo | 3 Keys | Lifetime | 15 Minutes |
| PRO | 500 req/min | 250,000 req/mo | 10 Keys | Lifetime | 15 Minutes |
| PREMIUM | 1,000+ req/min | 1,000,000 req/mo | 30 Keys | Lifetime | 15 Minutes |
HTTP Rate Limit Response Headers
| HTTP Header | Type | Description |
|---|---|---|
| X-RateLimit-Limit | Integer | The maximum number of allowed requests in the current 60-second window. |
| X-RateLimit-Remaining | Integer | Number of remaining requests available before hitting the rate limit. |
| X-RateLimit-Reset | Unix Timestamp | Unix epoch timestamp in seconds when the current rate limit window resets. |
| Retry-After | Seconds | Returned on HTTP 429 errors indicating how many seconds client must wait before retrying. |
Handling Rate Limits with Exponential Backoff
For resilient production integrations in AI agents, automated pipelines, or background workers, implement automated retry logic with exponential backoff:
TypeScript / Node.js 429 Retry Interceptor
TypeScript
// Example: Automatic Exponential Backoff & 429 Retry Handler
import axios, { AxiosError } from "axios";
const apiClient = axios.create({
baseURL: "https://api.baziapi.pro/api/v1",
headers: { "x-api-key": process.env.BAZI_API_KEY },
});
// Response interceptor with smart Retry-After backoff
apiClient.interceptors.response.use(
(res) => res,
async (error: AxiosError) => {
if (error.response?.status === 429) {
const retryAfterHeader = error.response.headers["retry-after"];
const waitSeconds = retryAfterHeader ? parseInt(retryAfterHeader, 10) : 5;
console.warn(`[429 Rate Limited] Backing off for ${waitSeconds} seconds...`);
await new Promise((resolve) => setTimeout(resolve, waitSeconds * 1000));
// Retry original calculation request
return apiClient.request(error.config!);
}
return Promise.reject(error);
}
);Need Higher Throughput or Enterprise Scale?
Upgrade your plan for higher RPM speed limits, larger monthly request pools, and custom dedicated endpoints.
Something unclear? Contact developer support.