Skip to main content
The GraphQL API provides flexible querying with exactly the data you need.

Endpoint

POST /graphql

Authentication

The API is publicly accessible and does not require authentication. Rate limiting is applied per IP address.

Schema

Types

Transaction

type Transaction {
  signature: String!
  slot: Int!
  blockTime: Int!
  programId: String!
  protocolName: String!
  instructionType: String!
  fee: Int!
  computeUnits: Int!
  accountsCount: Int!
  date: String!
  hour: Int!
}

ProtocolAnalytics

type ProtocolAnalytics {
  protocolName: String!
  totalTransactions: Int!
  totalFees: Int!
  totalComputeUnits: Int!
  averageFee: Float!
  averageComputeUnits: Float!
  uniquePrograms: Int!
  dateFrom: String
  dateTo: String
}

TimeSeriesPoint

type TimeSeriesPoint {
  timestamp: String!
  value: Int!
  label: String
}

FeeAnalytics

type FeeAnalytics {
  minFee: Int!
  maxFee: Int!
  avgFee: Float!
  medianFee: Float!
  p95Fee: Float!
  p99Fee: Float!
  totalFees: Int!
}

Stats

type Stats {
  totalTransactions: Int!
  totalFailedTransactions: Int!
  dateRange: DateRange!
  protocols: [ProtocolCount!]!
}

type DateRange {
  from: String!
  to: String!
}

type ProtocolCount {
  name: String!
  count: Int!
}

Queries

transactions

Query transactions with filters. Arguments:
ArgumentTypeRequiredDescription
protocolNameStringNoFilter by protocol
programIdStringNoFilter by program ID
dateFromStringNoStart date (YYYY-MM-DD)
dateToStringNoEnd date (YYYY-MM-DD)
signatureStringNoFilter by signature
limitIntNoNumber of results (default: 100)
offsetIntNoNumber to skip (default: 0)
query {
  transactions(
    protocolName: "jupiter_v6"
    dateFrom: "2025-07-20"
    limit: 10
  ) {
    signature
    protocolName
    fee
    computeUnits
    blockTime
  }
}

transaction

Get a single transaction by signature. Arguments:
ArgumentTypeRequiredDescription
signatureStringYesTransaction signature
query {
  transaction(signature: "5KJp...") {
    signature
    protocolName
    fee
    computeUnits
    blockTime
  }
}

protocolAnalytics

Get analytics for a protocol. Arguments:
ArgumentTypeRequiredDescription
protocolNameStringYesProtocol name
dateFromStringNoStart date
dateToStringNoEnd date
query {
  protocolAnalytics(
    protocolName: "jupiter_v6"
    dateFrom: "2025-07-20"
  ) {
    protocolName
    totalTransactions
    totalFees
    averageFee
    uniquePrograms
  }
}

timeSeries

Get time series data. Arguments:
ArgumentTypeRequiredDescription
protocolNameStringNoFilter by protocol
dateFromStringYesStart date
dateToStringYesEnd date
granularityStringNohour or day (default: hour)
query {
  timeSeries(
    protocolName: "jupiter_v6"
    dateFrom: "2025-07-20"
    dateTo: "2025-07-21"
    granularity: "hour"
  ) {
    timestamp
    value
  }
}

feeAnalytics

Get fee analytics. Arguments:
ArgumentTypeRequiredDescription
protocolNameStringNoFilter by protocol
dateFromStringNoStart date
dateToStringNoEnd date
query {
  feeAnalytics(protocolName: "jupiter_v6") {
    minFee
    maxFee
    avgFee
    medianFee
    p95Fee
    p99Fee
    totalFees
  }
}

stats

Get global statistics.
query {
  stats {
    totalTransactions
    totalFailedTransactions
    dateRange {
      from
      to
    }
    protocols {
      name
      count
    }
  }
}

Example Requests

Using JavaScript

const query = `
  query {
    transactions(protocolName: "jupiter_v6", limit: 5) {
      signature
      protocolName
      fee
    }
  }
`;

const response = await fetch('https://api.solixdb.xyz/graphql', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({ query })
});

const data = await response.json();
console.log(data);

Using Python

import requests

query = """
{
  transactions(protocolName: "jupiter_v6", limit: 5) {
    signature
    protocolName
    fee
  }
}
"""

response = requests.post(
    'https://api.solixdb.xyz/graphql',
    json={'query': query}
)

data = response.json()
print(data)

GraphQL Playground

You can use any GraphQL client or IDE to explore the API: