Budgetten & caching
Rate limits en budgetten per sleutel, organisatieplafonds en de twee response-caches.
Budgetten & limieten
Elke key draagt rate limits (verzoeken en tokens per minuut) en een uitgavenbudget met een periode: total, daily of monthly. Boven elke key staat een organisatiebreed totaalplafond.
Handhaving gebeurt op de gateway, in echt geld: elk verzoek wordt geprijsd uit het live prijsboek en afgeschreven vóór verzending. Boven de rate limit geeft de call 429 terug; boven het budget, 402. Het verzoek bereikt nooit een provider. Zijn de tellers ooit onbereikbaar, dan faalt de controle gesloten (fail closed) en verrekent ze met het onveranderlijke auditgrootboek in plaats van te gokken.
# past the key's rate limit — the request never reaches a provider { "error": { "message": "rate limit exceeded for this key", "type": "rate_limit_error", "param": null, "code": "rate_limit_exceeded" } }
# budget reached or no active plan — activate a plan or raise the budget { "error": { "message": "spend budget reached for this key", "type": "insufficient_quota", "param": null, "code": "insufficient_quota" } }
Caching
Twee optionele response-caches: exact (een match op het genormaliseerde verzoek) en semantisch (vectorgelijkenis met een conservatieve drempel). Beide zijn strikt geïsoleerd per organisatie, versleuteld in rust en vereisen contentretentie. Schakel ze in de Cache-weergave van de Console in.
Elke auditregel legt vast hoe de call is bediend: none | exact | semantic.
# identical request twice — the second is served from the exact cache curl https://api.sluis.ai/v1/chat/completions \ -H "Authorization: Bearer $SLUIS_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "mistral/mistral-large-latest", "messages": [{ "role": "user", "content": "Define GDPR" }] }' # audit row of call #2: cache_hit: exact · no provider dispatch, no token cost