{"openapi":"3.0.0","info":{"title":"Prices API","version":"1.0.0","description":"USD prices for tokens by chain and contract address. Backed by Llama, CoinGecko, and DexScreener with KV caching."},"components":{"schemas":{},"parameters":{}},"paths":{"/":{"get":{"summary":"Health check","responses":{"200":{"description":"Worker is alive"}}}},"/evm/{chainId}/{tokenAddress}":{"get":{"summary":"Get USD price for a token","description":"Fetches USD price for a token on an EVM chain. Returns the cached value when available, otherwise queries Llama, CoinGecko, and DexScreener in order.","parameters":[{"schema":{"type":"string","description":"EVM chain ID (e.g. 1 for Ethereum, 137 for Polygon)","example":"1"},"required":true,"name":"chainId","in":"path"},{"schema":{"type":"string","description":"Token contract address (0x...). Use 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE for native gas tokens.","example":"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"},"required":true,"name":"tokenAddress","in":"path"},{"schema":{"type":"string","description":"Set to \"true\" to include provider, symbol, decimals, and cache info in the response."},"required":false,"name":"metadata","in":"query"}],"responses":{"200":{"description":"Price found"},"400":{"description":"Invalid chain ID, token address, or unsupported chain"},"404":{"description":"Price not found"}}}}}}