Skip to content
aeon/feed

REST API

Base URL: https://aeonfeed.com/v1. All responses are JSON, and CORS is open (*). The REST API is for occasional lookups. For anything real-time, use the WebSocket.

GET /v1/health

json
{ "status": "ok", "version": "0.1.0", "protocol": "v1", "uptime_s": 86400, "connections": 412, "exchanges_live": 12, "time": 1731400000123 }

GET /v1/exchanges

json
{ "data": [ { "id": "binance", "name": "Binance", "pairs": 98, "live": true } ] }

GET /v1/pairs

json
{ "data": [ { "symbol": "BTCUSDT", "base": "BTC", "quote": "USDT", "exchanges": ["binance", "bybit", "okx"] } ] }

GET /v1/tickers

The latest cross-exchange aggregate for every pair. Items have the same shape as agg:*.

json
{ "data": [ { "s": "BTCUSDT", "p": 97012.3, "bb": 97014.0, "bbx": "kraken", "bbq": 0.42, "ba": 97011.8, "bax": "bybit", "baq": 1.37, "sp": -0.0023, "n": 11, "ch": 1.84, "v": 1834455120, "t": 1731400000123 } ], "time": 1731400000200 }

GET /v1/ticker/{symbol}

The aggregate plus every exchange quote for one pair. {symbol} accepts BTCUSDT, btcusdt or btc-usdt.

bash
curl https://YOUR_HOST/v1/ticker/btc-usdt
json
{ "symbol": "BTCUSDT", "agg": { "s": "BTCUSDT", "p": 97012.3 }, "quotes": [ { "ex": "binance", "b": 97012.5, "a": 97012.51, "bq": 3.2, "aq": 0.8, "t": 1731400000123 } ], "time": 1731400000200 }

An unknown symbol returns 404 with {"error":"unknown_symbol"}.

GET /v1/history/{symbol}

The reference price (p, the median across exchanges) as 1-minute candles for the last 24 hours, oldest first. Each row is [t, open, high, low, close], where t is the candle's open time in ms. The newest candle is still forming. History is kept in memory: after a server restart, older candles are filled from Binance 1-minute klines where Binance lists the pair.

bash
curl https://YOUR_HOST/v1/history/btc-usdt
json
{ "symbol": "BTCUSDT", "interval": "1m", "data": [ [1731399960000, 97001.2, 97020.5, 96998.0, 97012.3], [1731400020000, 97012.3, 97015.0, 97004.1, 97010.8] ], "time": 1731400030000 }

To keep a chart live, fold agg:* updates for the pair into the last candle (or start a new one when the minute changes).

Rate limits

120 requests per minute per IP. Going over returns 429 with Retry-After: 60.

Aeon Feed is free, with no ads and no paid tier. Donations keep it that way.

  • Keeping the project alive: servers and bandwidth for a free, public real-time feed.
  • Maintenance: keeping up with exchange API changes, fixing bugs, adding pairs and exchanges.
  • New features: cross-exchange arbitrage signals are next on the roadmap.
Tron (TRC-20)
Tether (USDT)
TXFraDKB…ZCAmpi

Send USDT only on the network you selected. TRC-20 has the lowest fees.