Usage Limits
JAOT is free to use. Instead of credits or billing, the platform protects itself
with per-organization rate limits and resource caps — all configurable by the
instance administrator via the admin panel (platform_settings).
Rate Limits
API requests are rate-limited per organization to ensure fair usage across all tenants.
The limits, and what each one counts
One limit covers every endpoint. The three below it are separate guards on the doors an unauthenticated visitor can knock on, and they count something other than the organization.
| What is limited | Per minute | Per day | Counted per | Setting |
|---|---|---|---|---|
| Every API request | 120 | 50,000 | organization | instance_rate_limit_per_minute, instance_rate_limit_per_day |
| Signing in | 30 | 300 | client IP address | AUTH_LOGIN_RATE_LIMIT_PER_MINUTE, AUTH_LOGIN_RATE_LIMIT_PER_DAY |
| Signing up | 10 | 50 | client IP address | AUTH_SIGNUP_RATE_LIMIT_PER_MINUTE, AUTH_SIGNUP_RATE_LIMIT_PER_DAY |
| Asking for a password reset | -- | 3 per hour | email address | AUTH_PASSWORD_RESET_RATE_LIMIT_PER_HOUR |
The sign-in budget is shared by everyone behind the same connection, because it counts the network address rather than the account: it is there to slow down somebody guessing passwords.
Rate Limit Headers
Every API response includes rate limit headers:
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 118
X-RateLimit-Reset: 1719849600
When a limit is exceeded the API returns 429 Too Many Requests; retry after
the window shown in X-RateLimit-Reset.
Solve Quotas and Caps
Every cap ships off: 0 means no ceiling. An operator running a public
instance sets real numbers; a private one usually leaves them alone.
| Cap | Default | Setting |
|---|---|---|
| Solves per day | 0 (no ceiling) | instance_max_daily_solves |
| Ceiling on one solve | 0 (no ceiling) | instance_max_solve_time_seconds |
| Variables in one problem | 0 (no ceiling) | instance_max_variables |
| Cron schedules | 0 (no ceiling) | instance_max_cron_schedules |
| Request body size | 0 (no ceiling) | MAX_REQUEST_BODY_MB in the environment |
A solve asking for longer than the ceiling is clamped to it, not refused.
A solve that exceeds its time limit is stopped by the solver first, then by the worker's kill switch; abandoned runs are reconciled by a background sweep, so history never shows phantom "running" entries.
API Keys per User
| Cap | Default | Setting |
|---|---|---|
| Live API keys per user | 25 | AUTH_MAX_ACTIVE_API_KEYS_PER_USER |
The ceiling is on keys that are live, not on keys ever created: revoking one
frees a slot immediately, and an expired key occupies none. Past the limit,
POST /api/v2/keys answers 409 and names the number. The cap is per user, so
a colleague filling their own quota never stops you creating a key. Set the
setting to 0 to remove the ceiling.
AI Assistant Budget
The AI assistant is governed by a monthly EUR budget
(LLM_MONTHLY_BUDGET_EUR) on the instance's own API key. Organizations that
configure their own Anthropic key (BYOK) are exempt from the budget — their
usage costs the platform nothing.