Skip to content

Add x402 Crypto Intelligence API v1.0.0#2649

Open
faisalnugroho wants to merge 1 commit into
APIs-guru:mainfrom
faisalnugroho:main
Open

Add x402 Crypto Intelligence API v1.0.0#2649
faisalnugroho wants to merge 1 commit into
APIs-guru:mainfrom
faisalnugroho:main

Conversation

@faisalnugroho

Copy link
Copy Markdown

Description

Add x402 Crypto Intelligence API to the OpenAPI directory.

API Details

  • Name: x402 Crypto Intelligence API
  • URL: http://43.157.206.248:4020
  • Version: 1.0.0 (v3.0.0 internal)
  • Description: AI agent crypto data API — pay per request in USDC on Base via x402 protocol

What it does

30+ endpoints covering crypto market data, DEX pairs, DeFi analytics, wallet tracking, and whale alerts. Built specifically for AI agents that need crypto data — pays per request in USDC micropayments instead of using API keys.

Source

AI agent crypto data API — pay per request in USDC on Base via x402 protocol. 30+ endpoints covering prices, DEX pairs, DeFi analytics, wallet tracking, and whale alerts.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a new OpenAPI 3.1.0 specification for the x402 Crypto Intelligence API, defining endpoints for DEX data, DeFi protocols, wallet portfolios, whale alerts, and admin dashboards. The review feedback highlights several key improvements: adding a servers property to specify the base URL for interactive tools, defining proper response schemas instead of empty objects for successful responses, and securing the exposed /admin and /admin/api/stats endpoints by defining appropriate security requirements.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

@@ -0,0 +1 @@
{"openapi":"3.1.0","info":{"title":"x402 Crypto Intelligence API","description":"AI agent crypto data API — pay per request in USDC on Base. No API keys needed.","version":"3.0.0"},"paths":{"/api/v1/dex/token/{chain}/{address}":{"get":{"tags":["v2"],"summary":"Dex Token Pairs","description":"Get all DEX trading pairs for a token across all DEXes.","operationId":"dex_token_pairs_api_v1_dex_token__chain___address__get","parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string","title":"Chain"}},{"name":"address","in":"path","required":true,"schema":{"type":"string","title":"Address"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/dex/pair/{chain}/{pair_id}":{"get":{"tags":["v2"],"summary":"Dex Pair","description":"Get detailed info for a specific DEX pair.","operationId":"dex_pair_api_v1_dex_pair__chain___pair_id__get","parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string","title":"Chain"}},{"name":"pair_id","in":"path","required":true,"schema":{"type":"string","title":"Pair Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/dex/search":{"get":{"tags":["v2"],"summary":"Dex Search","description":"Search for tokens on DEX by name, symbol, or address.","operationId":"dex_search_api_v1_dex_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/dex/trending":{"get":{"tags":["v2"],"summary":"Dex Trending","description":"Get trending tokens on DEX (recently updated profiles).","operationId":"dex_trending_api_v1_dex_trending_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/dex/boosted":{"get":{"tags":["v2"],"summary":"Dex Boosted","description":"Get top boosted tokens on DEX (most active promotions).","operationId":"dex_boosted_api_v1_dex_boosted_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/protocols":{"get":{"tags":["v2"],"summary":"All Protocols","description":"Get all DeFi protocols with TVL, chains, and category.","operationId":"all_protocols_api_v1_protocols_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/tvl/{protocol}":{"get":{"tags":["v2"],"summary":"Protocol Tvl","description":"Get TVL history for a specific protocol.","operationId":"protocol_tvl_api_v1_tvl__protocol__get","parameters":[{"name":"protocol","in":"path","required":true,"schema":{"type":"string","title":"Protocol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/chains":{"get":{"tags":["v2"],"summary":"All Chains","description":"Get all supported blockchain chains with TVL data.","operationId":"all_chains_api_v1_chains_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/wallet/{chain}/{address}":{"get":{"tags":["v2"],"summary":"Wallet Portfolio","description":"Get native balance for an EVM wallet address.","operationId":"wallet_portfolio_api_v1_wallet__chain___address__get","parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string","title":"Chain"}},{"name":"address","in":"path","required":true,"schema":{"type":"string","title":"Address"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/gas/multi":{"get":{"tags":["v2"],"summary":"Multi Chain Gas","description":"Get gas prices across multiple chains via public RPCs.","operationId":"multi_chain_gas_api_v1_gas_multi_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/whale/ethereum":{"get":{"tags":["premium"],"summary":"Whale Alerts Eth","description":"Get recent large ETH transfers (whale movements) via Etherscan.","operationId":"whale_alerts_eth_api_v1_whale_ethereum_get","parameters":[{"name":"min_usd","in":"query","required":false,"schema":{"type":"number","minimum":1000,"default":100000,"title":"Min Usd"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/whale/solana":{"get":{"tags":["premium"],"summary":"Whale Alerts Sol","description":"Get recent large SOL transfers via Solana public API.","operationId":"whale_alerts_sol_api_v1_whale_solana_get","parameters":[{"name":"min_usd","in":"query","required":false,"schema":{"type":"number","minimum":1000,"default":50000,"title":"Min Usd"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/sentiment":{"get":{"tags":["premium"],"summary":"Market Sentiment","description":"Get comprehensive market sentiment data.","operationId":"market_sentiment_api_v1_sentiment_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/screener":{"get":{"tags":["premium"],"summary":"Token Screener","description":"Screen tokens by market cap, volume, and price change criteria.","operationId":"token_screener_api_v1_screener_get","parameters":[{"name":"min_mcap","in":"query","required":false,"schema":{"type":"number","description":"Min market cap USD","default":1000000,"title":"Min Mcap"},"description":"Min market cap USD"},{"name":"max_mcap","in":"query","required":false,"schema":{"type":"number","description":"Max market cap USD","default":10000000000,"title":"Max Mcap"},"description":"Max market cap USD"},{"name":"min_volume","in":"query","required":false,"schema":{"type":"number","description":"Min 24h volume USD","default":100000,"title":"Min Volume"},"description":"Min 24h volume USD"},{"name":"sort_by","in":"query","required":false,"schema":{"type":"string","description":"Sort: volume_desc, mcap_desc, change_desc","default":"volume_desc","title":"Sort By"},"description":"Sort: volume_desc, mcap_desc, change_desc"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/portfolio":{"get":{"tags":["premium"],"summary":"Portfolio Tracker","description":"Track portfolio across multiple wallets and chains.","operationId":"portfolio_tracker_api_v1_portfolio_get","parameters":[{"name":"wallets","in":"query","required":true,"schema":{"type":"string","description":"Comma-separated chain:address pairs (e.g. ethereum:0xabc,base:0xdef)","title":"Wallets"},"description":"Comma-separated chain:address pairs (e.g. ethereum:0xabc,base:0xdef)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/movers":{"get":{"tags":["premium"],"summary":"Top Movers","description":"Get top gainers and losers in the last 24 hours.","operationId":"top_movers_api_v1_movers_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":25,"default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/prices":{"get":{"tags":["premium"],"summary":"Batch Prices","description":"Get prices for multiple tokens in a single call (efficient batch).","operationId":"batch_prices_api_v1_prices_get","parameters":[{"name":"ids","in":"query","required":true,"schema":{"type":"string","description":"Comma-separated coin IDs (e.g. bitcoin,ethereum,solana)","title":"Ids"},"description":"Comma-separated coin IDs (e.g. bitcoin,ethereum,solana)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/wallet/{chain}/{address}/transactions":{"get":{"tags":["etherscan"],"summary":"Wallet Transactions","description":"Get normal transaction history for a wallet.\nReturns last `offset` transactions (default 20).","operationId":"wallet_transactions_api_v1_wallet__chain___address__transactions_get","parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string","title":"Chain"}},{"name":"address","in":"path","required":true,"schema":{"type":"string","title":"Address"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/wallet/{chain}/{address}/tokens":{"get":{"tags":["etherscan"],"summary":"Wallet Token Transfers","description":"Get ERC-20 token transfer history for a wallet.\nShows tokens received/sent.","operationId":"wallet_token_transfers_api_v1_wallet__chain___address__tokens_get","parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string","title":"Chain"}},{"name":"address","in":"path","required":true,"schema":{"type":"string","title":"Address"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/wallet/{chain}/{address}/internal":{"get":{"tags":["etherscan"],"summary":"Wallet Internal Txs","description":"Get internal transactions (contract calls) for a wallet.","operationId":"wallet_internal_txs_api_v1_wallet__chain___address__internal_get","parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string","title":"Chain"}},{"name":"address","in":"path","required":true,"schema":{"type":"string","title":"Address"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/contract/{chain}/{address}/abi":{"get":{"tags":["etherscan"],"summary":"Contract Abi","description":"Get smart contract ABI and source code.","operationId":"contract_abi_api_v1_contract__chain___address__abi_get","parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string","title":"Chain"}},{"name":"address","in":"path","required":true,"schema":{"type":"string","title":"Address"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/token/{chain}/address/{address}/info":{"get":{"tags":["etherscan"],"summary":"Token Info","description":"Get ERC-20 token info (name, symbol, total supply, holders estimate).","operationId":"token_info_api_v1_token__chain__address__address__info_get","parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string","title":"Chain"}},{"name":"address","in":"path","required":true,"schema":{"type":"string","title":"Address"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/gas/{chain}":{"get":{"tags":["etherscan"],"summary":"Etherscan Gas","description":"Get gas prices from Etherscan Gas Tracker (more accurate than public RPC).\nFalls back to public RPC for chains without free Etherscan gas access.","operationId":"etherscan_gas_api_v1_gas__chain__get","parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string","title":"Chain"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/block/{chain}/latest":{"get":{"tags":["etherscan"],"summary":"Latest Block","description":"Get latest block number and timestamp.","operationId":"latest_block_api_v1_block__chain__latest_get","parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string","title":"Chain"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/":{"get":{"summary":"Root","description":"Professional landing page.","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health":{"get":{"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/robots.txt":{"get":{"summary":"Robots Txt","operationId":"robots_txt_robots_txt_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/.well-known/shadowfeed-feeds.json":{"get":{"summary":"Shadowfeed Manifest","operationId":"shadowfeed_manifest__well_known_shadowfeed_feeds_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/shadowfeed/verify":{"get":{"summary":"Shadowfeed Verify","operationId":"shadowfeed_verify_shadowfeed_verify_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/favicon.ico":{"get":{"summary":"Favicon","operationId":"favicon_favicon_ico_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/free/health":{"get":{"summary":"Free Health","description":"Free: API health check with stats.","operationId":"free_health_api_v1_free_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/free/fear-greed":{"get":{"summary":"Free Fear Greed","description":"Free: Current Fear & Greed Index (limited).","operationId":"free_fear_greed_api_v1_free_fear_greed_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/free/gas":{"get":{"summary":"Free Gas","description":"Free: Basic gas prices (ETH only).","operationId":"free_gas_api_v1_free_gas_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/price/{coin_id}":{"get":{"summary":"Get Price","operationId":"get_price_api_v1_price__coin_id__get","parameters":[{"name":"coin_id","in":"path","required":true,"schema":{"type":"string","title":"Coin Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/trending":{"get":{"summary":"Get Trending","operationId":"get_trending_api_v1_trending_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/market":{"get":{"summary":"Get Market Overview","operationId":"get_market_overview_api_v1_market_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/top-coins":{"get":{"summary":"Get Top Coins","operationId":"get_top_coins_api_v1_top_coins_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/search":{"get":{"summary":"Search Coins","operationId":"search_coins_api_v1_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/defi":{"get":{"summary":"Get Defi","operationId":"get_defi_api_v1_defi_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/fear-greed":{"get":{"summary":"Get Fear Greed","operationId":"get_fear_greed_api_v1_fear_greed_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/gas":{"get":{"summary":"Get Gas","operationId":"get_gas_api_v1_gas_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/admin":{"get":{"summary":"Admin Dashboard","operationId":"admin_dashboard_admin_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/admin/api/stats":{"get":{"summary":"Admin Stats V2","operationId":"admin_stats_v2_admin_api_stats_get","parameters":[{"name":"hours","in":"query","required":false,"schema":{"type":"integer","maximum":168,"default":24,"title":"Hours"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}} No newline at end of file

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

The OpenAPI specification is missing the servers property. Without it, interactive documentation tools (like Swagger UI or ReDoc) and client SDK generators will not know which base URL to send requests to.\n\nBased on the pull request description, please add the servers definition to the root of the OpenAPI document:\n\njson\n"servers": [\n {\n "url": "http://43.157.206.248:4020",\n "description": "Production server"\n }\n]\n

@@ -0,0 +1 @@
{"openapi":"3.1.0","info":{"title":"x402 Crypto Intelligence API","description":"AI agent crypto data API — pay per request in USDC on Base. No API keys needed.","version":"3.0.0"},"paths":{"/api/v1/dex/token/{chain}/{address}":{"get":{"tags":["v2"],"summary":"Dex Token Pairs","description":"Get all DEX trading pairs for a token across all DEXes.","operationId":"dex_token_pairs_api_v1_dex_token__chain___address__get","parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string","title":"Chain"}},{"name":"address","in":"path","required":true,"schema":{"type":"string","title":"Address"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/dex/pair/{chain}/{pair_id}":{"get":{"tags":["v2"],"summary":"Dex Pair","description":"Get detailed info for a specific DEX pair.","operationId":"dex_pair_api_v1_dex_pair__chain___pair_id__get","parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string","title":"Chain"}},{"name":"pair_id","in":"path","required":true,"schema":{"type":"string","title":"Pair Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/dex/search":{"get":{"tags":["v2"],"summary":"Dex Search","description":"Search for tokens on DEX by name, symbol, or address.","operationId":"dex_search_api_v1_dex_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/dex/trending":{"get":{"tags":["v2"],"summary":"Dex Trending","description":"Get trending tokens on DEX (recently updated profiles).","operationId":"dex_trending_api_v1_dex_trending_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/dex/boosted":{"get":{"tags":["v2"],"summary":"Dex Boosted","description":"Get top boosted tokens on DEX (most active promotions).","operationId":"dex_boosted_api_v1_dex_boosted_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/protocols":{"get":{"tags":["v2"],"summary":"All Protocols","description":"Get all DeFi protocols with TVL, chains, and category.","operationId":"all_protocols_api_v1_protocols_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/tvl/{protocol}":{"get":{"tags":["v2"],"summary":"Protocol Tvl","description":"Get TVL history for a specific protocol.","operationId":"protocol_tvl_api_v1_tvl__protocol__get","parameters":[{"name":"protocol","in":"path","required":true,"schema":{"type":"string","title":"Protocol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/chains":{"get":{"tags":["v2"],"summary":"All Chains","description":"Get all supported blockchain chains with TVL data.","operationId":"all_chains_api_v1_chains_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/wallet/{chain}/{address}":{"get":{"tags":["v2"],"summary":"Wallet Portfolio","description":"Get native balance for an EVM wallet address.","operationId":"wallet_portfolio_api_v1_wallet__chain___address__get","parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string","title":"Chain"}},{"name":"address","in":"path","required":true,"schema":{"type":"string","title":"Address"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/gas/multi":{"get":{"tags":["v2"],"summary":"Multi Chain Gas","description":"Get gas prices across multiple chains via public RPCs.","operationId":"multi_chain_gas_api_v1_gas_multi_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/whale/ethereum":{"get":{"tags":["premium"],"summary":"Whale Alerts Eth","description":"Get recent large ETH transfers (whale movements) via Etherscan.","operationId":"whale_alerts_eth_api_v1_whale_ethereum_get","parameters":[{"name":"min_usd","in":"query","required":false,"schema":{"type":"number","minimum":1000,"default":100000,"title":"Min Usd"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/whale/solana":{"get":{"tags":["premium"],"summary":"Whale Alerts Sol","description":"Get recent large SOL transfers via Solana public API.","operationId":"whale_alerts_sol_api_v1_whale_solana_get","parameters":[{"name":"min_usd","in":"query","required":false,"schema":{"type":"number","minimum":1000,"default":50000,"title":"Min Usd"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/sentiment":{"get":{"tags":["premium"],"summary":"Market Sentiment","description":"Get comprehensive market sentiment data.","operationId":"market_sentiment_api_v1_sentiment_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/screener":{"get":{"tags":["premium"],"summary":"Token Screener","description":"Screen tokens by market cap, volume, and price change criteria.","operationId":"token_screener_api_v1_screener_get","parameters":[{"name":"min_mcap","in":"query","required":false,"schema":{"type":"number","description":"Min market cap USD","default":1000000,"title":"Min Mcap"},"description":"Min market cap USD"},{"name":"max_mcap","in":"query","required":false,"schema":{"type":"number","description":"Max market cap USD","default":10000000000,"title":"Max Mcap"},"description":"Max market cap USD"},{"name":"min_volume","in":"query","required":false,"schema":{"type":"number","description":"Min 24h volume USD","default":100000,"title":"Min Volume"},"description":"Min 24h volume USD"},{"name":"sort_by","in":"query","required":false,"schema":{"type":"string","description":"Sort: volume_desc, mcap_desc, change_desc","default":"volume_desc","title":"Sort By"},"description":"Sort: volume_desc, mcap_desc, change_desc"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/portfolio":{"get":{"tags":["premium"],"summary":"Portfolio Tracker","description":"Track portfolio across multiple wallets and chains.","operationId":"portfolio_tracker_api_v1_portfolio_get","parameters":[{"name":"wallets","in":"query","required":true,"schema":{"type":"string","description":"Comma-separated chain:address pairs (e.g. ethereum:0xabc,base:0xdef)","title":"Wallets"},"description":"Comma-separated chain:address pairs (e.g. ethereum:0xabc,base:0xdef)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/movers":{"get":{"tags":["premium"],"summary":"Top Movers","description":"Get top gainers and losers in the last 24 hours.","operationId":"top_movers_api_v1_movers_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":25,"default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/prices":{"get":{"tags":["premium"],"summary":"Batch Prices","description":"Get prices for multiple tokens in a single call (efficient batch).","operationId":"batch_prices_api_v1_prices_get","parameters":[{"name":"ids","in":"query","required":true,"schema":{"type":"string","description":"Comma-separated coin IDs (e.g. bitcoin,ethereum,solana)","title":"Ids"},"description":"Comma-separated coin IDs (e.g. bitcoin,ethereum,solana)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/wallet/{chain}/{address}/transactions":{"get":{"tags":["etherscan"],"summary":"Wallet Transactions","description":"Get normal transaction history for a wallet.\nReturns last `offset` transactions (default 20).","operationId":"wallet_transactions_api_v1_wallet__chain___address__transactions_get","parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string","title":"Chain"}},{"name":"address","in":"path","required":true,"schema":{"type":"string","title":"Address"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/wallet/{chain}/{address}/tokens":{"get":{"tags":["etherscan"],"summary":"Wallet Token Transfers","description":"Get ERC-20 token transfer history for a wallet.\nShows tokens received/sent.","operationId":"wallet_token_transfers_api_v1_wallet__chain___address__tokens_get","parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string","title":"Chain"}},{"name":"address","in":"path","required":true,"schema":{"type":"string","title":"Address"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/wallet/{chain}/{address}/internal":{"get":{"tags":["etherscan"],"summary":"Wallet Internal Txs","description":"Get internal transactions (contract calls) for a wallet.","operationId":"wallet_internal_txs_api_v1_wallet__chain___address__internal_get","parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string","title":"Chain"}},{"name":"address","in":"path","required":true,"schema":{"type":"string","title":"Address"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/contract/{chain}/{address}/abi":{"get":{"tags":["etherscan"],"summary":"Contract Abi","description":"Get smart contract ABI and source code.","operationId":"contract_abi_api_v1_contract__chain___address__abi_get","parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string","title":"Chain"}},{"name":"address","in":"path","required":true,"schema":{"type":"string","title":"Address"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/token/{chain}/address/{address}/info":{"get":{"tags":["etherscan"],"summary":"Token Info","description":"Get ERC-20 token info (name, symbol, total supply, holders estimate).","operationId":"token_info_api_v1_token__chain__address__address__info_get","parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string","title":"Chain"}},{"name":"address","in":"path","required":true,"schema":{"type":"string","title":"Address"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/gas/{chain}":{"get":{"tags":["etherscan"],"summary":"Etherscan Gas","description":"Get gas prices from Etherscan Gas Tracker (more accurate than public RPC).\nFalls back to public RPC for chains without free Etherscan gas access.","operationId":"etherscan_gas_api_v1_gas__chain__get","parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string","title":"Chain"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/block/{chain}/latest":{"get":{"tags":["etherscan"],"summary":"Latest Block","description":"Get latest block number and timestamp.","operationId":"latest_block_api_v1_block__chain__latest_get","parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string","title":"Chain"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/":{"get":{"summary":"Root","description":"Professional landing page.","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health":{"get":{"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/robots.txt":{"get":{"summary":"Robots Txt","operationId":"robots_txt_robots_txt_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/.well-known/shadowfeed-feeds.json":{"get":{"summary":"Shadowfeed Manifest","operationId":"shadowfeed_manifest__well_known_shadowfeed_feeds_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/shadowfeed/verify":{"get":{"summary":"Shadowfeed Verify","operationId":"shadowfeed_verify_shadowfeed_verify_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/favicon.ico":{"get":{"summary":"Favicon","operationId":"favicon_favicon_ico_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/free/health":{"get":{"summary":"Free Health","description":"Free: API health check with stats.","operationId":"free_health_api_v1_free_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/free/fear-greed":{"get":{"summary":"Free Fear Greed","description":"Free: Current Fear & Greed Index (limited).","operationId":"free_fear_greed_api_v1_free_fear_greed_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/free/gas":{"get":{"summary":"Free Gas","description":"Free: Basic gas prices (ETH only).","operationId":"free_gas_api_v1_free_gas_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/price/{coin_id}":{"get":{"summary":"Get Price","operationId":"get_price_api_v1_price__coin_id__get","parameters":[{"name":"coin_id","in":"path","required":true,"schema":{"type":"string","title":"Coin Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/trending":{"get":{"summary":"Get Trending","operationId":"get_trending_api_v1_trending_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/market":{"get":{"summary":"Get Market Overview","operationId":"get_market_overview_api_v1_market_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/top-coins":{"get":{"summary":"Get Top Coins","operationId":"get_top_coins_api_v1_top_coins_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/search":{"get":{"summary":"Search Coins","operationId":"search_coins_api_v1_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/defi":{"get":{"summary":"Get Defi","operationId":"get_defi_api_v1_defi_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/fear-greed":{"get":{"summary":"Get Fear Greed","operationId":"get_fear_greed_api_v1_fear_greed_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/gas":{"get":{"summary":"Get Gas","operationId":"get_gas_api_v1_gas_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/admin":{"get":{"summary":"Admin Dashboard","operationId":"admin_dashboard_admin_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/admin/api/stats":{"get":{"summary":"Admin Stats V2","operationId":"admin_stats_v2_admin_api_stats_get","parameters":[{"name":"hours","in":"query","required":false,"schema":{"type":"integer","maximum":168,"default":24,"title":"Hours"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}} No newline at end of file

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Most of the endpoints (e.g., /api/v1/dex/token/{chain}/{address}, /api/v1/protocols, etc.) define an empty schema ("schema": {}) for their 200 Successful Response. This prevents API client generators from producing typed response models and limits the usefulness of the interactive documentation. Consider defining proper response schemas/components for these endpoints to fully leverage the benefits of OpenAPI.

@@ -0,0 +1 @@
{"openapi":"3.1.0","info":{"title":"x402 Crypto Intelligence API","description":"AI agent crypto data API — pay per request in USDC on Base. No API keys needed.","version":"3.0.0"},"paths":{"/api/v1/dex/token/{chain}/{address}":{"get":{"tags":["v2"],"summary":"Dex Token Pairs","description":"Get all DEX trading pairs for a token across all DEXes.","operationId":"dex_token_pairs_api_v1_dex_token__chain___address__get","parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string","title":"Chain"}},{"name":"address","in":"path","required":true,"schema":{"type":"string","title":"Address"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/dex/pair/{chain}/{pair_id}":{"get":{"tags":["v2"],"summary":"Dex Pair","description":"Get detailed info for a specific DEX pair.","operationId":"dex_pair_api_v1_dex_pair__chain___pair_id__get","parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string","title":"Chain"}},{"name":"pair_id","in":"path","required":true,"schema":{"type":"string","title":"Pair Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/dex/search":{"get":{"tags":["v2"],"summary":"Dex Search","description":"Search for tokens on DEX by name, symbol, or address.","operationId":"dex_search_api_v1_dex_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/dex/trending":{"get":{"tags":["v2"],"summary":"Dex Trending","description":"Get trending tokens on DEX (recently updated profiles).","operationId":"dex_trending_api_v1_dex_trending_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/dex/boosted":{"get":{"tags":["v2"],"summary":"Dex Boosted","description":"Get top boosted tokens on DEX (most active promotions).","operationId":"dex_boosted_api_v1_dex_boosted_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/protocols":{"get":{"tags":["v2"],"summary":"All Protocols","description":"Get all DeFi protocols with TVL, chains, and category.","operationId":"all_protocols_api_v1_protocols_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/tvl/{protocol}":{"get":{"tags":["v2"],"summary":"Protocol Tvl","description":"Get TVL history for a specific protocol.","operationId":"protocol_tvl_api_v1_tvl__protocol__get","parameters":[{"name":"protocol","in":"path","required":true,"schema":{"type":"string","title":"Protocol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/chains":{"get":{"tags":["v2"],"summary":"All Chains","description":"Get all supported blockchain chains with TVL data.","operationId":"all_chains_api_v1_chains_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/wallet/{chain}/{address}":{"get":{"tags":["v2"],"summary":"Wallet Portfolio","description":"Get native balance for an EVM wallet address.","operationId":"wallet_portfolio_api_v1_wallet__chain___address__get","parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string","title":"Chain"}},{"name":"address","in":"path","required":true,"schema":{"type":"string","title":"Address"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/gas/multi":{"get":{"tags":["v2"],"summary":"Multi Chain Gas","description":"Get gas prices across multiple chains via public RPCs.","operationId":"multi_chain_gas_api_v1_gas_multi_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/whale/ethereum":{"get":{"tags":["premium"],"summary":"Whale Alerts Eth","description":"Get recent large ETH transfers (whale movements) via Etherscan.","operationId":"whale_alerts_eth_api_v1_whale_ethereum_get","parameters":[{"name":"min_usd","in":"query","required":false,"schema":{"type":"number","minimum":1000,"default":100000,"title":"Min Usd"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/whale/solana":{"get":{"tags":["premium"],"summary":"Whale Alerts Sol","description":"Get recent large SOL transfers via Solana public API.","operationId":"whale_alerts_sol_api_v1_whale_solana_get","parameters":[{"name":"min_usd","in":"query","required":false,"schema":{"type":"number","minimum":1000,"default":50000,"title":"Min Usd"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/sentiment":{"get":{"tags":["premium"],"summary":"Market Sentiment","description":"Get comprehensive market sentiment data.","operationId":"market_sentiment_api_v1_sentiment_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/screener":{"get":{"tags":["premium"],"summary":"Token Screener","description":"Screen tokens by market cap, volume, and price change criteria.","operationId":"token_screener_api_v1_screener_get","parameters":[{"name":"min_mcap","in":"query","required":false,"schema":{"type":"number","description":"Min market cap USD","default":1000000,"title":"Min Mcap"},"description":"Min market cap USD"},{"name":"max_mcap","in":"query","required":false,"schema":{"type":"number","description":"Max market cap USD","default":10000000000,"title":"Max Mcap"},"description":"Max market cap USD"},{"name":"min_volume","in":"query","required":false,"schema":{"type":"number","description":"Min 24h volume USD","default":100000,"title":"Min Volume"},"description":"Min 24h volume USD"},{"name":"sort_by","in":"query","required":false,"schema":{"type":"string","description":"Sort: volume_desc, mcap_desc, change_desc","default":"volume_desc","title":"Sort By"},"description":"Sort: volume_desc, mcap_desc, change_desc"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/portfolio":{"get":{"tags":["premium"],"summary":"Portfolio Tracker","description":"Track portfolio across multiple wallets and chains.","operationId":"portfolio_tracker_api_v1_portfolio_get","parameters":[{"name":"wallets","in":"query","required":true,"schema":{"type":"string","description":"Comma-separated chain:address pairs (e.g. ethereum:0xabc,base:0xdef)","title":"Wallets"},"description":"Comma-separated chain:address pairs (e.g. ethereum:0xabc,base:0xdef)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/movers":{"get":{"tags":["premium"],"summary":"Top Movers","description":"Get top gainers and losers in the last 24 hours.","operationId":"top_movers_api_v1_movers_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":25,"default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/prices":{"get":{"tags":["premium"],"summary":"Batch Prices","description":"Get prices for multiple tokens in a single call (efficient batch).","operationId":"batch_prices_api_v1_prices_get","parameters":[{"name":"ids","in":"query","required":true,"schema":{"type":"string","description":"Comma-separated coin IDs (e.g. bitcoin,ethereum,solana)","title":"Ids"},"description":"Comma-separated coin IDs (e.g. bitcoin,ethereum,solana)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/wallet/{chain}/{address}/transactions":{"get":{"tags":["etherscan"],"summary":"Wallet Transactions","description":"Get normal transaction history for a wallet.\nReturns last `offset` transactions (default 20).","operationId":"wallet_transactions_api_v1_wallet__chain___address__transactions_get","parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string","title":"Chain"}},{"name":"address","in":"path","required":true,"schema":{"type":"string","title":"Address"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/wallet/{chain}/{address}/tokens":{"get":{"tags":["etherscan"],"summary":"Wallet Token Transfers","description":"Get ERC-20 token transfer history for a wallet.\nShows tokens received/sent.","operationId":"wallet_token_transfers_api_v1_wallet__chain___address__tokens_get","parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string","title":"Chain"}},{"name":"address","in":"path","required":true,"schema":{"type":"string","title":"Address"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/wallet/{chain}/{address}/internal":{"get":{"tags":["etherscan"],"summary":"Wallet Internal Txs","description":"Get internal transactions (contract calls) for a wallet.","operationId":"wallet_internal_txs_api_v1_wallet__chain___address__internal_get","parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string","title":"Chain"}},{"name":"address","in":"path","required":true,"schema":{"type":"string","title":"Address"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/contract/{chain}/{address}/abi":{"get":{"tags":["etherscan"],"summary":"Contract Abi","description":"Get smart contract ABI and source code.","operationId":"contract_abi_api_v1_contract__chain___address__abi_get","parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string","title":"Chain"}},{"name":"address","in":"path","required":true,"schema":{"type":"string","title":"Address"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/token/{chain}/address/{address}/info":{"get":{"tags":["etherscan"],"summary":"Token Info","description":"Get ERC-20 token info (name, symbol, total supply, holders estimate).","operationId":"token_info_api_v1_token__chain__address__address__info_get","parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string","title":"Chain"}},{"name":"address","in":"path","required":true,"schema":{"type":"string","title":"Address"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/gas/{chain}":{"get":{"tags":["etherscan"],"summary":"Etherscan Gas","description":"Get gas prices from Etherscan Gas Tracker (more accurate than public RPC).\nFalls back to public RPC for chains without free Etherscan gas access.","operationId":"etherscan_gas_api_v1_gas__chain__get","parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string","title":"Chain"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/block/{chain}/latest":{"get":{"tags":["etherscan"],"summary":"Latest Block","description":"Get latest block number and timestamp.","operationId":"latest_block_api_v1_block__chain__latest_get","parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string","title":"Chain"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/":{"get":{"summary":"Root","description":"Professional landing page.","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health":{"get":{"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/robots.txt":{"get":{"summary":"Robots Txt","operationId":"robots_txt_robots_txt_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/.well-known/shadowfeed-feeds.json":{"get":{"summary":"Shadowfeed Manifest","operationId":"shadowfeed_manifest__well_known_shadowfeed_feeds_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/shadowfeed/verify":{"get":{"summary":"Shadowfeed Verify","operationId":"shadowfeed_verify_shadowfeed_verify_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/favicon.ico":{"get":{"summary":"Favicon","operationId":"favicon_favicon_ico_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/free/health":{"get":{"summary":"Free Health","description":"Free: API health check with stats.","operationId":"free_health_api_v1_free_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/free/fear-greed":{"get":{"summary":"Free Fear Greed","description":"Free: Current Fear & Greed Index (limited).","operationId":"free_fear_greed_api_v1_free_fear_greed_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/free/gas":{"get":{"summary":"Free Gas","description":"Free: Basic gas prices (ETH only).","operationId":"free_gas_api_v1_free_gas_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/price/{coin_id}":{"get":{"summary":"Get Price","operationId":"get_price_api_v1_price__coin_id__get","parameters":[{"name":"coin_id","in":"path","required":true,"schema":{"type":"string","title":"Coin Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/trending":{"get":{"summary":"Get Trending","operationId":"get_trending_api_v1_trending_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/market":{"get":{"summary":"Get Market Overview","operationId":"get_market_overview_api_v1_market_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/top-coins":{"get":{"summary":"Get Top Coins","operationId":"get_top_coins_api_v1_top_coins_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/search":{"get":{"summary":"Search Coins","operationId":"search_coins_api_v1_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/defi":{"get":{"summary":"Get Defi","operationId":"get_defi_api_v1_defi_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/fear-greed":{"get":{"summary":"Get Fear Greed","operationId":"get_fear_greed_api_v1_fear_greed_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/gas":{"get":{"summary":"Get Gas","operationId":"get_gas_api_v1_gas_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/admin":{"get":{"summary":"Admin Dashboard","operationId":"admin_dashboard_admin_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/admin/api/stats":{"get":{"summary":"Admin Stats V2","operationId":"admin_stats_v2_admin_api_stats_get","parameters":[{"name":"hours","in":"query","required":false,"schema":{"type":"integer","maximum":168,"default":24,"title":"Hours"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}} No newline at end of file

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

security-medium medium

The /admin and /admin/api/stats endpoints are exposed in the OpenAPI specification but do not define any security requirements. If these endpoints require authentication, please define a security scheme in components.securitySchemes and apply it to these paths to prevent unauthorized access and document the authentication requirements properly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant