Skip to main content
Rate limits live at three layers — IP (anti-abuse), per-key (fair-use), per-route (cost protection). The numbers below are the verified limits checked into the codebase as of the current release. Routes not listed default to the platform’s general fair-use ceiling; if a number matters for your integration, email patrick@simplefunctions.dev rather than reverse-engineer it.

Verified per-route limits

These are read from RATE_LIMIT constants in code:

Input cost guards

Some LLM-backed routes bound their input space instead of (or on top of) a rate limit, so an anonymous caller can’t force unbounded fresh model calls by varying a parameter:

Real-time data API (data.simplefunctions.dev/v1)

Headers and 429 contract

Platform-enforced rate limits may include these headers:
When limited:
with body:
Honor Retry-After (seconds) before the next request whenever it is present.

Routes without an explicit constant

Most authenticated and read-only routes (/api/agent/*, /api/portfolio/*, /api/thesis/*, /api/intents/*, /api/watch/*, /api/alert-rules/*, /api/webhook-endpoints/*, /api/mcp/*, …) are governed by the platform’s fair-use ceiling rather than a per-route constant in code. Hitting the ceiling returns the same 429 RATE_LIMITED shape. For a guaranteed sustained rate beyond the platform default — for a production agent loop, dashboard, or analytics pipeline — email patrick@simplefunctions.dev with the use case so we can size capacity to actual traffic.

See also

API keys

Key creation and rotation.

Errors

RATE_LIMITED envelope and handling.