| { |
| "api_sources": { |
| "market_prices": { |
| "primary": [ |
| { |
| "name": "coingecko", |
| "url": "https://api.coingecko.com/api/v3", |
| "auth_required": false, |
| "rate_limit": "50/min", |
| "priority": 1, |
| "timeout": 10 |
| }, |
| { |
| "name": "binance_public", |
| "url": "https://api.binance.com/api/v3", |
| "auth_required": false, |
| "rate_limit": "1200/min", |
| "priority": 2, |
| "timeout": 10 |
| }, |
| { |
| "name": "coinpaprika", |
| "url": "https://api.coinpaprika.com/v1", |
| "auth_required": false, |
| "rate_limit": "20000/month", |
| "priority": 3, |
| "timeout": 10 |
| }, |
| { |
| "name": "coincap", |
| "url": "https://api.coincap.io/v2", |
| "auth_required": false, |
| "rate_limit": "200/min", |
| "priority": 4, |
| "timeout": 10 |
| }, |
| { |
| "name": "coinlore", |
| "url": "https://api.coinlore.net/api", |
| "auth_required": false, |
| "rate_limit": "unlimited", |
| "priority": 5, |
| "timeout": 10 |
| } |
| ], |
| "secondary": [ |
| { |
| "name": "coinmarketcap_primary_1", |
| "url": "https://pro-api.coinmarketcap.com/v1", |
| "auth_required": true, |
| "api_key": "04cf4b5b-9868-465c-8ba0-9f2e78c92eb1", |
| "rate_limit": "333/day", |
| "priority": 6, |
| "timeout": 15 |
| }, |
| { |
| "name": "coinmarketcap_primary_2", |
| "url": "https://pro-api.coinmarketcap.com/v1", |
| "auth_required": true, |
| "api_key": "b54bcf4d-1bca-4e8e-9a24-22ff2c3d462c", |
| "rate_limit": "333/day", |
| "priority": 7, |
| "timeout": 15 |
| }, |
| { |
| "name": "cryptocompare", |
| "url": "https://min-api.cryptocompare.com/data", |
| "auth_required": true, |
| "api_key": "e79c8e6d4c5b4a3f2e1d0c9b8a7f6e5d4c3b2a1f", |
| "rate_limit": "100000/month", |
| "priority": 8, |
| "timeout": 10 |
| }, |
| { |
| "name": "messari", |
| "url": "https://data.messari.io/api/v1", |
| "auth_required": false, |
| "rate_limit": "20/min", |
| "priority": 9, |
| "timeout": 10 |
| }, |
| { |
| "name": "nomics", |
| "url": "https://api.nomics.com/v1", |
| "auth_required": false, |
| "rate_limit": "unlimited", |
| "priority": 10, |
| "timeout": 10 |
| }, |
| { |
| "name": "defillama_prices", |
| "url": "https://coins.llama.fi", |
| "auth_required": false, |
| "rate_limit": "unlimited", |
| "priority": 11, |
| "timeout": 10 |
| }, |
| { |
| "name": "coinstats_public", |
| "url": "https://api.coinstats.app/public/v1", |
| "auth_required": false, |
| "rate_limit": "unlimited", |
| "priority": 12, |
| "timeout": 10 |
| } |
| ], |
| "tertiary": [ |
| { |
| "name": "kaiko", |
| "url": "https://us.market-api.kaiko.io/v2", |
| "auth_required": false, |
| "rate_limit": "limited", |
| "priority": 13, |
| "timeout": 10 |
| }, |
| { |
| "name": "coindesk_price", |
| "url": "https://api.coindesk.com/v2", |
| "auth_required": false, |
| "rate_limit": "unlimited", |
| "priority": 14, |
| "timeout": 10 |
| }, |
| { |
| "name": "diadata", |
| "url": "https://api.diadata.org/v1", |
| "auth_required": false, |
| "rate_limit": "unlimited", |
| "priority": 15, |
| "timeout": 10 |
| }, |
| { |
| "name": "freecryptoapi", |
| "url": "https://api.freecryptoapi.com", |
| "auth_required": false, |
| "rate_limit": "unlimited", |
| "priority": 16, |
| "timeout": 10 |
| }, |
| { |
| "name": "cryptingup", |
| "url": "https://api.cryptingup.com/api", |
| "auth_required": false, |
| "rate_limit": "unlimited", |
| "priority": 17, |
| "timeout": 10 |
| }, |
| { |
| "name": "coinranking", |
| "url": "https://api.coinranking.com/v2", |
| "auth_required": false, |
| "rate_limit": "unlimited", |
| "priority": 18, |
| "timeout": 10 |
| } |
| ] |
| }, |
| "ohlc_candlestick": { |
| "primary": [ |
| { |
| "name": "binance_public", |
| "url": "https://api.binance.com/api/v3/klines", |
| "auth_required": false, |
| "rate_limit": "1200/min", |
| "priority": 1, |
| "timeout": 15 |
| }, |
| { |
| "name": "cryptocompare_market", |
| "url": "https://min-api.cryptocompare.com/data/v2", |
| "auth_required": false, |
| "rate_limit": "100000/month", |
| "priority": 2, |
| "timeout": 15 |
| }, |
| { |
| "name": "coinpaprika_market", |
| "url": "https://api.coinpaprika.com/v1", |
| "auth_required": false, |
| "rate_limit": "20000/month", |
| "priority": 3, |
| "timeout": 15 |
| }, |
| { |
| "name": "coincap_market", |
| "url": "https://api.coincap.io/v2", |
| "auth_required": false, |
| "rate_limit": "200/min", |
| "priority": 4, |
| "timeout": 15 |
| }, |
| { |
| "name": "coingecko_ohlc", |
| "url": "https://api.coingecko.com/api/v3", |
| "auth_required": false, |
| "rate_limit": "50/min", |
| "priority": 5, |
| "timeout": 15 |
| } |
| ], |
| "secondary": [ |
| { |
| "name": "kucoin_api", |
| "url": "https://api.kucoin.com", |
| "auth_required": false, |
| "rate_limit": "unlimited", |
| "priority": 6, |
| "timeout": 15 |
| }, |
| { |
| "name": "bybit_api", |
| "url": "https://api.bybit.com", |
| "auth_required": false, |
| "rate_limit": "unlimited", |
| "priority": 7, |
| "timeout": 15 |
| }, |
| { |
| "name": "okx_api", |
| "url": "https://www.okx.com/api/v5", |
| "auth_required": false, |
| "rate_limit": "unlimited", |
| "priority": 8, |
| "timeout": 15 |
| }, |
| { |
| "name": "kraken_api", |
| "url": "https://api.kraken.com/0/public", |
| "auth_required": false, |
| "rate_limit": "unlimited", |
| "priority": 9, |
| "timeout": 15 |
| }, |
| { |
| "name": "bitfinex_api", |
| "url": "https://api-pub.bitfinex.com/v2", |
| "auth_required": false, |
| "rate_limit": "unlimited", |
| "priority": 10, |
| "timeout": 15 |
| }, |
| { |
| "name": "gateio_api", |
| "url": "https://api.gateio.ws/api/v4", |
| "auth_required": false, |
| "rate_limit": "unlimited", |
| "priority": 11, |
| "timeout": 15 |
| }, |
| { |
| "name": "huobi_api", |
| "url": "https://api.huobi.pro", |
| "auth_required": false, |
| "rate_limit": "unlimited", |
| "priority": 12, |
| "timeout": 15 |
| } |
| ], |
| "huggingface_datasets": [ |
| { |
| "name": "hf_ds_linxy_crypto", |
| "dataset_id": "linxy/crypto_ohlcv", |
| "symbols": 26, |
| "timeframes": 7, |
| "total_files": 182, |
| "priority": 13 |
| }, |
| { |
| "name": "hf_ds_wf_btc", |
| "dataset_id": "wf/bitcoin-historical", |
| "symbols": 1, |
| "priority": 14 |
| }, |
| { |
| "name": "hf_ds_wf_eth", |
| "dataset_id": "wf/ethereum-historical", |
| "symbols": 1, |
| "priority": 15 |
| }, |
| { |
| "name": "hf_ds_wf_sol", |
| "dataset_id": "wf/solana-historical", |
| "symbols": 1, |
| "priority": 16 |
| }, |
| { |
| "name": "hf_ds_wf_xrp", |
| "dataset_id": "wf/ripple-historical", |
| "symbols": 1, |
| "priority": 17 |
| } |
| ] |
| }, |
| "blockchain_explorer": { |
| "ethereum": [ |
| { |
| "name": "etherscan_primary", |
| "url": "https://api.etherscan.io/api", |
| "auth_required": true, |
| "api_key": "SZHYFZK2RR8H9TIMJBVW54V4H81K2Z2KR2", |
| "rate_limit": "5/sec", |
| "priority": 1, |
| "timeout": 10 |
| }, |
| { |
| "name": "etherscan_secondary", |
| "url": "https://api.etherscan.io/api", |
| "auth_required": true, |
| "api_key": "T6IR8VJHX2NE6ZJW2S3FDVN1TYG4PYYI45", |
| "rate_limit": "5/sec", |
| "priority": 2, |
| "timeout": 10 |
| }, |
| { |
| "name": "blockchair_ethereum", |
| "url": "https://api.blockchair.com/ethereum", |
| "auth_required": false, |
| "rate_limit": "30/min", |
| "priority": 3, |
| "timeout": 10 |
| }, |
| { |
| "name": "blockscout_ethereum", |
| "url": "https://eth.blockscout.com/api", |
| "auth_required": false, |
| "rate_limit": "unlimited", |
| "priority": 4, |
| "timeout": 10 |
| }, |
| { |
| "name": "ethplorer", |
| "url": "https://api.ethplorer.io", |
| "auth_required": false, |
| "rate_limit": "unlimited", |
| "priority": 5, |
| "timeout": 10 |
| }, |
| { |
| "name": "etherchain", |
| "url": "https://www.etherchain.org/api", |
| "auth_required": false, |
| "rate_limit": "unlimited", |
| "priority": 6, |
| "timeout": 10 |
| }, |
| { |
| "name": "chainlens", |
| "url": "https://api.chainlens.com", |
| "auth_required": false, |
| "rate_limit": "unlimited", |
| "priority": 7, |
| "timeout": 10 |
| } |
| ], |
| "bsc": [ |
| { |
| "name": "bscscan_primary", |
| "url": "https://api.bscscan.com/api", |
| "auth_required": true, |
| "api_key": "K62RKHGXTDCG53RU4MCG6XABIMJKTN19IT", |
| "rate_limit": "5/sec", |
| "priority": 1, |
| "timeout": 10 |
| }, |
| { |
| "name": "bitquery_bsc", |
| "url": "https://graphql.bitquery.io", |
| "auth_required": false, |
| "rate_limit": "limited", |
| "priority": 2, |
| "timeout": 10 |
| }, |
| { |
| "name": "ankr_multichain_bsc", |
| "url": "https://rpc.ankr.com/multichain", |
| "auth_required": false, |
| "rate_limit": "unlimited", |
| "priority": 3, |
| "timeout": 10 |
| }, |
| { |
| "name": "nodereal_bsc_explorer", |
| "url": "https://bsc-mainnet.nodereal.io/v1", |
| "auth_required": false, |
| "rate_limit": "unlimited", |
| "priority": 4, |
| "timeout": 10 |
| }, |
| { |
| "name": "bsctrace", |
| "url": "https://api.bsctrace.com", |
| "auth_required": false, |
| "rate_limit": "unlimited", |
| "priority": 5, |
| "timeout": 10 |
| }, |
| { |
| "name": "oneinch_bsc_api", |
| "url": "https://api.1inch.io/v5.0/56", |
| "auth_required": false, |
| "rate_limit": "unlimited", |
| "priority": 6, |
| "timeout": 10 |
| } |
| ], |
| "tron": [ |
| { |
| "name": "tronscan_primary", |
| "url": "https://apilist.tronscanapi.com/api", |
| "auth_required": true, |
| "api_key": "7ae72726-bffe-4e74-9c33-97b761eeea21", |
| "rate_limit": "unlimited", |
| "priority": 1, |
| "timeout": 10 |
| }, |
| { |
| "name": "trongrid_explorer", |
| "url": "https://api.trongrid.io", |
| "auth_required": false, |
| "rate_limit": "unlimited", |
| "priority": 2, |
| "timeout": 10 |
| }, |
| { |
| "name": "blockchair_tron", |
| "url": "https://api.blockchair.com/tron", |
| "auth_required": false, |
| "rate_limit": "30/min", |
| "priority": 3, |
| "timeout": 10 |
| }, |
| { |
| "name": "tronscan_api_v2", |
| "url": "https://api.tronscan.org/api", |
| "auth_required": false, |
| "rate_limit": "unlimited", |
| "priority": 4, |
| "timeout": 10 |
| }, |
| { |
| "name": "getblock_tron", |
| "url": "https://go.getblock.io/tron", |
| "auth_required": false, |
| "rate_limit": "unlimited", |
| "priority": 5, |
| "timeout": 10 |
| } |
| ] |
| }, |
| "news_feeds": { |
| "api_sources": [ |
| { |
| "name": "newsapi_org", |
| "url": "https://newsapi.org/v2", |
| "auth_required": true, |
| "api_key": "pub_346789abc123def456789ghi012345jkl", |
| "rate_limit": "1000/day", |
| "priority": 1, |
| "timeout": 10 |
| }, |
| { |
| "name": "cryptopanic", |
| "url": "https://cryptopanic.com/api/v1", |
| "auth_required": false, |
| "rate_limit": "unlimited", |
| "priority": 2, |
| "timeout": 10 |
| }, |
| { |
| "name": "cryptocontrol", |
| "url": "https://cryptocontrol.io/api/v1/public", |
| "auth_required": false, |
| "rate_limit": "unlimited", |
| "priority": 3, |
| "timeout": 10 |
| }, |
| { |
| "name": "coindesk_api", |
| "url": "https://api.coindesk.com/v2", |
| "auth_required": false, |
| "rate_limit": "unlimited", |
| "priority": 4, |
| "timeout": 10 |
| }, |
| { |
| "name": "cointelegraph_api", |
| "url": "https://api.cointelegraph.com/api/v1", |
| "auth_required": false, |
| "rate_limit": "unlimited", |
| "priority": 5, |
| "timeout": 10 |
| }, |
| { |
| "name": "cryptoslate", |
| "url": "https://api.cryptoslate.com", |
| "auth_required": false, |
| "rate_limit": "unlimited", |
| "priority": 6, |
| "timeout": 10 |
| }, |
| { |
| "name": "theblock_api", |
| "url": "https://api.theblock.co/v1", |
| "auth_required": false, |
| "rate_limit": "unlimited", |
| "priority": 7, |
| "timeout": 10 |
| }, |
| { |
| "name": "coinstats_news", |
| "url": "https://api.coinstats.app/public/v1/news", |
| "auth_required": false, |
| "rate_limit": "unlimited", |
| "priority": 8, |
| "timeout": 10 |
| } |
| ], |
| "rss_feeds": [ |
| { |
| "name": "rss_cointelegraph", |
| "url": "https://cointelegraph.com/rss", |
| "priority": 9 |
| }, |
| { |
| "name": "rss_coindesk", |
| "url": "https://www.coindesk.com/arc/outboundfeeds/rss/", |
| "priority": 10 |
| }, |
| { |
| "name": "rss_decrypt", |
| "url": "https://decrypt.co/feed", |
| "priority": 11 |
| }, |
| { |
| "name": "rss_bitcoinmagazine", |
| "url": "https://bitcoinmagazine.com/.rss/full/", |
| "priority": 12 |
| }, |
| { |
| "name": "rss_theblock", |
| "url": "https://www.theblock.co/rss.xml", |
| "priority": 13 |
| }, |
| { |
| "name": "rss_cryptoslate", |
| "url": "https://cryptoslate.com/feed/", |
| "priority": 14 |
| }, |
| { |
| "name": "rss_newsbtc", |
| "url": "https://www.newsbtc.com/feed/", |
| "priority": 15 |
| } |
| ] |
| }, |
| "sentiment_data": { |
| "primary": [ |
| { |
| "name": "alternative_me_fng", |
| "url": "https://api.alternative.me/fng/", |
| "auth_required": false, |
| "rate_limit": "unlimited", |
| "priority": 1, |
| "timeout": 10 |
| }, |
| { |
| "name": "cfgi_v1", |
| "url": "https://api.cfgi.io/v1/fear-greed", |
| "auth_required": false, |
| "rate_limit": "unlimited", |
| "priority": 2, |
| "timeout": 10 |
| }, |
| { |
| "name": "cfgi_legacy", |
| "url": "https://cfgi.io/api", |
| "auth_required": false, |
| "rate_limit": "unlimited", |
| "priority": 3, |
| "timeout": 10 |
| }, |
| { |
| "name": "coingecko_community", |
| "url": "https://api.coingecko.com/api/v3", |
| "auth_required": false, |
| "rate_limit": "50/min", |
| "priority": 4, |
| "timeout": 10 |
| }, |
| { |
| "name": "messari_social", |
| "url": "https://data.messari.io/api/v1", |
| "auth_required": false, |
| "rate_limit": "20/min", |
| "priority": 5, |
| "timeout": 10 |
| } |
| ], |
| "social_analytics": [ |
| { |
| "name": "lunarcrush", |
| "url": "https://api.lunarcrush.com/v2", |
| "auth_required": true, |
| "api_key": null, |
| "rate_limit": "limited", |
| "priority": 6, |
| "timeout": 10 |
| }, |
| { |
| "name": "santiment", |
| "url": "https://api.santiment.net/graphql", |
| "auth_required": true, |
| "api_key": null, |
| "rate_limit": "limited", |
| "priority": 7, |
| "timeout": 10 |
| }, |
| { |
| "name": "thetie", |
| "url": "https://api.thetie.io", |
| "auth_required": true, |
| "api_key": null, |
| "rate_limit": "limited", |
| "priority": 8, |
| "timeout": 10 |
| }, |
| { |
| "name": "cryptoquant", |
| "url": "https://api.cryptoquant.com/v1", |
| "auth_required": true, |
| "api_key": null, |
| "rate_limit": "limited", |
| "priority": 9, |
| "timeout": 10 |
| }, |
| { |
| "name": "glassnode_social", |
| "url": "https://api.glassnode.com/v1/metrics/social", |
| "auth_required": true, |
| "api_key": null, |
| "rate_limit": "limited", |
| "priority": 10, |
| "timeout": 10 |
| }, |
| { |
| "name": "augmento", |
| "url": "https://api.augmento.ai/v1", |
| "auth_required": true, |
| "api_key": null, |
| "rate_limit": "limited", |
| "priority": 11, |
| "timeout": 10 |
| }, |
| { |
| "name": "reddit_cryptocurrency_new", |
| "url": "https://www.reddit.com/r/CryptoCurrency/new.json", |
| "auth_required": false, |
| "rate_limit": "unlimited", |
| "priority": 12, |
| "timeout": 10 |
| } |
| ] |
| }, |
| "onchain_analytics": [ |
| { |
| "name": "glassnode_general", |
| "url": "https://api.glassnode.com/v1", |
| "auth_required": true, |
| "api_key": null, |
| "rate_limit": "limited", |
| "priority": 1, |
| "timeout": 10 |
| }, |
| { |
| "name": "intotheblock", |
| "url": "https://api.intotheblock.com/v1", |
| "auth_required": true, |
| "api_key": null, |
| "rate_limit": "limited", |
| "priority": 2, |
| "timeout": 10 |
| }, |
| { |
| "name": "nansen", |
| "url": "https://api.nansen.ai/v1", |
| "auth_required": true, |
| "api_key": null, |
| "rate_limit": "limited", |
| "priority": 3, |
| "timeout": 10 |
| }, |
| { |
| "name": "thegraph_subgraphs", |
| "url": "https://api.thegraph.com/subgraphs/name/", |
| "auth_required": false, |
| "rate_limit": "unlimited", |
| "priority": 4, |
| "timeout": 10 |
| }, |
| { |
| "name": "dune", |
| "url": "https://api.dune.com/api/v1", |
| "auth_required": true, |
| "api_key": null, |
| "rate_limit": "limited", |
| "priority": 5, |
| "timeout": 10 |
| }, |
| { |
| "name": "covalent", |
| "url": "https://api.covalenthq.com/v1", |
| "auth_required": true, |
| "api_key": null, |
| "rate_limit": "limited", |
| "priority": 6, |
| "timeout": 10 |
| }, |
| { |
| "name": "moralis", |
| "url": "https://deep-index.moralis.io/api/v2", |
| "auth_required": true, |
| "api_key": null, |
| "rate_limit": "limited", |
| "priority": 7, |
| "timeout": 10 |
| }, |
| { |
| "name": "alchemy_nft_api", |
| "url": "https://eth-mainnet.g.alchemy.com/v2", |
| "auth_required": true, |
| "api_key": null, |
| "rate_limit": "limited", |
| "priority": 8, |
| "timeout": 10 |
| }, |
| { |
| "name": "transpose", |
| "url": "https://api.transpose.io", |
| "auth_required": true, |
| "api_key": null, |
| "rate_limit": "limited", |
| "priority": 9, |
| "timeout": 10 |
| }, |
| { |
| "name": "footprint_analytics", |
| "url": "https://api.footprint.network", |
| "auth_required": true, |
| "api_key": null, |
| "rate_limit": "limited", |
| "priority": 10, |
| "timeout": 10 |
| }, |
| { |
| "name": "bitquery_analytics", |
| "url": "https://graphql.bitquery.io", |
| "auth_required": false, |
| "rate_limit": "limited", |
| "priority": 11, |
| "timeout": 10 |
| }, |
| { |
| "name": "blockchair_analytics", |
| "url": "https://api.blockchair.com", |
| "auth_required": false, |
| "rate_limit": "30/min", |
| "priority": 12, |
| "timeout": 10 |
| }, |
| { |
| "name": "coinmetrics", |
| "url": "https://api.coinmetrics.io/v4", |
| "auth_required": false, |
| "rate_limit": "limited", |
| "priority": 13, |
| "timeout": 10 |
| } |
| ], |
| "whale_tracking": [ |
| { |
| "name": "whale_alert", |
| "url": "https://api.whale-alert.io/v1", |
| "auth_required": true, |
| "api_key": null, |
| "rate_limit": "limited", |
| "priority": 1, |
| "timeout": 10 |
| }, |
| { |
| "name": "arkham", |
| "url": "https://api.arkham.com/v1", |
| "auth_required": true, |
| "api_key": null, |
| "rate_limit": "limited", |
| "priority": 2, |
| "timeout": 10 |
| }, |
| { |
| "name": "clankapp", |
| "url": "https://clankapp.com/api", |
| "auth_required": true, |
| "api_key": null, |
| "rate_limit": "limited", |
| "priority": 3, |
| "timeout": 10 |
| }, |
| { |
| "name": "bitquery_whales", |
| "url": "https://graphql.bitquery.io", |
| "auth_required": false, |
| "rate_limit": "limited", |
| "priority": 4, |
| "timeout": 10 |
| }, |
| { |
| "name": "nansen_whales", |
| "url": "https://api.nansen.ai/v1", |
| "auth_required": true, |
| "api_key": null, |
| "rate_limit": "limited", |
| "priority": 5, |
| "timeout": 10 |
| }, |
| { |
| "name": "dexcheck", |
| "url": "https://api.dexcheck.io", |
| "auth_required": false, |
| "rate_limit": "unlimited", |
| "priority": 6, |
| "timeout": 10 |
| }, |
| { |
| "name": "debank", |
| "url": "https://api.debank.com", |
| "auth_required": false, |
| "rate_limit": "unlimited", |
| "priority": 7, |
| "timeout": 10 |
| }, |
| { |
| "name": "zerion", |
| "url": "https://api.zerion.io", |
| "auth_required": false, |
| "rate_limit": "unlimited", |
| "priority": 8, |
| "timeout": 10 |
| }, |
| { |
| "name": "whalemap", |
| "url": "https://whalemap.io/api", |
| "auth_required": false, |
| "rate_limit": "unlimited", |
| "priority": 9, |
| "timeout": 10 |
| } |
| ] |
| }, |
| "error_handling": { |
| "451": { |
| "description": "Geo-block detected", |
| "actions": ["switch_proxy", "try_alternative_source", "use_different_exchange"] |
| }, |
| "429": { |
| "description": "Rate limit exceeded", |
| "actions": ["move_to_next_source", "mark_temporarily_unavailable", "exponential_backoff"] |
| }, |
| "401": { |
| "description": "Authentication failed", |
| "actions": ["try_backup_key", "switch_to_no_auth", "check_key_validity"] |
| }, |
| "403": { |
| "description": "Forbidden", |
| "actions": ["try_alternative_source", "check_permissions"] |
| }, |
| "404": { |
| "description": "Not found", |
| "actions": ["skip_to_next_source"] |
| }, |
| "500": { |
| "description": "Internal server error", |
| "actions": ["mark_source_down", "skip_to_next", "retry_after_5min"] |
| }, |
| "502": { |
| "description": "Bad gateway", |
| "actions": ["skip_to_next_source", "retry_after_2min"] |
| }, |
| "503": { |
| "description": "Service unavailable", |
| "actions": ["skip_to_next_source", "retry_after_5min"] |
| }, |
| "timeout": { |
| "description": "Request timeout", |
| "actions": ["retry_with_increased_timeout", "move_to_faster_source"] |
| } |
| }, |
| "retry_strategy": { |
| "max_retries": 3, |
| "retryable_errors": [451, 429, 500, 502, 503, 504, "ETIMEDOUT", "ECONNRESET"], |
| "non_retryable_errors": [400, 401, 403, 404], |
| "backoff": { |
| "type": "exponential", |
| "initial_delay_ms": 1000, |
| "max_delay_ms": 10000, |
| "multiplier": 2 |
| } |
| }, |
| "caching": { |
| "market_prices": { |
| "ttl_seconds": 60, |
| "max_age_seconds": 300 |
| }, |
| "ohlc_candlestick": { |
| "ttl_seconds": 300, |
| "max_age_seconds": 3600 |
| }, |
| "blockchain_explorer": { |
| "ttl_seconds": 120, |
| "max_age_seconds": 600 |
| }, |
| "news_feeds": { |
| "ttl_seconds": 600, |
| "max_age_seconds": 3600 |
| }, |
| "sentiment_data": { |
| "ttl_seconds": 300, |
| "max_age_seconds": 1800 |
| }, |
| "onchain_analytics": { |
| "ttl_seconds": 600, |
| "max_age_seconds": 3600 |
| }, |
| "whale_tracking": { |
| "ttl_seconds": 180, |
| "max_age_seconds": 900 |
| } |
| }, |
| "validation": { |
| "cross_check": true, |
| "acceptable_variance": 0.05, |
| "minimum_sources_to_compare": 3, |
| "confidence_threshold": 0.8 |
| } |
| } |
|
|