Stellar RPC endpoint — Soroban RPC & Horizon API
Last updated:
Get API key Read the documentation
Network details
| Network | Stellar mainnet (Pubnet) |
|---|---|
| Chain ID | None — Stellar is not an EVM network; read the network passphrase from getNetwork |
| Currency | XLM |
| Soroban JSON-RPC | https://triport.io/rpc/stellar |
| Horizon REST | https://triport.io/rpc/stellar/horizon |
| Horizon SSE | https://triport.io/rpc/stellar/horizon/{ledgers|transactions}?cursor=now |
| Authentication | x-token: $TRIPORT_API_KEY, scope stellar:rpc |
| Transaction submission | Not part of the product |
Why Stellar mainnet needs a provider
SDF runs public RPC for Testnet and Futurenet. Mainnet RPC comes from the providers Stellar lists (checked 2026-11-01). Triport has no keyless Stellar endpoint; the 7-day trial key is the way to try it.
What works today
| Capability | Status | Notes |
|---|---|---|
| Soroban RPC reads and simulation | Available | simulateTransaction is a read; sendTransaction is not part of the product. |
| Soroban ledgers, events and transactions | Available | getEvents takes a named params object; beyond_retention is an error, not empty history. |
| Horizon REST (read) | Available | Read-only: POST /transactions is not part of the product. |
| Horizon SSE (ledgers, transactions) | Available | Starts at cursor=now with Accept: text/event-stream; after a disconnect recover with REST reads, no arbitrary SSE replay. |
simulateTransaction is a read, not a send
It returns the simulated result, the footprint and the resource fee without touching the network — which is exactly what you want before assembling a real transaction, and exactly not what you want if you expected it to submit. Submission is not part of this product: there is no sendTransaction here and no POST /transactions on our Horizon. Sign and broadcast through your own endpoint.
History: a window, and an error at its edge
Soroban history covers about 120,960 ledgers; Horizon's measured retention is far longer, at 6,307,191 ledgers. The part worth designing around is the edge: a request past the Soroban window returns beyond_retention — an error, not an empty list. An empty list would let a client conclude "nothing happened"; an error tells it to reach for its own store instead. Handle it explicitly, and see getEvents.
Two shapes trip up first integrations: getEvents takes a named parameters object rather than a positional array, and getLedgers and getTransactions accept a limit of up to 200 per page.
Horizon and SSE, and what we do not claim
Both are available on every plan. Read-only: POST /transactions is not part of the product. The SSE stream starts at cursor=now and delivers only new records, so there is no arbitrary replay — after a disconnect, close the gap with REST reads and resubscribe. HAL _links and _embedded fields pass through unchanged, and paging uses the usual cursor with a limit of up to 200. See the SSE reference and the Horizon REST reference.
What teams run on it
- Soroban indexers. getEvents inside the retention window described above.
- Payment backends. Horizon SSE for account payments.
Testnet
Stellar testnets: Testnet and Futurenet. Triport serves mainnet only; switch the URL and chain ID for test work — Stellar testnet connection values.
Testnet state is disposable: the network resets on a regular cadence, next on 16 December 2026 (checked 2026-10-24).
Terms on this page: Horizon · Stroop.
Limits and plans
2× burst buffer, included. Finite request-rate limits show sustained RPS and short burst capacity. A full buffer at 20 RPS can absorb up to 40 requests at once and refills at 20 requests per second. There is no quota on the number of bursts and no extra charge for them. Size ongoing traffic to sustained RPS. Categories with no per-category cap have no numeric burst ceiling. How burst capacity works.
| Capability | Free trial (7 days) | Basic | Pro | Business | Enterprise |
|---|---|---|---|---|---|
| Soroban + Horizon reads | 15 RPS sustained · up to 30 burst | 20 RPS sustained · up to 40 burst | 100 RPS sustained · up to 200 burst | 250 RPS sustained · up to 500 burst | no per-category cap |
| Heavy reads (events, ledger history) | 15 RPS sustained · up to 30 burst | 20 RPS sustained · up to 40 burst | 100 RPS sustained · up to 200 burst | 250 RPS sustained · up to 500 burst | no per-category cap |
| Transaction submission | — | — | — | — | — |
The heavy budget equals the ordinary read budget on Stellar, so event and ledger history are not rationed separately — the binding constraint is the retention window, not the rate. Plans: Basic $20, Pro $249, Business $499, Enterprise from $999 per month; Free is a 7-day trial with a single key in the EU region. See Stellar rate limits and tiers.
Every plan with its limits on every network, and what a plan costs at its cap: RPC pricing.
Quickstart
# Soroban: latest ledger
curl https://triport.io/rpc/stellar \
-H "x-token: $TRIPORT_API_KEY" -H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"getLatestLedger"}'
# Soroban: events take a NAMED params object
curl https://triport.io/rpc/stellar \
-H "x-token: $TRIPORT_API_KEY" -H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"getEvents","params":{"startLedger":1234567,"pagination":{"limit":200}}}'
# Horizon REST
curl 'https://triport.io/rpc/stellar/horizon/ledgers?limit=200' -H "x-token: $TRIPORT_API_KEY"
# Horizon SSE (new records only)
curl -N 'https://triport.io/rpc/stellar/horizon/transactions?cursor=now' \
-H 'Accept: text/event-stream' -H "x-token: $TRIPORT_API_KEY"FAQ
- What is the Stellar RPC URL?
- https://triport.io/rpc/stellar for Soroban JSON-RPC and https://triport.io/rpc/stellar/horizon for Horizon REST and SSE. Authenticate with the x-token header (Authorization: Bearer also works) and the stellar:rpc scope.
- What is Stellar's chain ID?
- Stellar has no EVM-style chain ID — it is not an EVM network. Clients identify the network by its passphrase, which you can read from the Soroban getNetwork method rather than hard-coding a number.
- Does simulateTransaction submit anything?
- No. simulateTransaction is a read: it returns the simulated result and footprint without sending. Submission is not part of the Triport Stellar product on either surface, so signing and broadcasting needs your own Horizon or Soroban endpoint.
- How far back does Soroban history go?
- About 120,960 ledgers. Asking for something older returns a beyond_retention error rather than an empty list — treat it as a signal to fall back to your own store, not as proof that nothing happened in that range.
- Why does getEvents reject my parameters?
- getEvents takes a named parameters object, not a positional array, and getLedgers and getTransactions accept a limit of up to 200 per page. A positional array is the most common cause of an invalid-params error here.
- Is Horizon on Triport read-only?
- Yes. Horizon REST reads and SSE streams (ledgers, transactions) are available on every plan; POST /transactions is not part of the product.
- Can I replay the SSE stream after a disconnect?
- No. The stream starts at cursor=now with Accept: text/event-stream and delivers only new records, so there is no arbitrary replay. After a disconnect, close the gap with Horizon REST reads and then resubscribe.
- What are the Stellar rate limits?
- Reads 15/20/100/250 RPS on Free trial/Basic/Pro/Business, and the heavy budget is the same on each plan. Enterprise has no per-category cap. These are per-category RPS limits, not measured upstream capacity.
- Does SDF run a public mainnet RPC?
- No. SDF runs public RPC for Testnet and Futurenet; Mainnet comes from third-party providers, which Stellar's docs list.
- Does Triport serve testnet or Futurenet?
- No. Triport serves Stellar mainnet only. The passphrases and official URLs of both are on the chain config page.
Soroban RPC methods
- getEvents
- getFeeStats
- getHealth
- getLatestLedger
- getLedgerEntries
- getLedgers
- getNetwork
- getTransactions
- getVersionInfo
- simulateTransaction
Horizon routes are documented separately, with one page per endpoint — see the Horizon REST reference.