TON RPC node endpoint — read-only JSON-RPC API
Last updated:
Get API key Read the documentation
Network details
| Network | TON mainnet |
|---|---|
| Chain ID | None — TON is not an EVM network; check global ID -239 with getConfigParam, config parameter 19 |
| Currency | TON |
| JSON-RPC URL | https://triport.io/rpc/ton |
| Keyed URL | https://triport.io/r/<API_KEY>/ton |
| Authentication | x-token: $TRIPORT_API_KEY, scope ton:rpc |
| Transport | JSON-RPC over HTTPS to Triport; ADNL to liteservers |
| Transaction submission | Not 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.
| Surface | What it provides | Proofs | Archive | On Triport |
|---|---|---|---|---|
| Liteserver (ADNL) | Binary TL reads; server public key required | Available in protocol | Node retention | Behind the HTTPS facade; no direct ADNL endpoint |
| HTTP API v2 (TON Center style) | JSON blockchain reads | No general proof interface | Depends on liteserver | 13 read methods following v2 request conventions |
| Indexer API v3 | Database queries: traces, jettons, history | No | Indexer retention policy | Not served |
| Streaming (SSE / WebSocket) | Subscription updates | Not a proof-query interface | Service-specific replay | Not 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
| Capability | Status | Notes |
|---|---|---|
| JSON-RPC reads | Available | JSON-RPC over ADNL. Not included: sendBoc, estimateFee, getWalletInformation, a public stream, a continuous genesis archive. |
| Accounts, blocks and get-methods | Available | A 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.
| Method | Liteserver call | Budget |
|---|---|---|
| getAddressInformation | liteServer.getAccountState | ton_read_rpc_heavy |
| getBlock | liteServer.getBlock | ton_read_rpc_heavy |
| getBlockHeader | liteServer.getBlockHeader | ton_read_rpc_heavy |
| getConfigAll | liteServer.getConfigAll | ton_read_rpc_heavy |
| getConfigParam | liteServer.getConfigParams | ton_read_rpc_heavy |
| getMasterchainInfo | liteServer.getMasterchainInfo | ton_read_rpc |
| getShards | liteServer.getAllShardsInfo | ton_read_rpc_heavy |
| getTime | liteServer.getTime | ton_read_rpc |
| getTransactions | liteServer.getTransactions + liteServer.getAccountState (when no cursor is supplied) | ton_read_rpc_heavy |
| getVersion | liteServer.getVersion | ton_read_rpc |
| lookupBlock | liteServer.lookupBlock | ton_read_rpc_heavy |
| runGetMethod | liteServer.runSmcMethod | ton_read_rpc_heavy |
| runSmcMethod | liteServer.runSmcMethod | ton_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
| Not served | What that means for you |
|---|---|
sendBoc | No submission: Triport does not broadcast TON messages. Sign and send through your own liteserver or another provider. |
estimateFee | Not served, so fee estimation has to happen in your own code or against your own node. |
getWalletInformation | Not served. Read the raw account with getAddressInformation and interpret the wallet contract yourself. |
A public stream | There is no TON WebSocket or feed on Triport. Poll getMasterchainInfo for new blocks. |
A continuous genesis archive | History 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.
| Capability | Free trial (7 days) | Basic | Pro | Business | Enterprise |
|---|---|---|---|---|---|
| Reads (ton_read_rpc) | 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 |
| Accounts, blocks, get-methods | 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 | — | — | — | — | — |
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.