Developers
Public market data API
These endpoints return only real engine data and need no API key or login. Authenticated trading keys are issued per account under Security. Real-time updates stream to the trading interface, so the order book, trades, candles and statistics change the moment an order or trade is recorded.
Aggregator summary
Single endpoint aggregators such as CoinMarketCap can poll for the AZAD market.
GET/api/public/market-summary/AZAD
Last price, bid/ask, spread, 24h statistics, liquidity, circulating supply, market cap, network and contract address
CoinMarketCap Ideal API
The exact endpoint set CoinMarketCap requests during listing review. Prices are null and volumes zero until real trades exist — no placeholder data is ever returned.
GET/api/public/cmc/summary
All spot pairs: last price, highest bid, lowest ask, 24h volume, 24h high/low and change
GET/api/public/cmc/assets
Listed assets with deposit/withdrawal switches, fees, contract address and supply
GET/api/public/cmc/ticker
Keyed by BASE_QUOTE with last price, base/quote volume and isFrozen flag
GET/api/public/cmc/orderbook/AZAD_USDT
Aggregated [price, quantity] bids and asks from real resting orders
GET/api/public/cmc/trades/AZAD_USDT
Executed trades with trade id, price, base/quote volume, timestamp and taker side
Market data
All values are read straight from the matching engine. A market with no executed trades returns null prices and zero volume — never a placeholder.
GET/api/public/v1/exchangeInfo
Trading rules, precision, fees, price bands and asset metadata
GET/api/public/v1/markets
All active market pairs with real ticker data
GET/api/public/v1/assets
Asset metadata: network, contract address, decimals, supply, transfer switches
GET/api/public/v1/ticker/price?symbol=AZADUSDT
Last traded price (null before the first real trade)
GET/api/public/v1/ticker/24hr?symbol=AZADUSDT
24h open, high, low, change, base and quote volume, trade count
GET/api/public/v1/depth?symbol=AZADUSDT&limit=50
Aggregated resting limit orders with liquidity metrics
GET/api/public/v1/orderbook?symbol=AZADUSDT
Order book with cumulative depth, best bid/ask and spread
GET/api/public/v1/liquidity?symbol=AZADUSDT&side=BUY&quantity=1000
Depth ±0.5/1/2%, imbalance, order counts and estimated slippage
GET/api/public/v1/trades?symbol=AZADUSDT
Recent executed trades with price, quantity, quote quantity and taker side
GET/api/public/v1/klines?symbol=AZADUSDT&interval=15m
OHLCV candles built from executed trades (1m–1M)
GET/api/public/v1/system/status
Component status, server time and aggregator integration state
On-chain DEX data
Real prices read from PancakeSwap V2 pool reserves on BNB Smart Chain. Returns null when no pool exists yet — no fabricated on-chain price is ever returned.
GET/api/public/v1/dex-price
AZAD price from PancakeSwap V2 pools (AZAD/BNB, AZAD/USDT, AZAD/USDC). Returns pair address, reserves, price and source
GET/api/public/v1/index-prices
External reference prices for BTC, ETH, BNB, USDT, USDC from Binance/CoinGecko — never used as AZAD's official price
WebSocket real-time streams
The trading interface subscribes to Supabase Realtime (Phoenix Channels over WebSocket) for live market data. The connection provides automatic reconnection, heartbeat ping/pong, and channel cleanup. All subscriptions are filtered by market_id. No simulated events are ever produced — every event comes from a real order, trade, or engine computation.
ticker← market_stats
Trigger: UPDATE on every trade or order change
Fields: last_price, price_change_percent_24h, high_24h, low_24h, base_volume_24h, quote_volume_24h, trade_count_24h, best_bid, best_ask, spread
trade← trades
Trigger: INSERT on every match by the matching engine
Fields: id, price, quantity, quote_quantity, taker_side, created_at
depth← market_depth_cache
Trigger: UPDATE whenever an order is placed, cancelled, or matched
Fields: symbol, bids [[price, qty]…], asks [[price, qty]…], timestamp
orderbook← market_depth_cache
Trigger: same as depth — full order-book snapshot
Fields: symbol, bids, asks, timestamp
kline← candles
Trigger: INSERT or UPDATE on every trade
Fields: interval, open_time, open, high, low, close, volume, quote_volume, trade_count
Public channels (no auth):
market_stats, trades, market_depth_cache, candles — public read policy (anon + authenticated).
Authenticated channels:
orders, balances — RLS filters to auth.uid() so each user only sees their own data.
Data integrity
- Prices come only from executed trades matched by price-time priority.
- An operator reference price is reported separately and never counts as a trade, volume or market cap input.
- Liquidity and depth are computed from real resting orders; an empty book reports zero.
- Market cap uses the audited circulating supply, never total supply.
- Self-trades are prevented and no automated activity is generated to create volume.