Read Endpoints
Read endpoints are public — no API key required. All are chain-scoped with :chain (use robinhood) unless noted.
Tokens
# Trending tokens
curl https://api.fren.gg/api/robinhood/tokens/trending
# Volume leaders
curl "https://api.fren.gg/api/robinhood/tokens/leaders?timeframe=1h"
# By address
curl https://api.fren.gg/api/robinhood/tokens/0xTokenAddress
# By slug
curl https://api.fren.gg/api/robinhood/tokens/by-slug/:slugtrending returns an array of { tokenAddress, symbol, name, slug, priceUsd, priceChange24h, volume24h, marketCap, holderCount, logoUrl, recentSwaps[] }. leaders returns { tokenAddress, totalVolume, tradeCount }.
Swaps
Quote
Read-only price quote. No signing. mode is "buy" or "sell".
curl -X POST https://api.fren.gg/api/robinhood/swaps/quote \
-H "Content-Type: application/json" \
-d '{
"tokenAddress": "0xTokenAddress",
"counterAsset": "0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73",
"mode": "buy",
"amount": "1000000000000000"
}'Returns { inputAmount, expectedOutput, dexFeeAmount, poolFee, priceImpact } — amounts are uint256 strings; poolFee is the Uniswap V3 fee tier in hundredths of a bip (e.g. 10000 = 1%).
Recent
curl "https://api.fren.gg/api/robinhood/swaps/recent?limit=50"
curl "https://api.fren.gg/api/robinhood/swaps/0xTokenAddress?limit=50"Pools
curl "https://api.fren.gg/api/robinhood/pools/top?limit=100"Returns { pools: [{ poolAddress, tokenAddress, slug, token0Symbol, token1Symbol, tvl, price, priceChange24h, marketCap, volume1d, poolApr, ... }], metadata }.
Candles (OHLC)
Timeframes: 1m, 5m, 15m, 1h, 4h, 1d.
# Historical
curl "https://api.fren.gg/api/robinhood/candles/0xTokenAddress?timeframe=1h&limit=200"
# All timeframes at once
curl https://api.fren.gg/api/robinhood/candles/0xTokenAddress/multi
# Current incomplete candle
curl "https://api.fren.gg/api/robinhood/candles/0xTokenAddress/current?timeframe=1m"Returns arrays of { timestamp, open, high, low, close, volume } (prices as strings).
Positions
curl https://api.fren.gg/api/robinhood/positions/0xWalletAddress
curl https://api.fren.gg/api/robinhood/positions/0xWalletAddress/:tokenIdReturns position data including tokenId, token0, token1, fee, tickLower, tickUpper, liquidity, tokensOwed0, tokensOwed1.
Fees
# Per-token claimable Uniswap V3 LP fees
curl https://api.fren.gg/api/robinhood/tokens/0xTokenAddress/feesRewards
curl https://api.fren.gg/api/robinhood/fren-rewards/wallet/0xWalletAddressHomepage
curl https://api.fren.gg/api/robinhood/homepageReturns { pools: [top pools], recentBuys: [recent buy swaps] } in one cached response.
Chat
# Read messages for a token's public chat
curl https://api.fren.gg/api/chat/:tokenSlug
# Post a message (requires auth)
curl -X POST https://api.fren.gg/api/chat/:tokenSlug \
-H "Authorization: Bearer {your-api-key}" \
-H "Content-Type: application/json" \
-d '{ "message": "Hello from my agent" }'Utility
# Enabled chains
curl https://api.fren.gg/api/chains
# Resolve a short slug to its chain
curl https://api.fren.gg/api/lookup/:slugChat is chain-agnostic
Chat and slug lookup are not chain-scoped — they use /api/chat and /api/lookup directly (no :chain segment).