TriportRPC

Stellar RPC — Soroban & Horizon API

Last updated:

Get API key Read the documentation

Network details

Stellar connection values
NetworkStellar mainnet (Pubnet)
Chain IDNone — Stellar is not an EVM network; read the network passphrase from getNetwork
CurrencyXLM
Soroban JSON-RPChttps://triport.io/rpc/stellar
Horizon RESThttps://triport.io/rpc/stellar/horizon
Horizon SSEhttps://triport.io/rpc/stellar/horizon/{ledgers|transactions}?cursor=now
Authenticationx-token: $TRIPORT_API_KEY, scope stellar:rpc
Transaction submissionNot part of the product

What works today

Capabilities and their published status — from the generated capability registry
CapabilityStatusNotes
Soroban RPC reads and simulationAvailablesimulateTransaction is a read; sendTransaction is not part of the product.
Soroban ledgers, events and transactionsAvailablegetEvents takes a named params object; beyond_retention is an error, not empty history.
Horizon REST (read)LimitedHorizon is served through one measured operator, best-effort, no dedicated SLA. POST /transactions is not part of the product.
Horizon SSE (ledgers, transactions)LimitedStarts 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_retentionan 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 published as limited: Horizon is served through one measured operator, best-effort, no dedicated SLA. 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.

Limits and plans

Requests per second by plan — policy quotas, not measured upstream capacity
CapabilityFree trial (7 days)BasicProBusinessEnterprise
Soroban + Horizon reads1520100250no per-category cap
Heavy reads (events, ledger history)1520100250no 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.

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 production-grade?
Horizon REST and SSE are served through a single measured operator, best-effort, without a dedicated SLA — that is why they are published as limited. 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 policy quotas, not measured upstream capacity.

Soroban RPC methods

Horizon routes are documented separately, with one page per endpoint — see the Horizon REST reference.