Practical examples for common use cases with SolixDB REST/JSON-RPC API
This page contains practical examples for common use cases with the SolixDB API. Use these examples to build trading bots, analytics dashboards, ML models, and more.
SELECT protocol_name, COUNT(*) as total_transactions, SUM(fee) as total_fees, AVG(fee) as avg_fee, MIN(fee) as min_fee, MAX(fee) as max_fee, AVG(compute_units) as avg_compute_unitsFROM transactionsWHERE date >= '2025-01-01' AND date <= '2025-01-31' AND protocol_name IN ('jupiter_v6', 'pump_fun', 'raydium_amm_v3')GROUP BY protocol_nameORDER BY total_transactions DESC
SELECT toDayOfWeek(date) as day_of_week, COUNT(*) as count, AVG(fee) as avg_fee, quantile(0.95)(fee) as p95_fee, quantile(0.99)(fee) as p99_feeFROM transactionsWHERE protocol_name = 'jupiter_v6' AND date >= '2025-01-01' AND date <= '2025-01-31'GROUP BY day_of_weekORDER BY avg_fee DESC
SELECT protocol_name, toHour(toDateTime(block_time)) as hour, COUNT(*) as count, AVG(fee) as avg_feeFROM transactionsWHERE protocol_name IN ('jupiter_v6', 'raydium_amm_v3', 'pump_fun') AND date >= '2025-01-01' AND date <= '2025-01-31'GROUP BY protocol_name, hourORDER BY protocol_name, hour
Analyze failed transactions to identify error patterns:
Copy
SELECT protocol_name, COUNT(*) as failed_count, COUNT(*) * 100.0 / (SELECT COUNT(*) FROM transactions WHERE protocol_name = t.protocol_name) as failure_rateFROM transactions tWHERE success = 0 AND date >= '2025-01-01' AND date <= '2025-01-31'GROUP BY protocol_nameORDER BY failed_count DESC
async function getProtocolPerformance(startDate, endDate) { const response = await fetch('https://api.solixdb.xyz/v1/query', { method: 'POST', headers: { 'Content-Type': 'application/json', 'x-api-key': process.env.SOLIXDB_API_KEY }, body: JSON.stringify({ query: ` SELECT protocol_name, COUNT(*) as tx_count, SUM(fee) as total_fees, AVG(fee) as avg_fee, AVG(compute_units) as avg_cu, COUNT(CASE WHEN success = 1 THEN 1 END) * 100.0 / COUNT(*) as success_rate FROM transactions WHERE date >= '${startDate}' AND date <= '${endDate}' GROUP BY protocol_name ORDER BY tx_count DESC `, format: 'json' }) }); const data = await response.json(); return data.data;}// Usageconst performance = await getProtocolPerformance('2025-01-01', '2025-01-31');console.table(performance);