TON RPC node endpoint — read-only JSON-RPC API

Last updated:

Get API key Read the documentation

Network details

TON connection values
NetworkTON mainnet
Chain IDNone — TON is not an EVM network; check global ID -239 with getConfigParam, config parameter 19
CurrencyTON
JSON-RPC URLhttps://triport.io/rpc/ton
Keyed URLhttps://triport.io/r/<API_KEY>/ton
Authenticationx-token: $TRIPORT_API_KEY, scope ton:rpc
TransportJSON-RPC over HTTPS to Triport; ADNL to liteservers
Transaction submissionNot part of the product

What "TON RPC node" means: liteserver, ADNL and HTTP APIs

Choosing a TON RPC node starts with the surface your application needs. A direct liteserver client exchanges binary TL requests over ADNL and identifies a server by its address, port and ed25519 public key. That connection can return cryptographic proofs, but the node's retention determines which historical reads succeed. An HTTP facade lets application code work with JSON instead of managing that connection.

HTTP API v2 exposes direct blockchain reads. An indexer API v3 adds a database for queries such as transaction traces and jetton discovery. Streaming is another interface: subscriptions deliver updates through SSE or WebSocket instead of repeated reads. Choose based on the query you need to answer, rather than treating all four interfaces as interchangeable.

TON data surfaces — official API overview, checked 2026-10-25
SurfaceWhat it providesProofsArchiveOn Triport
Liteserver (ADNL)Binary TL reads; server public key requiredAvailable in protocolNode retentionBehind the HTTPS facade; no direct ADNL endpoint
HTTP API v2 (TON Center style)JSON blockchain readsNo general proof interfaceDepends on liteserver13 read methods following v2 request conventions
Indexer API v3Database queries: traces, jettons, historyNoIndexer retention policyNot served
Streaming (SSE / WebSocket)Subscription updatesNot a proof-query interfaceService-specific replayNot served

Triport occupies the JSON facade position: 13 read methods answered by a liteserver pool, with v2 request conventions rather than the complete TON Center API. There is no v3 indexer, streaming or sendBoc. For a known contract or transaction cursor, these reads can fit; for token discovery or message broadcasting, plan a separate service. The method map below shows the underlying calls, not a promise that every protocol feature or proof field is exposed through this facade.

What works today

Capabilities and their published status — from the generated capability registry
CapabilityStatusNotes
JSON-RPC readsAvailableJSON-RPC over ADNL. Not included: sendBoc, estimateFee, getWalletInformation, a public stream, a continuous genesis archive.
Accounts, blocks and get-methodsAvailableA known jetton wallet read is not discovery of every token an account holds.

Each method and the liteserver call behind it

Main calls are shown below; block resolution may add lookups. Without a cursor, getTransactions first reads account state. The budgets are configured, unmeasured. Protocol names were checked against lite_api.tl at the pinned commit on 2026-10-25.

13 JSON-RPC methods mapped to liteServer functions and rate categories
MethodLiteserver callBudget
getAddressInformationliteServer.getAccountStateton_read_rpc_heavy
getBlockliteServer.getBlockton_read_rpc_heavy
getBlockHeaderliteServer.getBlockHeaderton_read_rpc_heavy
getConfigAllliteServer.getConfigAllton_read_rpc_heavy
getConfigParamliteServer.getConfigParamston_read_rpc_heavy
getMasterchainInfoliteServer.getMasterchainInfoton_read_rpc
getShardsliteServer.getAllShardsInfoton_read_rpc_heavy
getTimeliteServer.getTimeton_read_rpc
getTransactionsliteServer.getTransactions + liteServer.getAccountState (when no cursor is supplied)ton_read_rpc_heavy
getVersionliteServer.getVersionton_read_rpc
lookupBlockliteServer.lookupBlockton_read_rpc_heavy
runGetMethodliteServer.runSmcMethodton_read_rpc_heavy
runSmcMethodliteServer.runSmcMethodton_read_rpc_heavy

What teams run on it

  • Telegram Mini App and bot backends read account state and known jetton wallets with runGetMethod. A balance read does not discover the holder's entire token portfolio.
  • Account-history workers store the oldest transaction's lt/hash pair and request older pages. Follow the transaction pagination rules to preserve exact logical-time values and handle retention boundaries.

What this endpoint does not do

Published absences, with where to go instead
Not servedWhat that means for you
sendBocNo submission: Triport does not broadcast TON messages. Sign and send through your own liteserver or another provider.
estimateFeeNot served, so fee estimation has to happen in your own code or against your own node.
getWalletInformationNot served. Read the raw account with getAddressInformation and interpret the wallet contract yourself.
A public streamThere is no TON WebSocket or feed on Triport. Poll getMasterchainInfo for new blocks.
A continuous genesis archiveHistory comes from two liteservers with a measured floor, not a guaranteed archive from block zero.

Paging transactions: lt, hash, and a JavaScript trap

getTransactions has no offset. You page backwards by passing the lt and hash of the oldest item you already received, which returns the next, older page. Logical time values are larger than a JSON number can hold exactly, so send large lt values as strings — a silently rounded lt is the usual reason a paginator repeats or skips transactions.

One more boundary worth stating: reading a known jetton wallet with runGetMethod is not discovery. Nothing here enumerates every jetton an account holds, so token-portfolio features need your own index.

Archive depth is measured, not promised

History is served from two liteservers, with a measured floor around masterchain seqno 86.86M. That figure is an observation from our own probing rather than a commitment, so a read below it can fail — design deep-history work to detect that instead of assuming coverage.

Testnet

TON testnets: TON testnet. Triport serves mainnet only; switch the URL and chain ID for test work — TON testnet connection settings.

TON testnet uses global ID -3 in config parameter 19, checked 2026-10-24. This is a global ID, not an EVM chain ID.

Terms on this page: ADNL · Liteserver · Masterchain.

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.

Requests per second by plan — per-category RPS limits, not measured upstream capacity
CapabilityFree trial (7 days)BasicProBusinessEnterprise
Reads (ton_read_rpc)15 RPS sustained · up to 30 burst20 RPS sustained · up to 40 burst100 RPS sustained · up to 200 burst250 RPS sustained · up to 500 burstno per-category cap
Accounts, blocks, get-methods15 RPS sustained · up to 30 burst20 RPS sustained · up to 40 burst100 RPS sustained · up to 200 burst250 RPS sustained · up to 500 burstno per-category cap
Transaction submission—————

Both TON budgets are the same on every plan, and they are operational defaults rather than a TON load test. 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 TON rate limits and tiers.

Every plan with its limits on every network, and what a plan costs at its cap: RPC pricing.

Quickstart

No keyless TON endpoint from Triport — the 7-day trial key is the way to try.

# Masterchain head
curl https://triport.io/rpc/ton \
  -H "x-token: $TRIPORT_API_KEY" -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"getMasterchainInfo","params":{}}'

# Account state
curl https://triport.io/rpc/ton \
  -H "x-token: $TRIPORT_API_KEY" -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"getAddressInformation","params":{"address":"EQCD39VS5jcptHL8vMjEXrzGaRcCVYto7HUn4bpAOg8xqB2N"}}'

# Next (older) page: lt as a STRING
curl https://triport.io/rpc/ton \
  -H "x-token: $TRIPORT_API_KEY" -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"getTransactions","params":{"address":"EQCD39VS5jcptHL8vMjEXrzGaRcCVYto7HUn4bpAOg8xqB2N","limit":20,"lt":"48123456000001","hash":"<hash-of-oldest-item>"}}'

FAQ

What is a TON RPC node?
The term can mean a direct liteserver connection or an HTTP facade. Triport provides a pool of liteservers behind one keyed JSON-RPC endpoint, https://triport.io/rpc/ton. Your code reads blocks, account state, transactions and contract get-methods over HTTPS while the facade handles ADNL; you do not run or sync a node yourself.
Is this a TON Center API endpoint?
Not a drop-in one. The 13 methods follow TON Center API v2 request conventions (addresses and get-method stacks, for example) and are answered by Triport's own facade over liteservers. Only those 13 methods are served; there is no v3 indexer API.
What is the TON RPC URL?
https://triport.io/rpc/ton for JSON-RPC over HTTPS. Authenticate with the x-token header (Authorization: Bearer also works) and the ton:rpc scope; the keyed URL form https://triport.io/r/<API_KEY>/ton works where a custom header is impossible.
What is TON's chain ID?
TON has no EVM-style chain ID — it is not an EVM network. Decode config parameter 19 with getConfigParam to check the global network ID: -239 for mainnet. getMasterchainInfo gives the current masterchain block reference and seqno.
Can I send TON transactions through Triport?
No. sendBoc is not served, so this endpoint is read-only. Broadcasting needs your own liteserver connection or another provider; the same applies to estimateFee.
How do I page through an account's transactions?
getTransactions pages by the lt and hash of the oldest item you received: pass them back to fetch the next, older page. There is no offset parameter.
Why does my lt value break in JavaScript?
Logical time values exceed what a JSON number holds exactly, so pass large lt values as strings. A silently rounded lt is the usual cause of a page that repeats or skips transactions.
Can I list every token an account holds?
No. Reading a known jetton wallet with runGetMethod is not discovery: there is no endpoint here that enumerates every jetton an account owns. Build that index yourself, or use a dedicated indexer.
How deep is TON history on Triport?
History is served from two liteservers with a measured floor around masterchain seqno 86.86M. That is an observation, not a guarantee, and deep historical reads may fail outside it.
What are the TON rate limits?
Reads 15/20/100/250 RPS on Free trial/Basic/Pro/Business, with the same budget for the heavier account and block calls. Enterprise has no per-category cap. These are per-category RPS limits, not measured upstream capacity.
Is there a free TON RPC?
1 request per second is available without a key from TON Center; its free key allows 10 (docs.ton.org/api/rate-limit, checked 2026-10-25). Triport has no keyless TON endpoint. Its 7-day trial key allows 15 requests per second per TON category, configured, unmeasured.
Does Triport serve TON testnet?
No. Triport serves mainnet only. TON testnet has global ID -3 in config parameter 19; use separate connection settings for test work. See the TON testnet connection settings linked above.
What is ADNL, and do I need it?
Your application uses JSON-RPC over HTTPS and does not need an ADNL client. ADNL carries the binary requests between the facade and TON liteservers. Direct liteserver clients instead need the server address, port and public key; see the ADNL glossary linked above.

FAQ source: TON Center official API rate limits, checked 2026-10-25.

TON JSON-RPC methods