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.
| Parameter | Type | Default | Description |
|---|---|---|---|
page | string | "1" | Page number |
limit | string | "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
}
}| Field | Type | Description |
|---|---|---|
poolAddress | string | Pool contract address |
poolShares | string | LP token balance (18 decimals) |
updatedAt | string | Last update timestamp |
Order History
GET /portfolio/order-history/:address
Returns paginated swap history with fee breakdowns.
| Parameter | Type | Default | Description |
|---|---|---|---|
page | string | "1" | Page number |
limit | string | "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/0xYourAddressResponse
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/0xYourAddressResponse
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/0xYourAddressResponse
json
{
"address": "0xyouraddress",
"division": "Gold",
"totalUnits": "1850000000000000000000",
"nextDivision": "Platinum",
"unitsToNextDivision": "150000000000000000000",
"progress": 0.92
}| Field | Type | Description |
|---|---|---|
division | string | Current tier name |
nextDivision | string | Next tier (null if at max) |
unitsToNextDivision | string | Units needed (null if at max) |
progress | number | Progress to next tier (0-1) |
All Divisions
GET /portfolio/divisions
Returns all available division tiers.
bash
curl https://mainnet.api.ryze.pro/api/portfolio/divisionsResponse
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/0xYourAddressResponse
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/0xYourAddressResponse
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.
| Parameter | Type | Default | Description |
|---|---|---|---|
months | number | 12 | Number 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.
| Parameter | Type | Default | Description |
|---|---|---|---|
limit | number | 20 | Max 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
}
]
}