Plan tiers
Headers on every response
X-RateLimit-Reset is a Unix timestamp — when the bucket will next be full.
When you hit the cap
Retry-After — it’s whole seconds.
Hard caps
The token bucket above is about pacing. The hard cap is about cost — a customer-set ceiling on how many API calls an agent can consume per billing period. The effective cap on agent traffic is the lesser of (plan cap, hard cap). Plan caps come from the Billing page (free=500, solo=100_000, pro=1_000_000). workspaces.hard_cap_api_calls is a customer-set ceiling on top — settable via PATCH /workspace, defaults to null (no extra limit beyond the plan). The counter increments atomically per request and rolls over at the start of each calendar month. When you hit a cap, the response’s error message names which kind it was (plan vs hard):
When usage first crosses 80% of the monthly cap, Salty fires an internal
usage_cap_warning event and emails the workspace owner (once per period) so you can act before hitting the limit.sk_live_… API keys or salty_oat_… OAuth tokens. JWT-authed requests from the admin UI (billing, raising the cap, browsing /records) stay reachable when the cap is exhausted, so a customer is never trapped. See Concepts → Billing for the plan limits.