SDK & Integrations

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 TierSpeed Limit (RPM)Monthly AllowanceActive API KeysKey LifecycleSpam Lockout Penalty
FREE30 req/min1,000 req/mo1 Key30 Days15 Minutes
BASIC300 req/min50,000 req/mo3 KeysLifetime15 Minutes
PRO500 req/min250,000 req/mo10 KeysLifetime15 Minutes
PREMIUM1,000+ req/min1,000,000 req/mo30 KeysLifetime15 Minutes

HTTP Rate Limit Response Headers

HTTP HeaderTypeDescription
X-RateLimit-LimitIntegerThe maximum number of allowed requests in the current 60-second window.
X-RateLimit-RemainingIntegerNumber of remaining requests available before hitting the rate limit.
X-RateLimit-ResetUnix TimestampUnix epoch timestamp in seconds when the current rate limit window resets.
Retry-AfterSecondsReturned 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.

View Pricing & Upgrade

Something unclear? Contact developer support.