Skip to content

API Reference ​

Complete documentation for all Inodra API methods and gateways.

Gateway Documentation ​

Complete guides for each gateway type:

gRPC Proxy ​

High-performance binary protocol with server reflection enabled. Supports both native gRPC (servers, CLIs - full bidirectional streaming) and gRPC-Web (browsers) on the same endpoint.

GraphQL Proxy ​

Flexible queries through Inodra-managed Sui GraphQL nodes.

JSON-RPC Gateway ​

Drop-in replacement for Sui RPC nodes with long-term support commitment.

  • Endpoint: https://mainnet-api.inodra.com/v1/jsonrpc
  • Methods: Complete Sui JSON-RPC compatibility
  • Sui Reference: Sui JSON-RPC Documentation

Note: Sui has deprecated JSON-RPC and its public fullnodes no longer serve it. Inodra keeps serving the API on mainnet and testnet, with history back to genesis. Any change to its availability will be announced well in advance.

Authentication ​

All gateways use the same API key authentication. The data gateways below require a key with the Data scope (the default for new keys):

Primary Method (Recommended):

bash
curl -X POST https://mainnet-api.inodra.com/v1/graphql \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query": "{ chainIdentifier }"}'

Alternative Method (Also Supported):

bash
curl -X POST https://mainnet-api.inodra.com/v1/graphql \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query": "{ chainIdentifier }"}'

Query Parameter (compatibility only - not recommended):

bash
curl -X POST "https://mainnet-api.inodra.com/v1/graphql?api_key=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query": "{ chainIdentifier }"}'

The api_key query parameter works on all HTTP gateways (JSON-RPC, GraphQL, and Warp WebSocket/SSE). It exists for compatibility with clients that can't set custom headers - such as browser EventSource and WebSocket connections.

We don't recommend this method. Query parameters may be captured in server access logs, browser history, and referrer headers. Use header-based authentication unless your client genuinely can't set headers, and rotate the key from the dashboard if you suspect it leaked.

Rate Limits ​

  • Standard rate limits apply across all gateways
  • HTTP 429 returned when limits exceeded
  • Retry-After header indicates wait time in seconds
  • Check response headers:
    • X-RateLimit-Limit - Total requests allowed
    • X-RateLimit-Remaining - Requests remaining
    • X-RateLimit-Reset - Unix timestamp when limit resets

For higher limits, contact [email protected].

Quick Start Examples ​

JSON-RPC ​

javascript
const response = await fetch('https://mainnet-api.inodra.com/v1/jsonrpc', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'x-api-key': 'YOUR_API_KEY'
  },
  body: JSON.stringify({
    jsonrpc: '2.0',
    id: 1,
    method: 'sui_getLatestCheckpointSequenceNumber',
    params: []
  })
})

GraphQL ​

javascript
const query = `
  query {
    checkpoints(last: 5) {
      nodes {
        sequenceNumber
        timestamp
      }
    }
  }
`

const response = await fetch('https://mainnet-api.inodra.com/v1/graphql', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'x-api-key': 'YOUR_API_KEY'
  },
  body: JSON.stringify({ query })
})

gRPC ​

bash
# List all services (server reflection enabled)
grpcurl -H "x-api-key: YOUR_API_KEY" \
  mainnet-grpc.inodra.com:443 list

# Make a call
grpcurl -H "x-api-key: YOUR_API_KEY" \
  -d '{}' \
  mainnet-grpc.inodra.com:443 \
  sui.rpc.v2.LedgerService/GetCheckpoint

Need Help? ​

External References ​

For complete method specifications and advanced usage:

The full-stack Sui data layer.