Reference

Limits

Your limits depend on your offers and apply to your whole account, across all your keys. Track your usage at any time with GET /v1/usage.

Limits by plan

Live and Historical stack: with both, you get the rights of both. What each offer includes and how to buy it: Plans and billing.

LimitSandboxLiveHistoricalLive + Historical
BillingFreeMonthly subscriptionOne-time purchase, lifetime accessMonthly subscription + One-time purchase, lifetime access
Stream10-minute delayReal time10-minute delayReal time
Concurrent connections1515
Concurrent subscriptions250250
Custom configurations125125
HistoryLast 7 daysNot includedFull available depthFull available depth
Monthly compute budget50,000,000 unitsNot included20,000,000,000 units20,000,000,000 units
Monthly export volumeNot includedNot included20 GB20 GB
REST requests per key60 per minute300 per minute1,200 per minute1,200 per minute

How limits are counted

  • Per account: connections, subscriptions and budgets are shared by all your keys. Creating more keys does not raise your limits.
  • Custom configurations: an indicator used on an instrument with parameters that differ from its defaults. For example, Fathom Trades with a minimum volume of 50 instead of 30. Each combination counts once, even if several subscriptions use it.
  • Compute budget: every access to history (a query, an export, or a subscription that starts in the past) consumes units: the number of trades read, times the indicator cost shown in the catalog. You can estimate that cost up front, for free.
  • Export volume: the amount of data your exports download.

The compute budget and the export volume renew at the start of every month (UTC), including with the lifetime access of the Historical offer. A request that would exceed them is rejected before it starts, with 429 QUOTA_EXCEEDED.

Technical limits

These are the same for every plan.

ItemLimitIf you exceed it
REST requestsDepends on your plan, per minute and per key429 RATE_LIMITED
REST request body size16 KB413
Active keys10 per account409 QUOTA_EXCEEDED
Allowed instruments and IP addresses per key32 of each400 INVALID_PARAMETERS
Grace period when rotating a key7 days at most400 INVALID_PARAMETERS
Sign-in links5 per hour per e-mail address, valid for 15 minutes429 RATE_LIMITED
Browser stream tokenValid for 60 s, single useConnection closed (4001)
auth message after the WebSocket opens5 sConnection closed (4001)
Message sent on the WebSocket64 KBConnection dropped
Subscription name (sub)1 to 64 characters, unique on the connectionerror INVALID_PARAMETERS
Resume from a cursorDisconnects of up to about 15 minutesreset, then a new snapshot
Data waiting to be sent (slow client)256 KB, then 1 MBIntermediate versions skipped, then connection closed (4008)
Client silence30 sConnection closed (4008)
Results per history page1 to 10,000 (1,000 by default)Next page through next
Calculation kept after the last unsubscribe10 minutesWarm-up (warming) on the next subscribe

Requests per minute

Each key can send a set number of REST requests per minute, depending on your plan. Unused requests accumulate up to that limit. Every response tells you where you stand:

HTTP
RateLimit-Limit: 1200
RateLimit-Remaining: 1197
RateLimit-Reset: 1
  • RateLimit-Remaining: requests available right now;
  • RateLimit-Reset: seconds until the full limit is restored.

Past the limit, the request is rejected with 429 RATE_LIMITED; the Retry-After header says how many seconds to wait. The SDK waits and retries automatically.

Track your usage

BASH
curl https://api.fathomcharts.com/v1/usage -H "Authorization: Bearer $FATHOM_CHARTS_API_KEY"
JSON
{
  "period": "2026-10",
  "resetsAt": "1793491200000000000",
  "plan": "live_history",
  "limits": {
    "computeBudget": 20000000000,
    "exportBytes": 21474836480,
    "restPerMinute": 1200,
    "historyDays": 36500,
    "delaySeconds": 0,
    "maxConnections": 5,
    "maxSubscriptions": 50,
    "maxCustomConfigs": 25,
    "realtime": true
  },
  "used": { "computeUnits": 1840233, "historyItems": 51207, "exportBytes": 734003200, "restRequests": 412 },
  "remaining": { "computeUnits": 19998159767, "exportBytes": 20740833280 }
}
  • plan: your offers, one of sandbox, live, history or live_history (both);
  • period and resetsAt: the current month and the date of the next renewal;
  • limits: the limits that apply to you. With a test key, these are the Sandbox limits. historyDays is 0 without history, and 36500 for the full available depth;
  • used and remaining: your usage this month and what you have left.