Limits
Admission and rate limits, request sizes, credits and reference USD prices, and how model capacity is shared.
One machine, one queue
MaxiMind runs on one machine that runs one heavy AI task (chat, TTS, transcription) at a time. Requests go through a single FIFO queue. A slow response means "waiting in line", not "down". Long jobs return a job_id immediately; poll for the result. status: "queued" is normal.
Admins can watch the queue at GET /admin/queue.
Public edge
| Limit | Value |
|---|---|
| Request timeout | about 100 s (an exceeded request returns 524) |
| Body size | 100 MB |
Use job mode (/api/ai/generate with async: true, /jobs, /api/ai/worker) or streaming (/v1/chat/completions with stream: true, which sends keepalives) for anything that may take longer. Uploads over 100 MB (NAS, transcription) must come from the owner's own network.
Admission: model requests
One shared admission controller covers /api/ai/generate, /api/ai/agent and /v1/chat/completions:
| Scope | Limit |
|---|---|
| Globally | 8 running or queued requests |
| Per API-key owner | 2 |
A saturated request receives HTTP 429 with Retry-After: 5 before MaxiMind retains the prompt or spends model capacity.
MaxiMind Code: two active model requests per account, eight process-wide (shared with every other AI surface). A third window waits up to three minutes for a free slot instead of failing.
Attachments: two attachment requests run concurrently, eight admitted in total.
Sandboxed worker: 8 admitted jobs per key per day (charged on acceptance, including preparation failures); an account-wide daily budget of 20 worker attempts with alerts at 50, 80 and 95 percent; a two-slot attachment-preparation lane with a 120 s aggregate deadline; a concurrency-one Antigravity lane.
Request sizes
| Surface | Bound |
|---|---|
POST /api/ai/generate |
512 KiB raw JSON (rejected while streaming, including chunked bodies) |
POST /api/ai/agent |
256 KiB raw JSON; input up to 100,000 characters |
POST /v1/chat/completions |
60 MiB encoded JSON (base64 image parts); 400,000 characters for an explicit Claude pin, 100,000 for other engines and auto, including system prompts |
POST /api/code/v1/chat/completions |
4 MiB, text only |
| Attachments | 10 files, 15 MiB per file, 40 MiB total, 60 s per download; 80,000 extracted text characters; 100,000-character attachment prompt; images 25 million pixels and 100 frames; PDFs 6 pages at 110 dpi when text is unusable |
| Worker brief | 32,000 characters; PDF derivation 12 page images / 50 MB or 200,000 bytes of text; artifacts 20 files, 25 MB each |
POST /api/ai/tts speed |
0.5 to 2.0 |
POST /api/nas/upload |
5 GB hard cap (413 above) |
/v1/channel, /v1/playlist limit |
1 to 200 |
/v1/web/scrape timeout |
1 to 60 s |
| Canvas device-flow bodies | 4096 bytes; image prompt 32,000 bytes, body 65,536 bytes |
Requests above a character bound fail explicitly; history is never silently truncated.
Rate limits
| Surface | Limit |
|---|---|
POST /api/code/devices/start |
rate-limited per address (10-minute code, 3 s poll interval) |
| Canvas device flow | start 30/min, poll 300/min, verification 20/min, refresh 120/min, one poll per device per 3 s (persisted, per ASGI peer address) |
| Canvas image submission | 6 per minute per account |
GET /admin/queue |
safe to poll every 1 to 2 s |
Job records (generate, agent, transcription) expire one hour after completion.
Engine timeouts
| Engine | Timeout |
|---|---|
| Piper TTS | 180 s |
| mlx-audio and VietVoice TTS | 300 s |
| yt-dlp channel or playlist listing | 120 s (504 when exceeded) |
| Worker model | 900 s default, 1,800 s hard cap |
Typical latency: Antigravity Pro 40 to 95 s, Flash 5 to 20 s; Codex 5 to 10 s; Claude 5 to 15 s, long answers up to 90 s. A one-tool cold worker job takes 90 to 110 s.
Credits
Every billable call is logged to a usage table and attributed to an actor (API-key label, user email, Local Network or anonymous). Minimum recorded is 1 credit. Credits meter usage; they do not block or enforce a balance.
| Action key | Credits | Cost for | Recorded today |
|---|---|---|---|
transcript_native |
1 | One transcript from a platform's free captions | Yes |
transcript_generated_per_min |
2 | Whisper transcription on /v1/transcript, per audio minute (about 1 per 30 s, min 1) |
Yes |
video |
1 | One video's metadata | Yes |
channel |
1 | One channel listing | Yes |
playlist |
1 | One playlist listing | Yes |
web_scrape |
1 | One web page | Yes |
image |
5 | Reserved legacy rate; image submission withheld | No |
tts |
1 | One spoken clip | Yes |
translate_per_min |
30 | Transcript translation, per minute | Intended only |
file_transcribe_per_min |
2 | Uploaded file transcription, per minute | Intended only |
Agent tasks (/api/ai/agent) cost 2 credits. The /jobs*, /transcribe-url, /youtube-to-srt and /audio/transcriptions handlers do not currently record usage. NAS routes are free. Model text work (/api/ai/generate, /v1/chat/completions, Code, worker) is logged by surface, engine, account, model and outcome rather than by these credit keys.
Read the live price list from credit_costs in GET /admin/usage.
Reference USD cost per task
Reference sell price $0.003 per credit.
| Task | Endpoint | Credits | USD |
|---|---|---|---|
| Transcript (free captions) | /v1/transcript (native) |
1 | $0.003 |
| Transcript (Whisper) | /v1/transcript (generate) |
2 / min | $0.006 / min |
| Video info | /v1/video |
1 | $0.003 |
| Channel or playlist listing | /v1/channel, /v1/playlist |
1 | $0.003 |
| Web scrape | /v1/web/scrape |
1 | $0.003 |
| Image generation | /api/ai/image |
— | Withheld; 503 before charging |
| Voice (TTS) | /api/ai/tts |
1 | $0.003 |
| Translation | per minute | 30 / min | $0.09 / min |
Shared model capacity
- Model capacity is shared across every surface (API, chat completions, MaxiMind Code, worker) and every user and window. The MaxiMind Code banner says so.
- The providers do not report remaining quota. Token and cost counters in clients are not quota measurements, and
usageon the OpenAI-compatible endpoint is zero. MaxiMind sidelines an account after a quota error and rotates to the next; a watcher probes every account every 30 minutes and alerts the owner when one is failing or signed out. - When no engine can answer:
/api/ai/generatereturnsstatus: "failed"(withsubscription_only: true),/v1/chat/completionsreturns 503, MaxiMind Code shows "no subscription could answer". No pay-per-use API is used on these surfaces.