Stellar rate limits and tiers

Stellar traffic on Triport is metered per second in two buckets, stellar_read_rpc and stellar_read_rpc_heavy, shared by Soroban JSON-RPC, Horizon REST and Horizon SSE. This page lists the per-tier budgets, which calls are heavy, and how a 429 tells you which budget you hit.

Endpoint and plans: Stellar RPC endpoint.

Budgets per tier

Values are sustained RPS / short burst capacity. The included 2× burst buffer absorbs brief traffic spikes at no extra cost and refills at the sustained rate. There is no quota on the number of bursts. Size ongoing traffic to sustained RPS; unlimited categories have no numeric burst ceiling. See Burst capacity.

CategoryFreeBasicProBusinessEnterprise
stellar_read_rpc15 / 3020 / 40100 / 200250 / 500unlimited
stellar_read_rpc_heavy15 / 3020 / 40100 / 200250 / 500unlimited

Both rows are unmeasured product-policy defaults, inherited from the Polygon budgets of the same tier until a dedicated Stellar capacity test. They are throttles Triport applies to your key, not a statement about upstream capacity. An Enterprise "unlimited" entry means no configured tier cap, not unlimited physical capacity. The Free column is the 7-day trial: EU region only, one API key.

There is no daily or monthly request quota: the only limit to plan around is the per-second budget of each category.

Which calls are heavy

The two buckets have the same numbers today, but they are counted separately, so heavy history scans do not eat the budget of your ordinary reads.

How requests are counted

  • A JSON-RPC batch is charged one request per element, not one per HTTP call. A batch of 20 getLedgerEntries calls spends 20 of the stellar_read_rpc budget.
  • Horizon pages are capped at limit=200 records. A larger limit is rejected with HTTP 400 (limit must not exceed 200), so page with cursors instead of asking for more per request.
  • History has a measured window: Soroban keeps about 120,960 ledgers, Horizon 6,307,191 ledgers. A request below the window returns beyond_retention (HTTP 410 on Horizon, -32602 on Soroban); see Stellar errors.

When you hit a limit

Going over sustained + burst returns HTTP 429 with "error": "rate_limited". The body names the budget you hit — category (for example stellar_read_rpc_heavy), current_tier, limit_rps and burst_capacity — and the Retry-After header gives the wait in seconds, never less than 1. Wait that long, then retry with exponential backoff and jitter. A method above your tier is a different answer: 403 tier_insufficient.

The shared model, response headers and code samples are in Rate Limits and Tiers and the shared error reference.