Rate Limits

Learn how to integrate Demeterics into your workflows with step-by-step guides and API examples.

Rate Limits

Demeterics enforces multiple layers of rate limiting to ensure fair usage, protect platform stability, and prevent abuse. Limits are applied based on your user tier and API key configuration.

All rate limit violations return HTTP 429 Too Many Requests with a JSON error body and relevant headers.


Tier System

Every user is assigned a tier that determines their rate limits. Tiers are assigned automatically based on account age and payment history, or manually by administrators.

Tier Name Description
1 New Limited test access for new users
2 Verified After payment and 3+ days of usage
3 Established Increased limits for established users
4 Power High-volume access for power users
5 Enterprise Unlimited access

Rate Limit Summary

Requests Per Minute (RPM)

Per-user limit on API calls per minute, based on tier.

Tier Limit
New 10 RPM
Verified 30 RPM
Established 60 RPM
Power 120 RPM
Enterprise Unlimited

Error response:

{"error": "tier rate limit exceeded (calls/minute)", "code": 429}

Headers: X-Tier-Limit-Exceeded: calls-per-minute, Retry-After: 60


Requests Per Day

Per-user limit on total API calls per day (resets at midnight UTC).

Tier Limit
New 1,000
Verified 5,000
Established 20,000
Power 50,000
Enterprise Unlimited

Error response:

{"error": "tier daily call limit exceeded", "code": 429}

Headers: X-Tier-Limit-Exceeded: calls-per-day, Retry-After: <seconds until midnight UTC>


Daily Credit Limit

Per-user daily spending cap in Demeterics credits (100 credits = $1.00 USD). Resets at midnight UTC.

Tier Limit
New 100 credits ($1.00/day)
Verified 500 credits ($5.00/day)
Established 2,000 credits ($20.00/day)
Power 10,000 credits ($100.00/day)
Enterprise Unlimited

Error response:

{"error": "tier daily credit limit exceeded", "code": 429}

Headers: X-Tier-Limit-Exceeded: credits-per-day, Retry-After: <seconds until midnight UTC>


API Key Rate Limit

Per-API-key rate limit, configurable in the dashboard. Defaults to unlimited (0). This limit is independent of tier limits and is checked first.

Error response:

{"error": "rate limit exceeded", "code": 429}

Daily LLM Cost Limit

Per-API-key daily spending cap on LLM calls. Configurable per key in the dashboard.

  • Default: $10.00 USD/day (when not explicitly set)
  • Unlimited: Set to $0 to disable
  • Custom: Any positive value in USD

For managed keys, the effective limit is capped at the user's credit balance.

Error response:

{"error": "daily llm cost limit exceeded", "code": 429}

Headers: X-Daily-Cost-Limit-Exceeded: true, Retry-After: <seconds until midnight UTC>

Alert notifications are sent at 80% and 100% thresholds.


Concurrent Request Limit (Managed Keys)

For managed keys (where Demeterics provides the LLM provider key), a per-user concurrency limit prevents too many simultaneous in-flight requests.

Tier Max Concurrent Requests
New 3
Verified 5
Established 10
Power 20
Enterprise Unlimited

Error response:

{"error": "Too many concurrent managed-key requests. Please wait and retry.", "code": 429, "type": "concurrency_limit"}

Velocity Limit (Managed Keys)

For managed keys, a 10-minute rolling window detects anomalous burst traffic. This is separate from the per-minute RPM limit and acts as abuse protection.

Tier Max Requests per 10 Minutes
New 200 (20/min sustained)
Verified 500 (50/min sustained)
Established 1,000 (100/min sustained)
Power 2,000 (200/min sustained)
Enterprise Unlimited

Error response:

{"error": "Request rate too high. Please slow down.", "code": 429, "type": "velocity_limit"}

At 2x the threshold, an admin abuse alert is triggered.


Widget Rate Limit

AI Chat Widgets have a per-agent rate limit, configurable in the dashboard.

  • Default: 50 requests/minute per widget agent
  • Custom: Configurable per widget

Error response:

{"error": "Rate limit exceeded", "code": 429}

Headers: X-RateLimit-Limit: <limit>, X-RateLimit-Remaining: <remaining>, Retry-After: 60


Enforcement Order

Rate limits are checked in the following order. The first limit exceeded short-circuits the request:

  1. API Key RPM - Per-key per-minute limit
  2. Tier RPM - Per-user per-minute limit
  3. Tier RPD - Per-user per-day limit
  4. Daily LLM Cost - Per-key daily spend (LLM endpoints only)
  5. Tier Credits/Day - Per-user daily credit cap (LLM endpoints only)
  6. Velocity - 10-min rolling window (managed keys only)
  7. Concurrency - In-flight request cap (managed keys only)

Fail Behavior

Limit Type On Error
API Key RPM Fail open (allows request)
Tier RPM / RPD Fail open
Daily LLM Cost (BYOK) Fail open
Daily LLM Cost (Managed) Fail closed (rejects request)
Velocity (Managed) Fail closed
Concurrency (Managed) Fail closed
Widget Fail open

Managed keys fail closed to protect against credit drain during infrastructure issues.


Best Practices

  • Monitor headers: Check X-Tier-Limit-Exceeded and Retry-After in 429 responses to determine which limit was hit and when to retry.
  • Use exponential backoff: When rate limited, wait the Retry-After duration before retrying.
  • Spread requests: Distribute API calls evenly across time rather than bursting.
  • Upgrade your tier: Contact support or make a payment to upgrade from Tier 1.
  • Configure per-key limits: Set appropriate RateLimitPerMinute and DailyLLMCostLimit per API key in the dashboard.