Rewards & Leaderboard API

Query Leverage Rally Rewards (SOL rebates) and live leaderboard. Rewards scale with volume × timing accuracy.

Endpoints

  • GET /rewards/leaderboard?limit=50

  • GET /rewards/wallet/{address}

  • GET /rewards/payouts/latest

  • POST /rewards/claim (signed)

curl (leaderboard)

curl -s "https://api.plx.fi/v1/rewards/leaderboard?limit=5"
[
  {"rank":1,"address":"8xR7F...Kz3D","score":9321.2,"total_rewards_sol":42.91},
  {"rank":2,"address":"FfQp7...Rz9A","score":9174.7,"total_rewards_sol":39.88}
]
curl -s https://api.plx.fi/v1/rewards/wallet/FfQp7...Rz9A
{
  "address":"FfQp7...Rz9A",
  "epoch":"2025-10-31",
  "pending_sol":3.94,
  "lifetime_sol":12.31,
  "rank":12,
  "tier":"Gold",
  "breakdown":[
    {"vault":"SOL5X","volume":20432.1,"score":3211.3},
    {"vault":"PUMP2X","volume":932.4,"score":211.9}
  ]
}

claim rewards (signed)

curl -s -X POST https://api.plx.fi/v1/rewards/claim \
 -H "Authorization: Bearer $PLX_API_KEY" \
 -H "Content-Type: application/json" \
 -H "x-plx-ts: 1735698400" \
 -H "x-plx-wallet: FfQp7...Rz9A" \
 -d '{
  "wallet":"FfQp7...Rz9A",
  "signature":"4P1...ed25519sig..."
 }'
{
  "status":"success",
  "claimed_sol":3.94,
  "tx":"7kgFhS...Zp2k",
  "epoch":"2025-10-31"
}

TypeScript (poll + auto-claim)

import { api } from "./plx-api";
async function pollRewards(addr: string, key?: string) {
  const r = await api(`/rewards/wallet/${addr}`, key);
  if ((r.pending_sol ?? 0) > 0.1) {
    // sign message off-chain, then:
    const claim = await api(`/rewards/claim`, key, {
      method:"POST",
      body: JSON.stringify({ wallet: addr, signature: "<ed25519>" })
    });
    console.log("Claimed", claim.claimed_sol, "SOL");
  }
}

Last updated