{"openapi":"3.1.0","info":{"title":"momentum-score","version":"2.0.0","x-deprecations":"API v2: enum values are canonical English. Every `<field>_en` mirror is deprecated (identical to the field, removal planned in v3). Add ?lang=da for the previous Danish values (v1 format with _en mirrors). news_sentiment/social level 'neutral' without data is now 'no_data' (old value in legacy_level).","description":"Momentum Score API for Base tokens: 0-100 score from 24 h volume, volume vs liquidity and 24 h price change, from DEX data and on-chain pool reads. $0.02 per call via x402 (USDC on Base or Polygon). Not investment advice.","x-guidance":"Momentum score for an ERC-20 on Base. Input: address (0x contract). Output: momentum 0-100 (null for stablecoins), direction up/down/flat with a one-line explanation, confidence low/medium/high, 24 h volume (adaptive window), named liquidity, volume vs liquidity, 24 h price change and a social line (no_data when no source). ?lang=da for Danish values. Call before an agent buys or lists a Base token. Not investment advice.","x-related":[{"name":"token-verdict","description":"One-call verdict: all 4 checks + English conclusion (Base, $0.05)","url":"https://token-verdict.restockalarm.workers.dev/"},{"name":"token-risk","description":"Token risk score (Base)","url":"https://token-risk.restockalarm.workers.dev/"},{"name":"rug-check","description":"Rug-pull detector (Base)","url":"https://rug-check.restockalarm.workers.dev/"},{"name":"holder-check","description":"Holder analysis (Base)","url":"https://holder-check.restockalarm.workers.dev/"},{"name":"token-safety","description":"Token Safety suite (all Base token APIs incl. one-call verdict)","url":"https://product-katalog.restockalarm.workers.dev/token-safety"},{"name":"token-safety-mcp","description":"Remote MCP server with the same tools ($0.02, token_verdict $0.05 via x402 for MCP)","url":"https://token-safety-mcp.restockalarm.workers.dev/mcp"}],"contact":{"name":"Space Command Kits","email":"spacecommand+circle@mail.grokbot.com","url":"https://momentum-score.restockalarm.workers.dev/"}},"externalDocs":{"description":"Token Safety suite — all Base token APIs incl. one-call verdict","url":"https://product-katalog.restockalarm.workers.dev/token-safety"},"servers":[{"url":"https://momentum-score.restockalarm.workers.dev"}],"paths":{"/v1/momentum":{"get":{"operationId":"getV1Momentum","summary":"Momentum score for an ERC-20 token on Base: 0-100 from 24 h volume, volume vs liquidity and 24 h price change, with direction up/down/flat and a one-line explanation","description":"Momentum score for an ERC-20 token on Base: 0-100 from 24 h volume, volume vs liquidity and 24 h price change, with direction up/down/flat and a one-line explanation. $0.02 USDC per call via x402 (Base or Polygon), or 4 credits per call with header X-API-Key (card credit packs).","x-details":"Method: momentum 0-100 = 0.6 × volume component + 0.4 × price component (social never scored). Volume: log-scale of 24 h USD volume (0 at $0, ~50 at $100k, 100 at $10M+) plus ±15 from volume/liquidity. Price: 50 = flat; ±2.5 pts per 1% over the window, scaled by sqrt(hours/24). Adaptive swap window: start 20 min; if <30 valued swaps expand to 2 h, then 6 h (parallel eth_getLogs chunks). confidence: high = aggregator volume used, OR ≥100 swaps in ≤20 min, OR ≥50 swaps in ≤2 h; medium = ≥30 swaps in ≤6 h, OR ≥10 swaps in ≤2 h; low = otherwise (incl. 0 swaps or only a long thin window). Stablecoins (known Base list or mid-price within ±2% of $1): momentum=null with note — score is not meaningful. Higher score = stronger upward momentum. Not a prediction.","x-api-key-credits":4,"x-guidance":"Momentum score for an ERC-20 on Base. Input: address (0x contract). Output: momentum 0-100 (null for stablecoins), direction up/down/flat with a one-line explanation, confidence low/medium/high, 24 h volume (adaptive window), named liquidity, volume vs liquidity, 24 h price change and a social line (no_data when no source). ?lang=da for Danish values. Call before an agent buys or lists a Base token. Not investment advice.","tags":["momentum-score"],"parameters":[{"name":"address","in":"query","required":false,"description":"ERC-20 contract address on Base (0x + 40 hex). If omitted, the AERO example is returned with example=true; an invalid address is 400.","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"}},{"name":"lang","in":"query","required":false,"description":"Optional. Output language for enum values: en (default, canonical) or da (previous Danish values + deprecated *_en mirrors)","schema":{"type":"string","enum":["en","da"],"default":"en"}}],"x-payment-info":{"price":{"mode":"fixed","currency":"USDC","amount":"0.020000"},"protocols":[{"x402":{}}],"networks":["eip155:8453","eip155:137"],"payTo":"0x7B97303d62517eA9E26D1E1b199Eac42a487F430"},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["token","momentum","direction","momentum_explanation","confidence","components","signals_measured_list","method","sources","cached","disclaimer"],"properties":{"api_version":{"type":"string"},"lang":{"type":"string"},"deprecated":{"type":"string"},"liquidity":{"type":["object","null"],"description":"Canonical liquidity (same in every token endpoint)"},"momentum":{"type":["number","null"],"minimum":0,"maximum":100,"description":"null for stablecoins"},"direction":{"type":"string","enum":["up","down","flat","no_data"],"description":"Price direction over price_change_window (flat if |change| < 1%). Momentum measures activity; direction tells which way the price moved. ?lang=da: op/ned/flad/ingen data"},"momentum_explanation":{"type":"string"},"confidence":{"type":"string","enum":["low","medium","high"]},"confidence_en":{"type":"string","deprecated":true},"components":{"type":"object","properties":{"volume_24h_usd":{"type":["number","null"]},"swaps_in_window":{"type":["integer","null"]},"swaps_in_window_note":{"type":"string"},"volume_vs_liquidity":{"type":["number","null"]},"pooled_all_pools_usd":{"type":["number","null"]},"liquidity_usd":{"type":["number","null"],"deprecated":true,"description":"Deprecated: same as pooled_all_pools_usd"},"price_change_24h_pct":{"type":["number","null"]},"price_change_window":{"type":["string","null"]},"social":{"type":"object","properties":{"level":{"type":"string","enum":["positive","neutral","negative","no_data"]},"legacy_level":{"type":"string","deprecated":true},"sentence":{"type":"string"},"source":{"type":["string","null"]}}}}},"signals_measured_list":{"type":"array","items":{"type":"string"}},"method":{"type":"string"},"sources":{"type":"array","items":{"type":"string"}},"cached":{"type":"boolean"},"disclaimer":{"type":"string"}}},"example":{"address":"0x940181a94a35a4569e4529a3cdfb74e38fd98631","chain":"base","token":{"name":"Aerodrome","symbol":"AERO","is_stablecoin":false},"liquidity":{"pooled_all_pools_usd":49750000,"top_pool_liquidity_usd":35190000,"top_pool":{"address":"0x6cdcb1c4a4d1c3c6d054b27ac5b77e89eafb971d","name":"aerodrome: AERO-USDC"},"pools_counted":30,"source":"dexscreener"},"momentum":77,"direction":"down","direction_basis":"price_change_24h_pct over 24h (flat if |change| < 1%)","momentum_explanation":"momentum 77 = 0.6 × volume (98: $17.8M 24 h) + 0.4 × price (45: price -1.96% over 24h); direction down: high activity while the price falls, so a high score is not a buy signal","confidence":"high","components":{"volume_24h_usd":17800000,"swaps_in_window":null,"swaps_in_window_note":"not counted: volume_24h_usd came from an aggregator (DexScreener/GeckoTerminal h24), so no swap events were read","volume_vs_liquidity":0.36,"pooled_all_pools_usd":49750000,"liquidity_source":"dexscreener","price_change_24h_pct":-1.96,"price_change_window":"24h","social":{"level":"no_data","measured":false,"sentence":"No social/news data source is connected; nothing is inferred.","source":null}},"signals_measured_list":["volume_24h_usd","volume_vs_liquidity","price_change_24h_pct"],"method":"…","sources":["https://api.dexscreener.com/…"],"cached":false,"disclaimer":"Not investment advice. Momentum is computed from on-chain pool data and public DEX endpoints only; it says nothing about whether a token is safe to buy."}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment Required (x402)"},"404":{"description":"No contract at this address on Base"},"422":{"description":"Contract has no token or market data"},"503":{"description":"Core fields (24 h volume, 24 h price change) could not be measured right now. Header Retry-After (s). Not charged: x402 is not settled and API-key credits are refunded."}}}}}}