Skip to main content
The JSON-RPC API provides method-based access to Solana transaction data following the JSON-RPC 2.0 specification. This API is similar to Helius and other RPC providers, making it familiar and easy to integrate.

Endpoint

POST /v1/rpc
Base URL: https://api.solixdb.xyz/v1/rpc

Authentication

All requests require an API key. Include it in the x-api-key header or as an api-key query parameter.
For details on authentication, see our Authentication guide.

Request Format

All requests follow the JSON-RPC 2.0 specification:
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "methodName",
  "params": [/* method parameters */]
}

Request Fields

  • jsonrpc (required): Must be "2.0"
  • id (required): Request identifier (string or number)
  • method (required): Method name to call
  • params (optional): Array of method parameters

Response Format

Success Response

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    /* method-specific result */
  }
}

Error Response

{
  "jsonrpc": "2.0",
  "id": 1,
  "error": {
    "code": -32000,
    "message": "Server error",
    "data": "Error details"
  }
}

Error Codes

CodeDescription
-32600Invalid Request
-32601Method not found
-32602Invalid params
-32603Internal error
-32000Server error

Available Methods

SolixDB provides analytics-focused JSON-RPC methods designed for DeFi transaction analysis:

Core Methods

  • getTransaction - Get a single transaction by signature
  • getTransactions - Get transactions with filters (protocol, instruction type, time range, etc.)

Analytics Methods

  • getProtocolStats - Get comprehensive statistics for a protocol
  • getProtocolComparison - Compare multiple protocols side by side
  • getProtocolPerformance - Get performance metrics (percentiles, averages)
  • getTopProtocols - Get top protocols by transaction count, fees, or success rate
  • getProtocolActivity - Get time-series activity data (hourly/daily)
  • getInstructionTypes - Get instruction types with statistics for protocols
  • getFailedTransactions - Get failed transactions with error details
  • getProtocols - Get list of all available protocols

getTransaction

Get a specific transaction by signature. Parameters:
  1. address (string, required): Solana address to query
  2. options (object, optional): Query options
    • transactionDetails (string): "full", "signatures", or "none" (default: "full")
    • sortOrder (string): "asc" or "desc" (default: "asc")
    • limit (number): Maximum number of results (default: 100, max: 10000)
    • filters (object, optional): Filter options
      • blockTime (object): Time range filter
        • gte (number): Greater than or equal (Unix timestamp)
        • lte (number): Less than or equal (Unix timestamp)
      • status (string): "succeeded", "failed", or "all" (default: "all")
      • protocols (array): Array of protocol names
      • programIds (array): Array of program IDs
      • signatures (array): Array of transaction signatures
Example:
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "getTransactionsForAddress",
  "params": [
    "YOUR_ADDRESS_HERE",
    {
      "transactionDetails": "full",
      "sortOrder": "asc",
      "limit": 100,
      "filters": {
        "blockTime": {
          "gte": 1735689600,
          "lte": 1738368000
        },
        "status": "succeeded",
        "protocols": ["jupiter_v6", "pump_fun"]
      }
    }
  ]
}
Response:
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "data": [
      {
        "signature": "5VERv8NMxzbPDohNpJhHopN2C9R4G5GaPevYf5hLJ8Z7",
        "slot": "123456789",
        "blockTime": 1735689600,
        "programId": "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4",
        "protocolName": "jupiter_v6",
        "instructionType": "swap",
        "fee": 5000,
        "computeUnits": 200000,
        "accountsCount": 10,
        "success": true
      }
    ]
  }
}

getTransaction

Get a specific transaction by signature. Parameters:
  1. signature (string, required): Transaction signature
Example:
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "getTransaction",
  "params": ["5VERv8NMxzbPDohNpJhHopN2C9R4G5GaPevYf5hLJ8Z7"]
}
Response:
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "signature": "5VERv8NMxzbPDohNpJhHopN2C9R4G5GaPevYf5hLJ8Z7",
    "slot": "123456789",
    "blockTime": 1735689600,
    "programId": "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4",
    "protocolName": "jupiter_v6",
    "instructionType": "swap",
    "fee": 5000,
    "computeUnits": 200000,
    "accountsCount": 10,
    "success": true
  }
}
Note: Returns null if transaction not found.

getTransactions

Get transactions with filters (general method). Parameters:
  1. options (object, optional): Query options
    • sortOrder (string): "asc" or "desc" (default: "desc")
    • limit (number): Maximum number of results (default: 100, max: 10000)
    • filters (object, optional): Filter options
      • blockTime (object): Time range filter
        • gte (number): Greater than or equal (Unix timestamp)
        • lte (number): Less than or equal (Unix timestamp)
      • status (string): "succeeded", "failed", or "all" (default: "all")
      • protocols (array): Array of protocol names
      • programIds (array): Array of program IDs
      • instructionTypes (array): Array of instruction types
      • signatures (array): Array of transaction signatures
Example:
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "getTransactions",
  "params": [{
    "sortOrder": "desc",
    "limit": 50,
    "filters": {
      "blockTime": {
        "gte": 1735689600,
        "lte": 1738368000
      },
      "status": "succeeded",
      "protocols": ["drift_v2", "kamino_lending"],
      "instructionTypes": ["Deposit", "Withdraw"]
    }
  }]
}
Response:
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "data": [
      {
        "signature": "5VERv8NMxzbPDohNpJhHopN2C9R4G5GaPevYf5hLJ8Z7",
        "slot": "123456789",
        "blockTime": 1735689600,
        "programId": "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4",
        "protocolName": "jupiter_v6",
        "instructionType": "swap",
        "fee": 5000,
        "computeUnits": 200000,
        "accountsCount": 10,
        "success": true
      }
    ]
  }
}

Transaction Object

All transaction objects contain the following fields:
FieldTypeDescription
signaturestringTransaction signature (Base58)
slotstringSolana slot number
blockTimenumberUnix timestamp
programIdstringProgram ID (Base58)
protocolNamestringProtocol name (e.g., “jupiter_v6”)
instructionTypestringInstruction type
feenumberTransaction fee (lamports)
computeUnitsnumberCompute units used
accountsCountnumberNumber of accounts involved
successbooleanWhether transaction succeeded

Supported Protocols

Active Protocols

  • drift_v2 - Drift Protocol V2
  • kamino_farms - Kamino Farms
  • kamino_lending - Kamino Lending
  • kamino_lending_vault - Kamino Lending Vault
  • kamino_limo - Kamino Limo
  • meteora_dlmm - Meteora DLMM
  • meteora_damm_v2 - Meteora DAMM V2
  • meteora_dynamic_bonding_curve - Meteora Dynamic Bonding Curve

Additional Protocols (Available on Request)

  • jupiter_v4 - Jupiter Aggregator V4
  • jupiter_v6 - Jupiter Aggregator V6
  • raydium_amm_v3 - Raydium AMM V3
  • raydium_cpmm - Raydium CPMM
  • pump_fun - Pump.fun
  • pump_amm - Pump AMM
  • orca_whirlpool - Orca Whirlpool

Code Examples

// Get protocol statistics
const response = await fetch('https://api.solixdb.xyz/v1/rpc', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'x-api-key': 'YOUR_API_KEY'
  },
  body: JSON.stringify({
    jsonrpc: '2.0',
    id: 1,
    method: 'getProtocolStats',
    params: [{
      protocolName: 'drift_v2',
      blockTime: {
        gte: 1735689600,
        lte: 1738368000
      }
    }]
  })
});

const data = await response.json();
console.log('Protocol Stats:', data.result);

Next Steps