Products / JSON-RPC

Your JSON-RPC still works. Change the URL, add a header.

Sui deactivated its public JSON-RPC on July 31, 2026. This gateway serves the same methods with the same request and response shapes, translated to gRPC and indexed data behind the scenes.

mainnet-api.inodra.com/v1/jsonrpc
THE ONLY DIFF
const client = new SuiClient({
- url: 'https://fullnode.mainnet.sui.io'
+ url: 'https://mainnet-api.inodra.com/v1/jsonrpc',
+ headers: { 'x-api-key': 'indr_pat_qsVO...' }
})
await client.getObject({ id }) // unchanged
await client.queryEvents({ ... }) // unchanged

What people actually build on it.

01

Keep a shipped app running

An app written against Sui's public JSON-RPC keeps working with a URL and a header. No SDK swap, no rewrite, no release scheduled around someone else's deprecation.

sui_*, suix_*
02

Migrate one call at a time

The same key answers on JSON-RPC, gRPC and GraphQL, so you can move the hot path to gRPC this week and leave the rest until it suits you.

one key, three protocols
03

Query history the public nodes dropped

Reads are served from archival storage, so methods that now fail against a pruned node still return for any checkpoint since genesis.

sui_getTransactionBlock, sui_getCheckpoint

Every method family, and what each call costs.

The full Sui method set, priced the same way as every other protocol here. A list query costs what a single read costs, because it is still one request.

FAMILY
METHODS
CREDITS
Reads
sui_getObject, sui_getTransactionBlock, sui_getCheckpoint, sui_getProtocolConfig, suix_getBalance, suix_getCoinMetadata, suix_getDynamicFieldObject
1
Batch and list
sui_multiGetObjects, sui_multiGetTransactionBlocks, suix_queryTransactionBlocks, suix_queryEvents, suix_getOwnedObjects, suix_getAllBalances
1
Move and name service
sui_getNormalizedMoveFunction, sui_getNormalizedMoveModule, suix_resolveNameServiceAddress, suix_resolveNameServiceNames
1
Execution and simulation
sui_executeTransactionBlock, sui_dryRunTransactionBlock, sui_devInspectTransactionBlock
5

Any method not listed falls back to 1 credit.See what every call costs on the pricing page ->

Compatibility that is checked, not claimed.

Your parser does not change

Every method is called against this gateway and against Mysten's fullnode with identical parameters, then compared key by key at every depth. The response your code already parses is the response it still gets.

No cliff on this side

JSON-RPC here is not deprecated. If that ever changes it will be announced far enough ahead that nobody reads about it in an error log.

gRPC when you are ready

The migration guide maps every method to its gRPC equivalent. The same key works on both, so it can be gradual.

How hard you can push it.

Free10 RPS
Team50 RPS
Growth100 RPS
Professional200 RPS
Business500 RPS
Enterprise1,000+ RPS

Rate limits and credit quotas are separate. Compare every plan ->

Change two lines. Ship the same afternoon.

Get your API key

Free tier, no card required. The same key answers on gRPC and GraphQL when you are ready.