Addis AI
Platform

Rate Limits

API usage quotas, context windows, and system constraints.

To ensure the reliability and stability of the Addis AI platform for all users, we enforce limits on the number of requests you can make over specific periods.

Tier Quotas

Limits are applied based on your organization's billing plan.

FeatureFree / SandboxPro / TeamEnterprise
RPM (Requests Per Minute)60500Custom
RPD (Requests Per Day)1,000UnlimitedUnlimited
TPM (Tokens Per Minute)40,000250,000Custom
Concurrency3 Requests50 RequestsCustom

Hitting Limits?

If you consistently hit these limits, please contact Sales to discuss an Enterprise plan with dedicated throughput.


Model Constraints

Apart from rate limits, each model has technical constraints regarding input size and duration.

Text Generation

Context Window128,000 Tokens
Max Output4,096 Tokens

Audio (TTS & STT)

Max Audio Size10 MB
Max Duration60 Seconds

Vision

Max Image Size10 MB
FormatsJPG, PNG, WEBP

Documents

Max PDF Size10 MB
Page Limit~20 Pages

Response Headers

Every API response includes HTTP headers that tell you your current status.

HeaderDescription
x-ratelimit-limit-requestsThe maximum number of requests allowed in the current window.
x-ratelimit-remaining-requestsThe number of requests remaining in the current window.
x-ratelimit-reset-requestsThe time (in seconds) until the window resets.

Handling Rate Limits (429)

If you exceed a limit, the API will return a 429 Too Many Requests status. Your application should handle this gracefully using Exponential Backoff.

Do not retry immediately in a tight loop. Wait, then retry with increasing delays.

async function createWithBackoff(input, retries = 3, delay = 1000) {
  try {
    return await addis.chat.completions.create(input);
  } catch (error) {
    const status =
      typeof error === "object" && error !== null && "status" in error
        ? error.status
        : undefined;

    if (status === 429 && retries > 0) {
      await new Promise((resolve) => setTimeout(resolve, delay));
      return createWithBackoff(input, retries - 1, delay * 2);
    }
    throw error;
  }
}
import time

def create_with_backoff(messages, retries=3, delay=1):
    for i in range(retries + 1):
        try:
            return addis.chat.completions.create(messages=messages)
        except Exception as error:
            if getattr(error, "status", None) != 429:
                raise
            if i == retries:
                raise
            time.sleep(delay)
            delay *= 2

On this page