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: While Sui has deprecated JSON-RPC, Inodra maintains full compatibility for the foreseeable future by translating requests to GraphQL/gRPC behind the scenes.

Authentication

All gateways use the same API key authentication:

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:

Released under the MIT License.