{"uid":"cap_7Rw0CEMfpONfYT5Ne9hTa","slug":"fathom-base-token-batch-pricer-4d5d0063","name":"Fathom Base Token Batch Pricer","description":"Batch endpoint for Base ERC-20 token prices, liquidity, confidence scores, and risk flags.","url":"https://fathom-api.mioku-fathom.workers.dev/v1/prices","method":"GET","headers":{},"bodySchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["input"],"properties":{"input":{"type":"object","required":["type","method"],"properties":{"type":{"type":"string","const":"http"},"method":{"enum":["GET"],"type":"string"},"queryParams":{"type":"object","required":["tokens"],"properties":{"chain":{"type":"string","const":"base","default":"base"},"tokens":{"type":"string","examples":["0x940181a94A35A4569E4529A3CDfB74e38FD98631,0x4200000000000000000000000000000000000006"],"description":"Comma-separated list of 1 to 50 Base ERC-20 token addresses"}}}},"additionalProperties":false},"output":{"type":"object","required":["type"],"properties":{"type":{"type":"string"},"example":{"type":"object","required":["chain","count","priced","failed","results"],"properties":{"chain":{"type":"string"},"count":{"type":"number"},"failed":{"type":"number"},"priced":{"type":"number"},"results":{"type":"array","items":{"type":"object","required":["token","chain","status"],"properties":{"twap":{"type":"object","required":["price_usd","window_seconds","spot_deviation_bps"],"properties":{"price_usd":{"type":["number","null"]},"window_seconds":{"type":["number","null"],"description":"The window actually averaged over, which may differ per DEX."},"spot_deviation_bps":{"type":["number","null"],"description":"How far spot sits from the average, in basis points."}},"description":"Time-weighted average price from the main pool's own oracle. Null when the pool cannot answer - commonly a fresh pool whose observation cardinality is still 1."},"chain":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}},"flags":{"type":"array","items":{"type":"string"},"description":"Risk markers, in two kinds. Measurements about the token: `thin_liquidity`, `no_exit_liquidity` (the largest advertised sale cannot be filled), `possible_manipulation`, `single_pool`, `stale`, `unsellable`. Limits of what could be established: `twap_unavailable`, `freshness_unchecked`, `sellability_unchecked`, `depth_unavailable`, `liquidity_unmeasured`, `low_measurement_coverage` (under half the confidence model was measured), `no_measurable_signal` (none of it was), `incomplete_pool_coverage` (most discovered pools could not be read, so no verdict about the market is offered), `incomplete_venue_coverage` (one or more DEXes could not be searched, so pools may be missing entirely), `incomplete_quote_coverage` (pools quoted in another asset could not be converted to USD, so the deepest venue may be missing), `exit_liquidity_unverified` (exit was not established rather than found absent), `hardcoded_numeraire` (USDC, whose value is defined rather than measured). Never infer a token is bad from the second kind."},"label":{"enum":["reliable","thin / volatile","unreliable"],"type":"string"},"token":{"type":"string"},"status":{"enum":["ok","not_found","no_liquidity","rpc_error","unpriceable","stale_anchor","unknown_decimals"],"type":"string"},"symbol":{"type":"string"},"main_pool":{"type":"object","required":["dex","address","price_usd"],"properties":{"dex":{"type":"string"},"fee":{"type":"number"},"address":{"type":"string"},"price_usd":{"type":"number"},"liquidity_usd":{"type":"number"}}},"price_usd":{"type":"number"},"confidence":{"type":"number","maximum":100,"minimum":0,"description":"How much this price can be trusted, 0-100. See `flags` for the reasons behind a low score."},"updated_at":{"type":"string","format":"date-time"},"sell_quotes":{"type":"array","items":{"type":"object","required":["size_usd","proceeds_usd","execution_price_usd","price_impact_bps"],"properties":{"size_usd":{"type":"number"},"proceeds_usd":{"type":["number","null"]},"price_impact_bps":{"type":["number","null"]},"execution_price_usd":{"type":["number","null"]}}},"description":"What selling this notional actually returns on the main pool, fees and slippage included. Null fields mean the pool's curve needs a quoter we do not call yet."},"source_count":{"type":"number","description":"Independent pools deep enough to count as a price source. 1 means single-venue."},"liquidity_usd":{"type":["number","null"],"description":"Parked liquidity in the main pool. Null for concentrated-liquidity pools, where the on-chain figure is an active-range parameter rather than a balance - use sell_quotes there."},"depth_1pct_usd":{"type":["number","null"],"description":"Notional that moves the main pool's marginal price by 1%."},"depth_5pct_usd":{"type":["number","null"],"description":"Notional that moves the main pool's marginal price by 5%."},"measured_weight":{"type":"number","maximum":1,"minimum":0,"description":"Share of the confidence model actually backed by a measurement, 0-1. `confidence` is computed only over the components that were measured, so this says how much evidence stands behind it: 1.0 is the whole model, 0.35 is a score derived from barely a third of it. Below 0.5 the response cannot be labelled reliable and carries `low_measurement_coverage`."},"price_dispersion_bps":{"type":["number","null"],"description":"Spread between independent sources in basis points; null when there are fewer than 2 sources."},"confidence_components":{"type":"object","properties":{"maturity":{"type":"object","required":["score","weight","effective_weight"],"properties":{"score":{"type":["number","null"],"maximum":1,"minimum":0},"weight":{"type":"number"},"effective_weight":{"type":"number"}}},"liquidity":{"type":"object","required":["score","weight","effective_weight"],"properties":{"score":{"type":["number","null"],"maximum":1,"minimum":0},"weight":{"type":"number"},"effective_weight":{"type":"number"}}},"volatility":{"type":"object","required":["score","weight","effective_weight"],"properties":{"score":{"type":["number","null"],"maximum":1,"minimum":0},"weight":{"type":"number"},"effective_weight":{"type":"number"}}},"twap_deviation":{"type":"object","required":["score","weight","effective_weight"],"properties":{"score":{"type":["number","null"],"maximum":1,"minimum":0},"weight":{"type":"number"},"effective_weight":{"type":"number"}}},"source_agreement":{"type":"object","required":["score","weight","effective_weight"],"properties":{"score":{"type":["number","null"],"maximum":1,"minimum":0},"weight":{"type":"number"},"effective_weight":{"type":"number"}}},"execution_quality":{"type":"object","required":["score","weight","effective_weight"],"properties":{"score":{"type":["number","null"],"maximum":1,"minimum":0},"weight":{"type":"number"},"effective_weight":{"type":"number"}}}},"description":"Per-component breakdown of `confidence`. A component with score null was not measured and its weight was redistributed across the ones that were."}}}}}}}}}},"responseSchema":null,"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.003","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"probe","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.003/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.003","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.003","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_Xz31NpCuNIrcoONCHf1HH","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.003","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Returns price, liquidity, confidence score, risk flags, and main pool data for up to 50 Base ERC-20 tokens in a single request","exampleAgentPrompt":"Can you get me current prices, liquidity, confidence scores, and risk flags for these Base tokens: 0x940181a94A35A4569E4529A3CDfB74e38FD98631 and 0x4200000000000000000000000000000000000006?","exampleUseCases":null,"resultDescription":"An array of per-token results including price_usd, price_low, price_high, twap_5m, liquidity_usd, confidence score, risk flags, token symbol, label, main pool details (DEX name, pool address, liquidity, fee tier, price), updated_at timestamp, and a status field indicating ok/not_found/no_liquidity/rpc_error/unpriceable. Also returns aggregate counts (total, priced, failed).","failureModes":["Token not found on Base: status=not_found with error code and message","No liquidity available for token: status=no_liquidity","RPC node error during lookup: status=rpc_error","Token cannot be priced due to data gaps: status=unpriceable","Requesting more than 50 tokens returns a validation error","Missing required tokens query parameter returns error","Payment not fulfilled (x402 payment required)"],"whenToPreferThis":"Use this endpoint when you need to price multiple Base chain ERC-20 tokens at once (up to 50) and want enriched DeFi data including liquidity depth, confidence scoring, risk flags, and main pool identification — particularly when building DeFi dashboards, portfolio trackers, token screeners, or risk assessment tools on Base.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-09-15T00:37:17.910Z","isFirstParty":false}