This guide will help you get started with the SolixDB GraphQL API and make your first request to query Solana DeFi data.
Prerequisites
- HTTP client (curl, Postman, or your preferred tool)
- Basic understanding of GraphQL
- (Optional) GraphQL client library for your language
API Endpoint
All GraphQL requests should be made to:
POST https://api.solixdb.xyz/graphql
Making Your First Request
Basic GraphQL Query
The simplest way to get started is with a basic GraphQL query:
curl -X POST "https://api.solixdb.xyz/graphql" \
-H "Content-Type: application/json" \
-d '{
"query": "{ transactions(filters: { protocols: [\"jupiter_v6\"] }, pagination: { first: 10 }) { edges { node { signature protocolName fee computeUnits } } } }"
}'
Query with Filters
Add filters to narrow down your results:
query {
transactions(
filters: {
protocols: ["pump_fun", "pump_amm"]
dateRange: { start: "2025-01-01", end: "2025-01-31" }
feeRange: { min: "100000" }
}
pagination: { first: 100 }
) {
edges {
node {
signature
slot
protocolName
fee
computeUnits
}
cursor
}
pageInfo {
hasNextPage
endCursor
}
}
}
Aggregation Query
Use aggregations to calculate statistics:
query {
transactions(
filters: {
protocols: ["jupiter_v6"]
dateRange: { start: "2025-01-01", end: "2025-01-31" }
}
groupBy: [PROTOCOL, HOUR]
metrics: [COUNT, AVG_FEE, P95_COMPUTE_UNITS]
sort: { field: COUNT, direction: DESC }
) {
edges {
node {
protocol
hour
count
avgFee
p95ComputeUnits
}
}
}
}
Understanding the Response
GraphQL responses follow this structure:
{
"data": {
"transactions": {
"edges": [
{
"node": {
"signature": "5VERv8NMxzbPDohNpJhHopN2C9R4G5GaPevYf5hLJ8Z7",
"protocolName": "jupiter_v6",
"fee": "5000",
"computeUnits": "200000"
},
"cursor": "eyJzbG90IjoxMjM0NTY3ODksInNpZ25hdHVyZSI6IjVWRXJ2OE5NeHpiUERvaE5wSmhIb3BOMkM5UjRHNUdhUGV2WWY1aExKOFo3In0="
}
],
"pageInfo": {
"hasNextPage": true,
"endCursor": "eyJzbG90IjoxMjM0NTY3ODksInNpZ25hdHVyZSI6IjVWRXJ2OE5NeHpiUERvaE5wSmhIb3BOMkM5UjRHNUdhUGV2WWY1aExKOFo3In0="
}
}
}
}
Error Responses
If there’s an error, the response will include an errors array:
{
"errors": [
{
"message": "Query complexity exceeds limit",
"extensions": {
"code": "COMPLEXITY_EXCEEDED",
"complexity": 1200,
"limit": 1000
}
}
],
"data": null
}
Query Complexity
Before executing expensive queries, check their complexity:
query {
queryComplexity(
filters: {
dateRange: { start: "2025-01-01", end: "2025-01-31" }
protocols: ["pump_fun"]
}
groupBy: [PROTOCOL, HOUR]
metrics: [COUNT, AVG_FEE]
) {
score
estimatedRows
baseCost
recommendations
}
}
Queries with complexity >1000 are rejected. Always check complexity before executing expensive queries.
For large result sets, use cursor-based pagination:
query GetTransactions($first: Int, $after: String) {
transactions(
filters: { protocols: ["pump_fun"] }
pagination: { first: $first, after: $after }
) {
edges {
node {
signature
protocolName
fee
}
cursor
}
pageInfo {
hasNextPage
endCursor
}
}
}
Supported Protocols
Currently, we support the following DEX protocols:
jupiter_v4 - Jupiter Aggregator V4
jupiter_v6 - Jupiter Aggregator V6
raydium_amm_v3 - Raydium AMM V3
raydium_cp_swap - Raydium CP Swap
pump_fun - Pump.fun
pump_amm - Pump AMM
whirlpool - Orca Whirlpool
We’re continuously adding support for more protocols. Check our changelog for updates.
Authentication
The API is publicly accessible and does not require authentication. Rate limiting is applied per IP address based on query complexity.
Next Steps
Now that you’ve made your first request, explore these resources: