Skip to content

Portfolio

All portfolio endpoints require a user's Ethereum address as a path parameter. Addresses are case-insensitive (lowercased internally).

LP Positions

GET /portfolio/pools/:address

Returns paginated liquidity pool positions.

ParameterTypeDefaultDescription
pagestring"1"Page number
limitstring"15"Items per page (max 15)
bash
curl "https://mainnet.api.ryze.pro/api/portfolio/pools/0xYourAddress?page=1&limit=15"

Response

json
{
  "address": "0xyouraddress",
  "positions": [
    {
      "address": "0xyouraddress",
      "poolAddress": "0x7b41aa91947398cd9244ad4e314c253d9b1b5206",
      "poolShares": "99500000000000000000",
      "updatedAt": "2026-04-15T12:00:00.000Z"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 15,
    "totalItems": 1,
    "totalPages": 1,
    "hasNext": false,
    "hasPrev": false
  }
}
FieldTypeDescription
poolAddressstringPool contract address
poolSharesstringLP token balance (18 decimals)
updatedAtstringLast update timestamp

Order History

GET /portfolio/order-history/:address

Returns paginated swap history with fee breakdowns.

ParameterTypeDefaultDescription
pagestring"1"Page number
limitstring"15"Items per page (max 15)
bash
curl "https://mainnet.api.ryze.pro/api/portfolio/order-history/0xYourAddress"

Response

json
{
  "address": "0xyouraddress",
  "swaps": [
    {
      "id": "0xyouraddress:0xtxhash:42",
      "userAddress": "0xyouraddress",
      "poolAddress": "0x7b41...",
      "txHash": "0xtxhash",
      "tokenIn": "0x8335...2913",
      "tokenOut": "0x4200...0006",
      "amountIn": "100000000",
      "amountOut": "62500000000000000",
      "feeDetails": {
        "swapFee": { "token": "0x8335...", "amount": "30000" },
        "takerFee": { "token": "0x8335...", "amount": "10000" },
        "wbfFee": { "token": "0x8335...", "amount": "0" },
        "slippageFee": { "token": "0x8335...", "amount": "5000" },
        "wbrFee": { "token": "0x8335...", "amount": "0" }
      },
      "timestamp": "2026-04-15T12:00:00.000Z",
      "blockNumber": 44700000,
      "logIndex": 42,
      "isMultiHop": false,
      "createdAt": "2026-04-15T12:00:00.000Z"
    }
  ],
  "pagination": { ... }
}

Multi-hop swaps include route details:

json
{
  "isMultiHop": true,
  "multiHopRoute": [
    { "pool": "0xPool1...", "tokenIn": "0xA...", "tokenOut": "0xB..." },
    { "pool": "0xPool2...", "tokenIn": "0xB...", "tokenOut": "0xC..." }
  ]
}

Units

GET /portfolio/units/:address

Returns Unit token balances by category.

bash
curl https://mainnet.api.ryze.pro/api/portfolio/units/0xYourAddress

Response

json
{
  "address": "0xyouraddress",
  "premiumUnits": "1000000000000000000000",
  "perpetualUnits": "500000000000000000000",
  "traderUnits": "250000000000000000000",
  "referralUnits": "100000000000000000000",
  "totalUnits": "1850000000000000000000",
  "vestingEndTimestamp": "2026-07-15T00:00:00.000Z",
  "lastActivityTimestamp": "2026-04-15T12:00:00.000Z",
  "lastUpdatedBlock": 44700000,
  "updatedAt": "2026-04-15T12:00:00.000Z"
}

Rewards

GET /portfolio/rewards/:address

Returns claimed rewards broken down by source.

bash
curl https://mainnet.api.ryze.pro/api/portfolio/rewards/0xYourAddress

Response

json
{
  "address": "0xyouraddress",
  "claimedRewards": "5000000000000000000",
  "rewardsBySource": {
    "emission": "2000000000000000000",
    "revenueShare": "1000000000000000000",
    "lpStaking": "2000000000000000000"
  },
  "lastUpdatedBlock": 44700000
}

Division

GET /portfolio/division/:address

Returns the user's tier based on total units.

bash
curl https://mainnet.api.ryze.pro/api/portfolio/division/0xYourAddress

Response

json
{
  "address": "0xyouraddress",
  "division": "Gold",
  "totalUnits": "1850000000000000000000",
  "nextDivision": "Platinum",
  "unitsToNextDivision": "150000000000000000000",
  "progress": 0.92
}
FieldTypeDescription
divisionstringCurrent tier name
nextDivisionstringNext tier (null if at max)
unitsToNextDivisionstringUnits needed (null if at max)
progressnumberProgress to next tier (0-1)

All Divisions

GET /portfolio/divisions

Returns all available division tiers.

bash
curl https://mainnet.api.ryze.pro/api/portfolio/divisions

Response

json
{
  "divisions": [
    { "name": "Bronze", "minUnits": "0" },
    { "name": "Silver", "minUnits": "100000000000000000000" },
    { "name": "Gold", "minUnits": "1000000000000000000000" },
    { "name": "Platinum", "minUnits": "2000000000000000000000" }
  ]
}

Claimable Epochs

GET /portfolio/claimable-epochs/:address

Returns epochs with unclaimed rewards from GaugesManager.

bash
curl https://mainnet.api.ryze.pro/api/portfolio/claimable-epochs/0xYourAddress

Response

json
{
  "address": "0xyouraddress",
  "currentEpoch": 5,
  "claimableEpochs": [
    {
      "epoch": 3,
      "category": "trader",
      "activityAmount": "500000000000000000000",
      "firstActivityTimestamp": "2026-04-10T00:00:00.000Z"
    }
  ],
  "totalClaimableByCategory": {
    "perpetual": 2,
    "trader": 1,
    "referral": 0
  }
}

Trading Savings

GET /portfolio/trading-savings/:address

Returns how much the user saved vs. other DEXes.

bash
curl https://mainnet.api.ryze.pro/api/portfolio/trading-savings/0xYourAddress

Response

json
{
  "address": "0xyouraddress",
  "netDifferenceUsd": 42.50,
  "totalSavedUsd": 50.00,
  "totalLostUsd": 7.50,
  "totalSwaps": 25,
  "swapsWithSavings": 20,
  "swapsWithLosses": 5,
  "avgSavingsPercentage": 0.15
}

Savings Chart

GET /portfolio/trading-savings/:address/chart

Monthly savings data for charting.

ParameterTypeDefaultDescription
monthsnumber12Number of months (1-24)
json
{
  "address": "0xyouraddress",
  "chartData": [
    {
      "month": "2026-04",
      "avgSavingsPercentage": 0.15,
      "netDifferenceUsd": 42.50,
      "totalSavedUsd": 50.00,
      "totalLostUsd": 7.50,
      "swapCount": 25
    }
  ]
}

Savings Swaps

GET /portfolio/trading-savings/:address/swaps

Individual swap comparison details.

ParameterTypeDefaultDescription
limitnumber20Max results (1-100)
json
{
  "address": "0xyouraddress",
  "swaps": [
    {
      "txHash": "0x...",
      "timestamp": "2026-04-15T12:00:00.000Z",
      "tokenIn": "0x8335...",
      "tokenOut": "0x4200...",
      "amountIn": "100000000",
      "amountOutRyze": "62500000000000000",
      "savedVsBestAlt": "125000000000000",
      "savingsPercentage": 0.20,
      "savedUsd": 0.20
    }
  ]
}