{"openapi":"3.0.0","info":{"title":"Flaunch V2 Public API","description":"Read-only builder-facing API. Auth via X-Api-Key (builders) or Authorization: Bearer <id_token> (portal). Rate limits enforced per-account with minute/hour/day windows. See X-RateLimit-* response headers.","version":"2.0.0"},"components":{"securitySchemes":{"apiKey":{"type":"apiKey","in":"header","name":"X-Api-Key"},"googleBearer":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{}},"paths":{"/v2/health":{"get":{"summary":"V2 liveness check","tags":["V2:Health"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"version":{"type":"string"},"timestamp":{"type":"integer"}},"required":["status","version","timestamp"]}}}}}}},"/v2/{chain}/coins/all":{"get":{"summary":"List all coins (paginated, sorted by market cap)","tags":["V2:Coins"],"parameters":[{"schema":{"type":"integer","minimum":1,"default":1},"in":"query","name":"page","required":false,"description":"Page number (100 coins per page, sorted by market cap desc)"},{"schema":{"type":"string"},"in":"path","name":"chain","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"tokenAddress":{"type":"string","description":"Checksummed token address"},"image":{"type":"string","description":"IPFS gateway URL for the token logo"},"symbol":{"type":"string"},"name":{"type":"string"},"priceETH":{"type":"string","description":"Current price in ETH (decimal string)"},"priceUSD":{"type":"string","description":"Current price in USD (decimal string)"},"twentyFourHourChangePercentage":{"type":"number","description":"Price change % over last 24h (computed from earliest 1h OHLCV candle openPriceETH vs current priceETH). E.g. 3.5 means +3.5%"},"twentyFourHourVolume":{"type":"string","description":"24h volume in ETH (human-readable decimal, e.g. \"12.345\")"},"twentyFourHourVolumeUSD":{"type":"string","description":"24h volume in USD (decimal string)"},"feesEarned":{"type":"string","description":"Lifetime fees earned in ETH (sum of UserCoinFee.lifetimeFees)"},"feesEarnedUSD":{"type":"string","description":"Lifetime fees earned in USD"},"marketCapETH":{"type":"string","description":"Market cap in ETH (human-readable decimal). Overridden for FLAY/YNE/BEAM tokens with correct totalSupply"},"marketCapUSD":{"type":"string","description":"Market cap in USD. Overridden for FLAY/YNE/BEAM tokens"},"royaltyMembers":{"type":"array","description":"Royalty fee receivers with share percentages. Single owner (100%) when no fee split.","items":{"type":"object","properties":{"address":{"type":"string","description":"Receiver wallet address"},"percentage":{"type":"number","description":"Share of fees in percent (0-100)"}}}},"hourData":{"type":"array","items":{"type":"object","description":"Hourly sparkline data point (1h OHLCV candle aggregated)","properties":{"periodStartUnix":{"type":"number","description":"Unix timestamp of the hour start"},"volumeETH":{"type":"string","description":"Volume in ETH (wei string) for this hour"},"volumeUSD":{"type":"string","description":"Volume in USD for this hour"},"openPriceETH":{"type":"string","description":"Open price in ETH (decimal) for this hour"},"closePriceETH":{"type":"string","description":"Close price in ETH (decimal) for this hour"}}},"description":"Last 12 hourly data points for sparkline chart"}}}},"pagination":{"type":"object","properties":{"page":{"type":"integer"},"pageSize":{"type":"integer"},"totalPages":{"type":"integer"},"totalItems":{"type":"integer"}}}}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}}}}},"/v2/{chain}/coins/top":{"get":{"summary":"Top coins","tags":["V2:Coins"],"description":"Sort by new, volume, marketCap, or topSwaps. Optional creator filter.","parameters":[{"schema":{"type":"string","enum":["new","volume","marketCap","topSwaps"],"default":"new"},"in":"query","name":"sort","required":false,"description":"Sort mode: new (createdAt desc, default), volume (24h USD volume desc), marketCap (corrected market cap desc, filters spam via fees>0 + holders>=5), topSwaps (24h swap count from 1h candle txCount)"},{"schema":{"type":"integer","minimum":1,"maximum":50},"in":"query","name":"limit","required":false,"description":"Number of coins per page (default 50)"},{"schema":{"type":"integer","minimum":1,"default":1},"in":"query","name":"page","required":false,"description":"Page number for pagination (only used when creator is set)"},{"schema":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$"},"in":"query","name":"creator","required":false,"description":"Filter by creator address. Returns coins by this creator with pagination. sort applies within creator results."},{"schema":{"type":"string"},"in":"path","name":"chain","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"tokenAddress":{"type":"string","description":"Checksummed token address"},"image":{"type":"string","description":"IPFS gateway URL for the token logo"},"symbol":{"type":"string"},"name":{"type":"string"},"priceETH":{"type":"string","description":"Current price in ETH (decimal string)"},"priceUSD":{"type":"string","description":"Current price in USD (decimal string)"},"twentyFourHourChangePercentage":{"type":"number","description":"Price change % over last 24h (computed from earliest 1h OHLCV candle openPriceETH vs current priceETH). E.g. 3.5 means +3.5%"},"twentyFourHourVolume":{"type":"string","description":"24h volume in ETH (human-readable decimal, e.g. \"12.345\")"},"twentyFourHourVolumeUSD":{"type":"string","description":"24h volume in USD (decimal string)"},"feesEarned":{"type":"string","description":"Lifetime fees earned in ETH (sum of UserCoinFee.lifetimeFees)"},"feesEarnedUSD":{"type":"string","description":"Lifetime fees earned in USD"},"marketCapETH":{"type":"string","description":"Market cap in ETH (human-readable decimal). Overridden for FLAY/YNE/BEAM tokens with correct totalSupply"},"marketCapUSD":{"type":"string","description":"Market cap in USD. Overridden for FLAY/YNE/BEAM tokens"},"royaltyMembers":{"type":"array","description":"Royalty fee receivers with share percentages. Single owner (100%) when no fee split.","items":{"type":"object","properties":{"address":{"type":"string","description":"Receiver wallet address"},"percentage":{"type":"number","description":"Share of fees in percent (0-100)"}}}},"hourData":{"type":"array","items":{"type":"object","description":"Hourly sparkline data point (1h OHLCV candle aggregated)","properties":{"periodStartUnix":{"type":"number","description":"Unix timestamp of the hour start"},"volumeETH":{"type":"string","description":"Volume in ETH (wei string) for this hour"},"volumeUSD":{"type":"string","description":"Volume in USD for this hour"},"openPriceETH":{"type":"string","description":"Open price in ETH (decimal) for this hour"},"closePriceETH":{"type":"string","description":"Close price in ETH (decimal) for this hour"}}},"description":"Last 12 hourly data points for sparkline chart"}}}},"pagination":{"type":"object","properties":{"page":{"type":"integer"},"pageSize":{"type":"integer"},"totalPages":{"type":"integer"},"totalItems":{"type":"integer"}}}}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}}}}},"/v2/{chain}/coins/search":{"get":{"summary":"Search coins and users","tags":["V2:Coins"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":100},"in":"query","name":"q","required":true,"description":"Search term (name, symbol, or full 0x address)"},{"schema":{"type":"integer","minimum":1,"maximum":50,"default":10},"in":"query","name":"limit","required":false,"description":"Max results to return (default 10)"},{"schema":{"type":"string"},"in":"path","name":"chain","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"tokenAddress":{"type":"string","description":"Checksummed token address"},"name":{"type":"string"},"symbol":{"type":"string"},"image":{"type":"string","description":"Token image URL"},"priceUSD":{"type":"string","description":"Current price in USD (decimal string)"},"marketCapUSD":{"type":"string","description":"Market cap in USD (decimal string)"},"lifetimeVolumeUSD":{"type":"string","description":"Lifetime traded volume in USD used for search ordering"},"twentyFourHourChangePercentage":{"type":"number","description":"Price change % over last 24h. E.g. 3.5 means +3.5%"},"hourData":{"type":"array","items":{"type":"object","description":"Hourly sparkline data point (1h OHLCV candle aggregated)","properties":{"periodStartUnix":{"type":"number","description":"Unix timestamp of the hour start"},"volumeETH":{"type":"string","description":"Volume in ETH (wei string) for this hour"},"volumeUSD":{"type":"string","description":"Volume in USD for this hour"},"openPriceETH":{"type":"string","description":"Open price in ETH (decimal) for this hour"},"closePriceETH":{"type":"string","description":"Close price in ETH (decimal) for this hour"}}},"description":"Last 12 hourly data points for sparkline chart"}}}},"users":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Lowercase wallet address"},"displayName":{"type":"string"},"avatar":{"type":"string","nullable":true},"source":{"type":"string","enum":["farcaster","twitter","basename","ens","address","custom"]},"isTwitterVerified":{"type":"boolean"},"displayNamePreference":{"type":"string","nullable":true},"links":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"source":{"type":"string"},"avatar":{"type":"string","nullable":true},"url":{"type":"string","nullable":true}}}}}}},"query":{"type":"string"},"count":{"type":"integer"},"coinCount":{"type":"integer"},"userCount":{"type":"integer"}}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}}}}},"/v2/{chain}/top-earners":{"get":{"summary":"Top earners (coins or users) by lifetime fees","tags":["V2:Coins"],"parameters":[{"schema":{"type":"string","enum":["coins","users"],"default":"coins"},"in":"query","name":"sort","required":false},{"schema":{"type":"integer","minimum":1,"maximum":50,"default":5},"in":"query","name":"limit","required":false},{"schema":{"type":"string"},"in":"path","name":"chain","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"tokenAddress":{"type":"string"},"userAddress":{"type":"string"},"symbol":{"type":"string"},"imageUrl":{"type":"string"},"lifetimeFeesETH":{"type":"string"},"lifetimeFeesUSD":{"type":"string"},"feesEarned24h":{"type":"string"},"feesEarned24hUSD":{"type":"string"}}}}}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}}}}},"/v2/{chain}/rates":{"get":{"summary":"ETH/USD or USDC/USD rate","tags":["V2:Rates"],"parameters":[{"schema":{"type":"string","enum":["eth-usd","usdc-usd"]},"in":"query","name":"type","required":true},{"schema":{"type":"string"},"in":"path","name":"chain","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"rate":{"type":"number"}}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}}}}},"/v2/{chain}/coin/{coinAddress}/details":{"get":{"summary":"Get consolidated coin details","tags":["V2:Coin"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"chain","required":true},{"schema":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$"},"in":"path","name":"coinAddress","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"address":{"type":"string"},"name":{"type":"string"},"symbol":{"type":"string"},"decimals":{"type":"number"},"image":{"type":"string"},"description":{"type":"string"},"socials":{"type":"object","properties":{"website":{"type":"string"},"twitter":{"type":"string"},"telegram":{"type":"string"},"discord":{"type":"string"},"farcaster":{"type":"string"}}},"status":{"type":"object","properties":{"fairLaunchActive":{"type":"boolean"},"createdAt":{"type":"number"},"owner":{"type":"string"},"creator":{"type":"string"},"isTwitterVerified":{"type":"boolean"},"isWebsiteVerified":{"type":"boolean"}}},"tokenInfo":{"type":"object","properties":{"totalSupply":{"type":"string"},"liquidityUSD":{"type":"string"},"automatedBuybackPercentage":{"type":"number"},"treasuryTokens":{"type":"string"}}},"price":{"type":"object","properties":{"currentETH":{"type":"string"},"currentUSD":{"type":"string"},"priceChange24h":{"type":"number"},"low24hETH":{"type":"string"},"low24hUSD":{"type":"string"},"high24hETH":{"type":"string"},"high24hUSD":{"type":"string"},"startingMarketCapETH":{"type":"string"}}},"marketCap":{"type":"object","properties":{"marketCapETH":{"type":"string"},"marketCapUSD":{"type":"string"}}},"volume":{"type":"object","properties":{"volume24hETH":{"type":"string"},"volume24hUSD":{"type":"string"}}},"trading":{"type":"object","nullable":true,"properties":{"bidWallRemainingPercentage":{"type":"number"},"buybackProgress":{"type":"number"}}},"totalHolders":{"type":"number"},"recentBuyers":{"type":"array","items":{"type":"object","properties":{"address":{"type":"string","description":"Buyer wallet address (maker of the swap)"},"time":{"type":"number","description":"Swap timestamp (Unix seconds); list is newest first"}}}},"feeReceivers":{"type":"object","properties":{"totalCount":{"type":"number","description":"Total number of fee receivers"},"receivers":{"type":"array","items":{"type":"object","properties":{"address":{"type":"string","description":"Receiver wallet address"},"percentage":{"type":"number","description":"Share of fees in percent"}}}},"managerId":{"type":"string","description":"Manager contract address"},"managerType":{"type":"string","description":"Manager type: AddressFeeSplitManager, DynamicAddressFeeSplitManager, or RevenueManager"}}},"nftContract":{"type":["null","string"],"description":"Flaunch NFT collection contract address (parsed from royaltyTokenId)"},"nftTokenId":{"type":["null","string"],"description":"NFT token ID within the Flaunch collection (decimal string, parsed from royaltyTokenId)"}}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}}}}},"/v2/{chain}/coin/{coinAddress}/activity":{"get":{"summary":"Get coin recent trades + fee rollup","tags":["V2:Coin"],"parameters":[{"schema":{"type":"integer","minimum":1},"in":"query","name":"page","required":false},{"schema":{"type":"integer","minimum":1,"maximum":50,"default":20},"in":"query","name":"limit","required":false},{"schema":{"type":"string"},"in":"query","name":"cursor","required":false},{"schema":{"type":"string"},"in":"path","name":"chain","required":true},{"schema":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$"},"in":"path","name":"coinAddress","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"address":{"type":"string"},"recentTrades":{"type":"array","items":{"type":"object","properties":{"maker":{"type":"string"},"type":{"type":"string"},"timestamp":{"type":"number"},"txHash":{"type":"string"},"amountToken":{"type":"string"},"amountETH":{"type":"string"},"amountUSD":{"type":"string"}}}},"fees":{"type":"object","properties":{"todayETH":{"type":"string"},"todayUSD":{"type":"string"},"totalETH":{"type":"string"},"totalUSD":{"type":"string"}}},"pagination":{"type":"object","properties":{"page":{"type":"number"},"pageSize":{"type":"number"},"hasMore":{"type":"boolean"},"nextCursor":{"type":"string"}}}}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}}}}},"/v2/{chain}/coin/{coinAddress}/holders":{"get":{"summary":"Paginated holders list","tags":["V2:Coin"],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":1000,"default":50},"in":"query","name":"limit","required":false},{"schema":{"type":"integer","minimum":0,"default":0},"in":"query","name":"offset","required":false},{"schema":{"type":"string"},"in":"path","name":"chain","required":true},{"schema":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$"},"in":"path","name":"coinAddress","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"address":{"type":"string"},"balanceToken":{"type":"string"},"balanceUSD":{"type":"string"}}}},"pagination":{"type":"object","properties":{"limit":{"type":"integer"},"offset":{"type":"integer"},"totalCount":{"type":"integer"},"totalPages":{"type":"integer"}}}}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}}}}},"/v2/{chain}/coin/{coinAddress}/ohlcv":{"get":{"summary":"OHLCV candles (TradingView-compatible)","tags":["V2:Coin"],"parameters":[{"schema":{"type":"string","enum":["1m","15m","1h","4h","1d"],"default":"1h"},"in":"query","name":"timeframe","required":false,"description":"Candle timeframe"},{"schema":{"type":"integer","minimum":1,"maximum":1000,"default":768},"in":"query","name":"limit","required":false,"description":"Number of candles (default 768, max 1000)"},{"schema":{"type":"string"},"in":"path","name":"chain","required":true},{"schema":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$"},"in":"path","name":"coinAddress","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"periodStartUnix":{"type":"number"},"openPriceETH":{"type":"string"},"closePriceETH":{"type":"string"},"highPriceETH":{"type":"string"},"lowPriceETH":{"type":"string"},"openPriceUSD":{"type":"string"},"closePriceUSD":{"type":"string"},"highPriceUSD":{"type":"string"},"lowPriceUSD":{"type":"string"},"volumeETH":{"type":"string"},"volumeUSD":{"type":"string"}}}},"timeframe":{"type":"string"},"count":{"type":"integer"}}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}}}}},"/v2/{chain}/coin/{coinAddress}/earnings":{"get":{"summary":"Coin earnings history by period","tags":["V2:Coin"],"parameters":[{"schema":{"type":"string","enum":["1d","7d","1m","6m","all"],"default":"7d"},"in":"query","name":"period","required":false,"description":"Earnings history period: 1d (24h), 7d (7 days), 1m (30 days), 6m (180 days), all (lifetime)"},{"schema":{"type":"string"},"in":"path","name":"chain","required":true},{"schema":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$"},"in":"path","name":"coinAddress","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"fees":{"type":"object","properties":{"todayETH":{"type":"string"},"todayUSD":{"type":"string"},"yesterdayETH":{"type":"string"},"yesterdayUSD":{"type":"string"},"totalETH":{"type":"string"},"totalUSD":{"type":"string"}}},"earningsHistory":{"type":"array","items":{"type":"object","properties":{"date":{"type":"number"},"earningsETH":{"type":"string"},"earningsUSD":{"type":"string"}}}}}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}}}}},"/v2/{chain}/users/{userAddress}/identity":{"get":{"summary":"Resolve wallet/ENS identity","tags":["V2:User"],"description":"Resolve ENS/Basename/Social identity for a wallet address or ENS name (e.g. vitalik.eth, name.base.eth)","parameters":[{"schema":{"type":"string"},"in":"path","name":"chain","required":true},{"schema":{"type":"string","minLength":1,"maxLength":256},"in":"path","name":"userAddress","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"displayName":{"type":"string"},"avatar":{"type":"string","nullable":true},"source":{"type":"string","enum":["farcaster","twitter","basename","ens","address","custom"]},"isTwitterVerified":{"type":"boolean"},"displayNamePreference":{"type":"string","nullable":true},"links":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"source":{"type":"string"},"avatar":{"type":"string","nullable":true},"url":{"type":"string","nullable":true}}}}}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}}}}},"/v2/{chain}/users/{userAddress}/tooltip":{"get":{"summary":"User tooltip summary (PnL, earnings, joined, favorite coin)","tags":["V2:User"],"description":"Get consolidated summary for user info tooltip (PNL, Earnings, Joined Date, Favorite Coin)","parameters":[{"schema":{"type":"string"},"in":"path","name":"chain","required":true},{"schema":{"type":"string"},"in":"path","name":"userAddress","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"address":{"type":"string"},"displayName":{"type":"string"},"avatar":{"type":"string","nullable":true},"joinedAt":{"type":"number","nullable":true},"pnlUSD":{"type":"string"},"earningsUSD":{"type":"string"},"favoriteCoin":{"type":"object","nullable":true,"properties":{"id":{"type":"string"},"symbol":{"type":"string"},"image":{"type":"string"},"currentValueUSD":{"type":"string"}}},"links":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"source":{"type":"string"},"avatar":{"type":"string","nullable":true},"url":{"type":"string","nullable":true}}}}}}}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}}}}},"/v2/{chain}/users/{userAddress}/balances":{"get":{"summary":"Wallet balances (ETH, WETH, USDC)","tags":["V2:User"],"description":"Get native ETH, WETH, and USDC wallet balances for a user","parameters":[{"schema":{"type":"string"},"in":"path","name":"chain","required":true},{"schema":{"type":"string","minLength":1,"maxLength":256},"in":"path","name":"userAddress","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"walletBalances":{"type":"object","properties":{"eth":{"type":"object","properties":{"symbol":{"type":"string","enum":["ETH","WETH","USDC"]},"tokenAddress":{"type":"string"},"balance":{"type":"string"},"balanceFormatted":{"type":"string"},"balanceUSD":{"type":"string"}}},"weth":{"type":"object","properties":{"symbol":{"type":"string","enum":["ETH","WETH","USDC"]},"tokenAddress":{"type":"string"},"balance":{"type":"string"},"balanceFormatted":{"type":"string"},"balanceUSD":{"type":"string"}}},"usdc":{"type":"object","properties":{"symbol":{"type":"string","enum":["ETH","WETH","USDC"]},"tokenAddress":{"type":"string"},"balance":{"type":"string"},"balanceFormatted":{"type":"string"},"balanceUSD":{"type":"string"}}}}}}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}}}}},"/v2/{chain}/users/{userAddress}/positions":{"get":{"summary":"List user positions with PnL summary","tags":["V2:Positions"],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"in":"query","name":"limit","required":false},{"schema":{"type":"integer","minimum":0,"default":0},"in":"query","name":"offset","required":false},{"schema":{"type":"string"},"in":"path","name":"chain","required":true},{"schema":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$"},"in":"path","name":"userAddress","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"tokenAddress":{"type":"string"},"symbol":{"type":"string"},"name":{"type":"string"},"image":{"type":"string"},"balance":{"type":"string"},"balanceFormatted":{"type":"string"},"positionStatus":{"type":"string","enum":["active","closed"]},"currentValueUSD":{"type":"string"},"value24hChangePercentage":{"type":"string"},"token":{"type":"object","properties":{"marketCapUSD":{"type":"string"},"priceChange24hPercentage":{"type":"number"}}}}}},"pagination":{"type":"object","properties":{"limit":{"type":"integer"},"offset":{"type":"integer"},"totalCount":{"type":"integer"},"totalPages":{"type":"integer"}}},"summary":{"type":"object","properties":{"totalHoldingsUSD":{"type":"string"},"totalCostBasisUSD":{"type":"string"},"totalUnrealizedPnLUSD":{"type":"string"},"totalRealizedPnLUSD":{"type":"string"},"totalNetPnLUSD":{"type":"string"},"overallPnLPercentage":{"type":"string"},"overallUnrealizedPnLPercentage":{"type":"string"},"overallRealizedPnLPercentage":{"type":"string"},"holdings24hChangePercentage":{"type":"string"},"positionsCount":{"type":"number"},"activePositionsCount":{"type":"number"}}}}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}}}}},"/v2/{chain}/users/{userAddress}/positions/{tokenAddress}":{"get":{"summary":"Position detail for a specific coin (WAC PnL, trade history)","tags":["V2:Positions"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"chain","required":true},{"schema":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$"},"in":"path","name":"userAddress","required":true},{"schema":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$"},"in":"path","name":"tokenAddress","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"tokenAddress":{"type":"string"},"symbol":{"type":"string"},"name":{"type":"string"},"image":{"type":"string"},"positionManager":{"type":"string"},"position":{"type":"object","properties":{"balance":{"type":"string"},"balanceFormatted":{"type":"string"},"balanceBefore":{"type":"string"},"positionSizePercentage":{"type":"string"},"positionStatus":{"type":"string","enum":["active","closed"]},"avgCostPerTokenETH":{"type":"string"},"avgCostPerTokenUSD":{"type":"string"},"currentPricePerTokenETH":{"type":"string"},"currentPricePerTokenUSD":{"type":"string"}}},"pnl":{"type":"object","properties":{"realizedPnL":{"type":"object","properties":{"eth":{"type":"string"},"usd":{"type":"string"}}},"unrealizedPnL":{"type":"object","properties":{"eth":{"type":"string"},"usd":{"type":"string"}}},"totalInvested":{"type":"object","properties":{"eth":{"type":"string"},"usd":{"type":"string"}}},"totalProceeds":{"type":"object","properties":{"eth":{"type":"string"},"usd":{"type":"string"}}},"netPnL":{"type":"object","properties":{"eth":{"type":"string"},"usd":{"type":"string"}}},"calculationMethod":{"type":"string"},"currentValueETH":{"type":"string"},"currentValueUSD":{"type":"string"},"costBasisETH":{"type":"string"},"costBasisUSD":{"type":"string"},"unrealizedPnLETH":{"type":"string"},"unrealizedPnLUSD":{"type":"string"},"percentageReturn":{"type":"string"},"isProfit":{"type":"boolean"},"transactionCount":{"type":"number"},"totalInvestedETH":{"type":"string"},"totalInvestedUSD":{"type":"string"}}},"token":{"type":"object","properties":{"marketCapETH":{"type":"string"},"marketCapUSD":{"type":"string"},"tokenPrice":{"type":"string"},"priceUSD":{"type":"string"},"totalSupply":{"type":"string"},"startingMarketCapETH":{"type":"string"},"ageSeconds":{"type":"number"},"priceChange24hPercentage":{"type":"number"},"volume24hETH":{"type":"string"},"volume24hUSD":{"type":"string"}}},"timeline":{"type":"object","properties":{"positionCreated":{"type":"number"},"positionUpdated":{"type":"number"},"tokenCreated":{"type":"number"},"positionAgeSeconds":{"type":"number"},"tokenAgeSeconds":{"type":"number"}}},"priceHistory":{"type":"array","items":{"type":"object","properties":{"timestamp":{"type":"number"},"priceETH":{"type":"string"},"priceUSD":{"type":"string"},"marketCapETH":{"type":"string"},"marketCapUSD":{"type":"string"},"volumeETH":{"type":"string"},"volumeUSD":{"type":"string"}}}},"tradeHistory":{"type":"object","properties":{"poolId":{"type":"string"},"originalHoldingPrice":{"type":"string"},"originalCostBasis":{"type":"string"},"holdingChangesCount":{"type":"number"},"holdingChanges":{"type":"array","items":{}},"buyTransactions":{"type":"number"},"sellTransactions":{"type":"number"},"poolSwapsCount":{"type":"number"},"poolSwaps":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"timestamp":{"type":"string"},"type":{"type":"string"},"ethAmount":{"type":"string"},"ethAmountFormatted":{"type":"string"},"tokenAmount":{"type":"string"},"tokenAmountFormatted":{"type":"string"},"poolFlipped":{"type":"boolean"},"amount0":{"type":"string"},"amount1":{"type":"string"},"txHash":{"type":"string"}}}},"calculationMethod":{"type":"string"}}}}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}}}}},"/v2/{chain}/users/{userAddress}/royalties/chart":{"get":{"summary":"Bucketed royalty earnings chart (7 bars)","tags":["V2:Royalties"],"parameters":[{"schema":{"type":"string","enum":["1d","7d","all"],"default":"7d"},"in":"query","name":"period","required":false,"description":"Chart period: 1d (hourly), 7d (daily), all (all-time). Always returns 7 bars."},{"schema":{"type":"string"},"in":"path","name":"chain","required":true},{"schema":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$"},"in":"path","name":"userAddress","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"period":{"type":"string"},"earningsHistory":{"type":"array","items":{"type":"object","properties":{"date":{"type":"number","description":"Unix timestamp of bucket start"},"earningsETH":{"type":"string","description":"ETH earned in this bucket (decimal)"},"earningsUSD":{"type":"string","description":"USD earned in this bucket (decimal)"}}},"description":"Always 7 bucketed data points for bar chart."}}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}}}}},"/v2/{chain}/users/{userAddress}/royalties/{tokenAddress}":{"get":{"summary":"Royalty detail for a specific coin","tags":["V2:Royalties"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"chain","required":true},{"schema":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$"},"in":"path","name":"userAddress","required":true},{"schema":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$"},"in":"path","name":"tokenAddress","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"tokenAddress":{"type":"string"},"nftContract":{"type":"string","description":"NFT collection contract address for the royalty token"},"nftTokenId":{"type":"string","description":"NFT token ID within the collection"},"symbol":{"type":"string"},"name":{"type":"string"},"image":{"type":"string"},"createdAt":{"type":"number"},"royaltyMembers":{"type":"array","items":{"type":"object","properties":{"userAddress":{"type":"string"},"feesEarnedETH":{"type":"string"},"feesEarnedUSD":{"type":"string"},"sharePercentage":{"type":"string"}}}},"fees":{"type":"object","properties":{"totalFeesETH":{"type":"string"},"totalFeesUSD":{"type":"string"},"feesTodayETH":{"type":"string"},"feesTodayUSD":{"type":"string"}}},"feeHistory":{"type":"array","items":{"type":"object","properties":{"date":{"type":"number","description":"Unix timestamp of bucket start"},"earningsETH":{"type":"string","description":"ETH earned in this bucket (decimal)"},"earningsUSD":{"type":"string","description":"USD earned in this bucket (decimal)"}}},"description":"7 daily buckets from PoolFeeDistribution (last 7 days)"},"token":{"type":"object","properties":{"priceUSD":{"type":"string"},"marketCapUSD":{"type":"string"},"volumeTodayETH":{"type":"string"},"volumeTodayUSD":{"type":"string"},"holders":{"type":"number"}}}}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}}}}},"/v2/{chain}/users/{userAddress}/royalties":{"get":{"summary":"List royalty earnings across all coins for a user","tags":["V2:Royalties"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"chain","required":true},{"schema":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$"},"in":"path","name":"userAddress","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"summary":{"type":"object","properties":{"totalEarningsETH":{"type":"string"},"totalEarningsUSD":{"type":"string"},"claimableETH":{"type":"string"},"claimableUSD":{"type":"string"},"earnings24hETH":{"type":"string"},"earnings24hUSD":{"type":"string"},"earnings24hChangePercentage":{"type":"string"},"coinsCount":{"type":"number"},"claimableSources":{"type":"array","description":"Revenue claim rows matching frontend \"Your revenue\" popover. Types: flaunch (FeeEscrow+PMs), manager (treasury managers).","items":{"type":"object","properties":{"type":{"type":"string","description":"\"flaunch\" or \"manager\""},"contracts":{"type":"array","description":"flaunch only: per-contract balances. FE calls withdrawFees on each.","items":{"type":"object","properties":{"contractAddress":{"type":"string"},"amountETH":{"type":"string"},"amountUSD":{"type":"string"}}}},"contractAddress":{"type":"string","description":"manager only: contract to call claim() on"},"managerType":{"type":"string","description":"manager only: AddressFeeSplitManager, RevenueManager, StakingManager, etc."},"amountETH":{"type":"string"},"amountUSD":{"type":"string"},"coins":{"type":"array","items":{"type":"string"},"description":"flaunch: devCoins (no manager). manager: linked coins."}}}}}},"coins":{"type":"array","items":{"type":"object","properties":{"tokenAddress":{"type":"string"},"nftContract":{"type":"string","description":"NFT collection contract address for the royalty token"},"nftTokenId":{"type":"string","description":"NFT token ID within the collection"},"symbol":{"type":"string"},"name":{"type":"string"},"image":{"type":"string"},"marketCapUSD":{"type":"string"},"priceChange24hPercentage":{"type":"number"},"feesEarnedETH":{"type":"string"},"feesEarnedUSD":{"type":"string"},"fees24hETH":{"type":"string"},"fees24hUSD":{"type":"string"},"fees24hChangePercentage":{"type":"string"},"royaltyEarners":{"type":"number","description":"Number of royalty earners (1 if no fee split, N if AddressFeeSplitManager)"}}}}}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}}}}},"/v2/{chain}/royalty/{coinAddress}/activity":{"get":{"summary":"Unified activity timeline for a royalty coin (offers, transfers, sales, mints)","tags":["V2:Royalties"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"chain","required":true},{"schema":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$"},"in":"path","name":"coinAddress","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"activity":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["offer","sold","transfer","mint"]},"status":{"type":["null","string"],"enum":["pending","fulfilled","rejected","expired","cancelled",null]},"from":{"type":"string"},"to":{"type":"string"},"amountETH":{"type":["null","string"]},"timestamp":{"type":"number"},"txHash":{"type":["null","string"]},"offerId":{"type":["null","string"]}}}}}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}}}}},"/v2/{chain}/users/{userAddress}/activity":{"get":{"summary":"Unified user activity (buys, sells, launches, claims)","tags":["V2:Activity"],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":400,"default":400},"in":"query","name":"limit","required":false},{"schema":{"type":"string"},"in":"path","name":"chain","required":true},{"schema":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$"},"in":"path","name":"userAddress","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["buy","sell","launch","claim"]},"timestamp":{"type":"number"},"txHash":{"type":"string"},"coin":{"type":"object","nullable":true,"properties":{"address":{"type":"string"},"symbol":{"type":"string"},"name":{"type":"string"},"image":{"type":"string"}}},"amountETH":{"type":"string"},"amountUSD":{"type":"string"}}}}}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}}}}},"/v2/{chain}/stats/protocol":{"get":{"summary":"Protocol-wide totals (TVC, 24h volume)","tags":["V2:Stats"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"chain","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"configs":{"type":"array","items":{"type":"object","properties":{"totalFeesUSDC":{"type":"string"},"volume24hUSD":{"type":"string"}}}}}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}}}}},"/v2/{chain}/fee-members/resolve":{"post":{"summary":"Resolve a fee member by wallet, email, twitter, or farcaster","tags":["V2:FeeMembers"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["type","value"],"properties":{"type":{"type":"string","enum":["wallet","email","twitter","farcaster"]},"value":{"type":"string","minLength":1}}}}}},"parameters":[{"schema":{"type":"string"},"in":"path","name":"chain","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"address":{"type":"string"},"displayName":{"type":["null","string"]},"avatarUrl":{"type":["null","string"]},"source":{"type":"string","enum":["wallet","ens","email","twitter","farcaster"]}}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}}}}},"/v2/{chain}/offers/{offerId}":{"get":{"summary":"Get a single offer by id","tags":["V2:Offers"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"chain","required":true},{"schema":{"type":"string"},"in":"path","name":"offerId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"coinAddress":{"type":"string"},"tokenId":{"type":"string"},"offerer":{"type":"string"},"owner":{"type":"string"},"amountETH":{"type":"string"},"expiresAt":{"type":"string"},"seaportOrder":{"type":"object","additionalProperties":true},"signature":{"type":"string"},"status":{"type":"string","enum":["pending","fulfilled","rejected","expired","cancelled"]},"txHash":{"type":["null","string"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"coinName":{"type":"string"},"coinSymbol":{"type":"string"},"coinImage":{"type":"string"}}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}}}}},"/v2/users/{address}/offers":{"get":{"summary":"List offers made and received by a user","tags":["V2:Offers"],"parameters":[{"schema":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$"},"in":"path","name":"address","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"made":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"coinAddress":{"type":"string"},"tokenId":{"type":"string"},"offerer":{"type":"string"},"owner":{"type":"string"},"amountETH":{"type":"string"},"expiresAt":{"type":"string"},"seaportOrder":{"type":"object","additionalProperties":true},"signature":{"type":"string"},"status":{"type":"string","enum":["pending","fulfilled","rejected","expired","cancelled"]},"txHash":{"type":["null","string"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"coinName":{"type":"string"},"coinSymbol":{"type":"string"},"coinImage":{"type":"string"}}}},"received":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"coinAddress":{"type":"string"},"tokenId":{"type":"string"},"offerer":{"type":"string"},"owner":{"type":"string"},"amountETH":{"type":"string"},"expiresAt":{"type":"string"},"seaportOrder":{"type":"object","additionalProperties":true},"signature":{"type":"string"},"status":{"type":"string","enum":["pending","fulfilled","rejected","expired","cancelled"]},"txHash":{"type":["null","string"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"coinName":{"type":"string"},"coinSymbol":{"type":"string"},"coinImage":{"type":"string"}}}}}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}}}}},"/v2/me":{"get":{"summary":"Current account profile, limits, and usage this month","tags":["V2:Me"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":["null","string"]},"avatarUrl":{"type":["null","string"]},"tier":{"type":"string","enum":["free","pro","enterprise","internal"]},"role":{"type":"string","enum":["user","admin"]},"status":{"type":"string","enum":["active","suspended"]},"customLimits":{"type":["null","object"],"additionalProperties":true},"limits":{"type":"object","properties":{"m":{"type":"integer","description":"Requests per calendar minute"},"h":{"type":"integer","description":"Requests per calendar hour"},"d":{"type":"integer","description":"Requests per calendar day"}},"required":["m","h","d"]},"current":{"type":"object","properties":{"minute":{"type":"object","properties":{"used":{"type":"integer"},"limit":{"type":"integer"},"resetEpochSec":{"type":"integer"}},"required":["used","limit","resetEpochSec"]},"hour":{"type":"object","properties":{"used":{"type":"integer"},"limit":{"type":"integer"},"resetEpochSec":{"type":"integer"}},"required":["used","limit","resetEpochSec"]},"day":{"type":"object","properties":{"used":{"type":"integer"},"limit":{"type":"integer"},"resetEpochSec":{"type":"integer"}},"required":["used","limit","resetEpochSec"]}},"required":["minute","hour","day"]},"usageThisMonth":{"type":"object","properties":{"from":{"type":"string","format":"date"},"to":{"type":"string","format":"date"},"totalCount":{"type":"integer"}},"required":["from","to","totalCount"]},"createdAt":{"type":"string","format":"date-time"}},"required":["id","email","tier","role","status","limits","current","usageThisMonth","createdAt"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}}}}},"/v2/me/keys":{"get":{"summary":"List my API keys (masked)","tags":["V2:Me"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"prefix":{"type":"string","description":"Display prefix — \"fl_live_\" + first 4 secret chars"},"lastUsedAt":{"type":["null","string"],"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"revokedAt":{"type":["null","string"],"format":"date-time"}},"required":["id","label","prefix","lastUsedAt","createdAt","revokedAt"]}}},"required":["data"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}}}},"post":{"summary":"Create a new API key","tags":["V2:Me"],"description":"The full key is returned ONCE in `key`. Store it immediately — subsequent reads only return the masked `prefix`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":80}},"required":["label"],"additionalProperties":false}}}},"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Full API key — displayed ONCE"},"masked":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"prefix":{"type":"string","description":"Display prefix — \"fl_live_\" + first 4 secret chars"},"lastUsedAt":{"type":["null","string"],"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"revokedAt":{"type":["null","string"],"format":"date-time"}},"required":["id","label","prefix","lastUsedAt","createdAt","revokedAt"]}},"required":["key","masked"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}}}}},"/v2/me/keys/{id}":{"delete":{"summary":"Revoke an API key","tags":["V2:Me"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"revoked":{"type":"boolean"},"id":{"type":"string"},"revokedAt":{"type":"string","format":"date-time"}},"required":["revoked","id","revokedAt"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}}}}},"/v2/me/usage":{"get":{"summary":"Account usage history","tags":["V2:Me"],"description":"Aggregates `v2_api_usage_daily` rows over the [from, to] range. `granularity=day` returns per-day buckets; `granularity=month` rolls up to calendar months (UTC).","parameters":[{"schema":{"type":"string","format":"date"},"in":"query","name":"from","required":false,"description":"Inclusive UTC start date (YYYY-MM-DD)"},{"schema":{"type":"string","format":"date"},"in":"query","name":"to","required":false,"description":"Inclusive UTC end date (YYYY-MM-DD)"},{"schema":{"type":"string","enum":["day","month"],"default":"day"},"in":"query","name":"granularity","required":false}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"from":{"type":"string","format":"date"},"to":{"type":"string","format":"date"},"granularity":{"type":"string","enum":["day","month"]},"totalCount":{"type":"integer"},"buckets":{"type":"array","items":{"type":"object","properties":{"bucket":{"type":"string","description":"YYYY-MM-DD for day, YYYY-MM for month"},"count":{"type":"integer"}},"required":["bucket","count"]}}},"required":["from","to","granularity","totalCount","buckets"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}}}}},"/v2/admin/accounts":{"get":{"summary":"List V2 accounts (admin only)","tags":["V2:Admin"],"parameters":[{"schema":{"type":"string","enum":["free","pro","enterprise","internal"]},"in":"query","name":"tier","required":false},{"schema":{"type":"string","enum":["active","suspended"]},"in":"query","name":"status","required":false},{"schema":{"type":"integer","minimum":1,"default":1},"in":"query","name":"page","required":false},{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"in":"query","name":"pageSize","required":false},{"schema":{"type":"string"},"in":"query","name":"q","required":false,"description":"Email substring filter (ILIKE)"}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":["null","string"]},"tier":{"type":"string","enum":["free","pro","enterprise","internal"]},"role":{"type":"string","enum":["user","admin"]},"status":{"type":"string","enum":["active","suspended"]},"customLimits":{"type":["null","object"],"additionalProperties":true},"createdAt":{"type":"string","format":"date-time"}},"required":["id","email","tier","role","status","createdAt"]}},"pagination":{"type":"object","properties":{"page":{"type":"integer"},"pageSize":{"type":"integer"},"totalItems":{"type":"integer"},"totalPages":{"type":"integer"}},"required":["page","pageSize","totalItems","totalPages"]}},"required":["data","pagination"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}}}}},"/v2/admin/accounts/{id}":{"get":{"summary":"Get V2 account detail + key stats + 30d usage","tags":["V2:Admin"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"account":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":["null","string"]},"tier":{"type":"string","enum":["free","pro","enterprise","internal"]},"role":{"type":"string","enum":["user","admin"]},"status":{"type":"string","enum":["active","suspended"]},"customLimits":{"type":["null","object"],"additionalProperties":true},"createdAt":{"type":"string","format":"date-time"},"avatarUrl":{"type":["null","string"]},"googleSub":{"type":"string"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","email","tier","role","status","createdAt"]},"keys":{"type":"object","properties":{"total":{"type":"integer"},"active":{"type":"integer"},"revoked":{"type":"integer"},"lastCreatedAt":{"type":["null","string"],"format":"date-time"},"lastUsedAt":{"type":["null","string"],"format":"date-time"}},"required":["total","active","revoked"]},"usageLast30d":{"type":"object","properties":{"from":{"type":"string","format":"date"},"to":{"type":"string","format":"date"},"totalCount":{"type":"integer"}},"required":["from","to","totalCount"]}},"required":["account","keys","usageLast30d"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}}}}},"/v2/admin/accounts/{id}/tier":{"patch":{"summary":"Update account tier","tags":["V2:Admin"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tier":{"type":"string","enum":["free","pro","enterprise","internal"]}},"required":["tier"],"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":["null","string"]},"tier":{"type":"string","enum":["free","pro","enterprise","internal"]},"role":{"type":"string","enum":["user","admin"]},"status":{"type":"string","enum":["active","suspended"]},"customLimits":{"type":["null","object"],"additionalProperties":true},"createdAt":{"type":"string","format":"date-time"}},"required":["id","email","tier","role","status","createdAt"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}}}}},"/v2/admin/accounts/{id}/suspend":{"patch":{"summary":"Suspend or re-activate an account","tags":["V2:Admin"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["active","suspended"]}},"required":["status"],"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":["null","string"]},"tier":{"type":"string","enum":["free","pro","enterprise","internal"]},"role":{"type":"string","enum":["user","admin"]},"status":{"type":"string","enum":["active","suspended"]},"customLimits":{"type":["null","object"],"additionalProperties":true},"createdAt":{"type":"string","format":"date-time"}},"required":["id","email","tier","role","status","createdAt"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}}}}},"/v2/admin/accounts/{id}/limits":{"patch":{"summary":"Set or clear a per-account rate-limit override","tags":["V2:Admin"],"description":"Body `customLimits` is null to clear overrides, or an object with any subset of m/h/d.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"customLimits":{"oneOf":[{"type":"null"},{"type":"object","properties":{"m":{"type":"integer","minimum":1},"h":{"type":"integer","minimum":1},"d":{"type":"integer","minimum":1}},"additionalProperties":false}]}},"required":["customLimits"],"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":["null","string"]},"tier":{"type":"string","enum":["free","pro","enterprise","internal"]},"role":{"type":"string","enum":["user","admin"]},"status":{"type":"string","enum":["active","suspended"]},"customLimits":{"type":["null","object"],"additionalProperties":true},"createdAt":{"type":"string","format":"date-time"}},"required":["id","email","tier","role","status","createdAt"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string"}},"required":["statusCode","error","code","message"],"additionalProperties":true}}}}}}}},"servers":[{"url":"/"}],"tags":[{"name":"V2:Health","description":"V2 liveness"},{"name":"V2:Docs","description":"V2 API documentation"},{"name":"V2:Coins","description":"V2 coin index / discovery"},{"name":"V2:Coin","description":"V2 per-coin reads (details, activity, holders, OHLCV, earnings)"},{"name":"V2:User","description":"V2 user identity, tooltip, balances"},{"name":"V2:Positions","description":"V2 user positions + PnL"},{"name":"V2:Royalties","description":"V2 royalties earnings + activity"},{"name":"V2:Activity","description":"V2 unified user activity feed"},{"name":"V2:Stats","description":"V2 protocol-wide stats"},{"name":"V2:FeeMembers","description":"V2 fee-member resolver"},{"name":"V2:Offers","description":"V2 offers (read-only)"},{"name":"V2:Rates","description":"V2 conversion rates"},{"name":"V2:Me","description":"V2 account profile, API keys, and usage (Google auth only)"},{"name":"V2:Admin","description":"V2 admin endpoints (Google auth + role=admin)"},{"name":"V2:WS","description":"V2 WebSocket ticket + upgrade"}],"security":[{"apiKey":[]},{"googleBearer":[]}]}