Agent-readable docs index: /llms.txt. Full docs in one file: /llms-full.txt. Download /docs.zip to grep all markdown files locally.

Rate limits

PlanApplies toMinute limitDaily limitKeyed by
Free/api/v1/public/*50 requests / 10 secondsClient IP at the edge
ProAuthenticated realtime API30 requests/minute20,000/dayClerk organization
PremiumAuthenticated realtime API180 requests/minute150,000/dayClerk organization
Paid limits are organization-wide. Every API key and authenticated session in an organization draws from the same budgets, so creating more keys does not increase throughput. The daily budget resets at 00:00 UTC.
Public requests are limited and cached at the Cloudflare edge and are not double-counted by the application limiter.
An authenticated organization without a paid plan has no organization budget. Those requests are held to a per-key minute ceiling instead, an abuse baseline rather than a plan allowance, so they carry the minute headers below but no daily ones.

Response headers

Paid (Pro and Premium) responses carry both budgets:
HeaderMeaning
RateLimit-LimitPlan requests per minute.
RateLimit-RemainingRequests left in the current minute.
RateLimit-ResetSeconds until the minute counter resets.
RateLimit-Daily-LimitPlan requests per UTC day.
RateLimit-Daily-RemainingRequests left today.
RateLimit-Daily-ResetSeconds until 00:00 UTC.
Unpaid authenticated responses carry only the three minute headers, since there is no daily budget to report.
An over-limit request returns 429 Too Many Requests, the same headers with the exhausted remaining value at zero, and Retry-After for the binding budget:
{ "error": "rate_limited", "limit": "rpm", "message": "Organization rpm request limit exceeded; retry after 18s.", "upgrade_url": "https://adjacent.markets/subscribe" }
Back off for at least Retry-After seconds. upgrade_url points at the plan catalog, where a larger allowance can be bought; it is omitted when no plan is available to buy.
You can also see the live minute and daily meters under Settings → Billing & usage before a 429 occurs.

No plan at all

A 429 means a plan's budget ran out. A request from an organization with no paid plan is refused up front instead, with 403 Forbidden:
{ "error": "Insufficient scope: a Pro or Premium API plan is required", "status": 403, "upgrade_url": "https://adjacent.markets/subscribe" }
upgrade_url carries the same meaning as on a 429 and is likewise omitted when no plan is available to buy. Unlike a 429 this is not worth retrying: nothing resets, and the request succeeds only once the organization holds a plan.