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.

  • tickermarket_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

  • tradetrades

    Trigger: INSERT on every match by the matching engine

    Fields: id, price, quantity, quote_quantity, taker_side, created_at

  • depthmarket_depth_cache

    Trigger: UPDATE whenever an order is placed, cancelled, or matched

    Fields: symbol, bids [[price, qty]…], asks [[price, qty]…], timestamp

  • orderbookmarket_depth_cache

    Trigger: same as depth — full order-book snapshot

    Fields: symbol, bids, asks, timestamp

  • klinecandles

    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.