TON RPC API — blocks, accounts, get-methods
Last updated:
Get API key Read the documentation
Network details
| Network | TON mainnet |
|---|---|
| Chain ID | None — TON is not an EVM network; confirm the network with getMasterchainInfo |
| Currency | TON |
| JSON-RPC URL | https://triport.io/rpc/ton |
| Keyed URL | https://triport.io/r/<API_KEY>/rpc/ton |
| Authentication | x-token: $TRIPORT_API_KEY, scope ton:rpc |
| Transport | JSON-RPC over ADNL |
| Transaction submission | Not part of the product |
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. |
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.
Limits and plans
| Capability | Free trial (7 days) | Basic | Pro | Business | Enterprise |
|---|---|---|---|---|---|
| Reads (ton_read_rpc) | 15 | 20 | 100 | 250 | no per-category cap |
| Accounts, blocks, get-methods | 15 | 20 | 100 | 250 | 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
# 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 the TON RPC URL?
- https://triport.io/rpc/ton for JSON-RPC over ADNL. 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, and its addresses and workchains do not map onto one. Use getMasterchainInfo to confirm which network and seqno you are reading.
- 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.