$EX5 pre-sale is open — Seed tier · 500M fixed supply · 50% burn · KYC via EX5 ExchangeJOIN →
EX5 API · REST & WEBSOCKET

Market data

Public market data needs no API key. Market ids are lowercase base + quote codes such as btcusdt; all markets are currently quoted in USDT.

For live prices, prefer the WebSocket streams: global.tickers pushes every market about every 5 seconds, and <market>.ob-inc keeps an order book up to date without polling.

List markets

GET/api/v2/peatio/public/marketsPublic

Returns the active spot markets with their price/amount limits and precision. Paginated (Total, Page and Per-Page response headers). Results are cached server-side for up to 10 minutes.

Parameters

NameInTypeDescription
base_unitquerystringOnly markets with this base currency, e.g. btc.
quote_unitquerystringOnly markets with this quote currency, e.g. usdt.
order_byquerystringSort field (default position). One of: position, id.
orderingquerystringSort direction (default asc). One of: asc, desc.
limitqueryintegerPage size, 1-1000 (default 100).
pagequeryintegerPage number, starting at 1 (default 1).

Responses

StatusDescription
200Array of markets.
422Validation error, e.g. {"errors":["public.market.doesnt_exist"]}.

Response fields

FieldTypeDescription
idstringMarket id, e.g. "btcusdt" (same as symbol).
symbolstringMarket symbol: base code + quote code.
namestringDisplay name, e.g. "BTC/USDT".
typestringMarket type; always "spot" for tradable markets.
base_unitstringBase currency code.
quote_unitstringQuote currency code.
min_pricestring (decimal)Minimum order price.
max_pricestring (decimal)Maximum order price.
min_amountstring (decimal)Minimum order amount (base currency).
amount_precisionintegerMaximum decimals allowed in an order amount.
price_precisionintegerMaximum decimals allowed in an order price.
statestring"enabled" for active markets.

Example response

JSON
[
  {
    "id": "btcusdt",
    "symbol": "btcusdt",
    "name": "BTC/USDT",
    "type": "spot",
    "base_unit": "btc",
    "quote_unit": "usdt",
    "min_price": "0.01",
    "max_price": "10000000.0",
    "min_amount": "0.00001",
    "amount_precision": 5,
    "price_precision": 2,
    "state": "enabled"
  }
]

Example request

curl -s "https://exchange.ex5.com/api/v2/peatio/public/markets"

24h tickers for all markets

GET/api/v2/peatio/public/markets/tickersPublic

Returns the 24-hour ticker of every active spot market, as an object keyed by market id. The server refreshes it about every 5 seconds. All numeric values are strings; at is a Unix time in seconds (also a string). volume is quote-currency volume, amount base-currency volume, avg_price the volume-weighted average price. Unlike the single-market endpoint, entries carry ticker.at and no vol alias.

Responses

StatusDescription
200Object: market id -> ticker snapshot.

Response fields

FieldTypeDescription
<market id>.atstring (unix seconds)Time the ticker was computed.
<market id>.tickerTickerSnapshotEntry24h statistics.

Example response

JSON
{
  "btcusdt": {
    "at": "1790530000",
    "ticker": {
      "at": "1790530000",
      "avg_price": "84485.51",
      "high": "85117.63",
      "last": "84418.00",
      "low": "83838.87",
      "open": "84074.99",
      "price_change_percent": "+0.41%",
      "volume": "12450.33",
      "amount": "0.1473"
    }
  },
  "ethusdt": {
    "at": "1790530000",
    "ticker": {
      "at": "1790530000",
      "avg_price": "2688.10",
      "high": "2712.40",
      "last": "2689.08",
      "low": "2661.35",
      "open": "2701.55",
      "price_change_percent": "-0.46%",
      "volume": "8805.10",
      "amount": "3.2755"
    }
  }
}

Example request

curl -s "https://exchange.ex5.com/api/v2/peatio/public/markets/tickers"

24h ticker for one market

GET/api/v2/peatio/public/markets/{market}/tickersPublic

Returns the 24-hour ticker of one market. volume = quote-currency volume, amount = base-currency volume (vol is an alias of volume), avg_price = volume-weighted average price, price_change_percent = (last - open) / open formatted like "+0.41%". Values are strings; the top-level at is a Unix time in seconds (string); ticker.at is always null on this endpoint.

Parameters

NameInTypeDescription
marketrequiredpathstringMarket id, e.g. btcusdt. Valid ids: GET /api/v2/peatio/public/markets.

Responses

StatusDescription
200Ticker.
422Validation error, e.g. {"errors":["public.market.doesnt_exist"]}.

Response fields

FieldTypeDescription
atstring (unix seconds)Computation time (documented as integer; served as a string).
tickerTickerEntry24h statistics.

Example response

JSON
{
  "at": "1790530000",
  "ticker": {
    "low": "83838.87",
    "high": "85117.63",
    "open": "84074.99",
    "last": "84418.00",
    "volume": "12450.33",
    "amount": "0.1473",
    "vol": "12450.33",
    "avg_price": "84485.51",
    "price_change_percent": "+0.41%",
    "at": null
  }
}

Example request

curl -s "https://exchange.ex5.com/api/v2/peatio/public/markets/btcusdt/tickers"

Order book (individual orders)

GET/api/v2/peatio/public/markets/{market}/order-bookPublic

Returns resting orders on each side of the book as full order objects, best price first (asks ascending, bids descending). For aggregated price levels use /depth.

Parameters

NameInTypeDescription
marketrequiredpathstringMarket id, e.g. btcusdt. Valid ids: GET /api/v2/peatio/public/markets.
asks_limitqueryintegerNumber of sell orders, 1-200 (default 20).
bids_limitqueryintegerNumber of buy orders, 1-200 (default 20).

Responses

StatusDescription
200Asks and bids.
422Validation error, e.g. {"errors":["public.market.doesnt_exist"]}.

Response fields

FieldTypeDescription
asksarray<Order>Sell orders, lowest price first.
bidsarray<Order>Buy orders, highest price first.

Example response

JSON
{
  "asks": [
    {
      "id": 444677013,
      "uuid": "5c0de1a2-ba95-11f1-aa4a-000000000002",
      "side": "sell",
      "ord_type": "limit",
      "price": "84897.05",
      "avg_price": "0.0",
      "state": "wait",
      "market": "btcusdt",
      "market_type": "spot",
      "created_at": "2026-09-27T17:07:34Z",
      "updated_at": "2026-09-27T17:07:34Z",
      "origin_volume": "0.00118",
      "remaining_volume": "0.00118",
      "executed_volume": "0.0",
      "maker_fee": "0.0",
      "taker_fee": "0.0",
      "trades_count": 0
    }
  ],
  "bids": [
    {
      "id": 444677012,
      "uuid": "5c0de1a2-ba95-11f1-aa4a-000000000001",
      "side": "buy",
      "ord_type": "limit",
      "price": "83911.48",
      "avg_price": "0.0",
      "state": "wait",
      "market": "btcusdt",
      "market_type": "spot",
      "created_at": "2026-09-27T17:07:34Z",
      "updated_at": "2026-09-27T17:07:34Z",
      "origin_volume": "0.00118",
      "remaining_volume": "0.00118",
      "executed_volume": "0.0",
      "maker_fee": "0.0",
      "taker_fee": "0.0",
      "trades_count": 0
    }
  ]
}

Example request

curl -s "https://exchange.ex5.com/api/v2/peatio/public/markets/btcusdt/order-book?asks_limit=10&bids_limit=10"

Order book depth (price levels)

GET/api/v2/peatio/public/markets/{market}/depthPublic

Returns aggregated price levels as [price, amount] string pairs, best price first: asks from the lowest price up, bids from the highest price down. timestamp is the server time in Unix seconds.

  • Asks are sorted by ascending price, bids by descending price.

Parameters

NameInTypeDescription
marketrequiredpathstringMarket id, e.g. btcusdt. Valid ids: GET /api/v2/peatio/public/markets.
limitqueryintegerMaximum price levels per side, 1-1000 (default 300).

Responses

StatusDescription
200Depth snapshot.
422Validation error, e.g. {"errors":["public.market.doesnt_exist"]}.

Response fields

FieldTypeDescription
timestampinteger (unix seconds)Server time.
asksarray<[price, amount]>String pairs, lowest price first.
bidsarray<[price, amount]>String pairs, highest price first.

Example response

JSON
{
  "timestamp": 1790530000,
  "asks": [
    [
      "84897.05",
      "0.0118"
    ],
    [
      "84898.30",
      "0.025"
    ]
  ],
  "bids": [
    [
      "83911.48",
      "0.0118"
    ],
    [
      "83893.62",
      "0.04"
    ]
  ]
}

Example request

curl -s "https://exchange.ex5.com/api/v2/peatio/public/markets/btcusdt/depth?limit=50"

Recent trades

GET/api/v2/peatio/public/markets/{market}/tradesPublic

Returns the most recent public trades of a market, newest first. In this endpoint price, amount and total are JSON numbers (not strings) and may be written in exponent notation (e.g. 7.97e-07); created_at is a Unix time in seconds; taker_type is the side of the taker order.

  • Only limit is applied; other query parameters are ignored.

Parameters

NameInTypeDescription
marketrequiredpathstringMarket id, e.g. btcusdt. Valid ids: GET /api/v2/peatio/public/markets.
limitqueryintegerNumber of trades, 1-1000 (default 100).

Responses

StatusDescription
200Array of public trades.
422Validation error, e.g. {"errors":["public.market.doesnt_exist"]}.

Response fields

FieldTypeDescription
idintegerTrade id (unique; do not assume it is sequential).
pricenumberTrade price.
amountnumberTrade amount (base currency).
totalnumberprice x amount (quote currency).
marketstringMarket id.
created_atinteger (unix seconds)Execution time.
taker_typestringSide of the taker order: "buy" or "sell".

Example response

JSON
[
  {
    "id": 1790530000123,
    "price": 84420.55,
    "amount": 0.0125,
    "total": 1055.256875,
    "market": "btcusdt",
    "created_at": 1790530000,
    "taker_type": "buy"
  }
]

Example request

curl -s "https://exchange.ex5.com/api/v2/peatio/public/markets/btcusdt/trades?limit=50"

Candlesticks (OHLCV)

GET/api/v2/peatio/public/markets/{market}/k-linePublic

Returns candles as arrays [time, open, high, low, close, volume], oldest first. time is the candle open time in Unix seconds; prices and volume are JSON numbers (volume in base currency). Without time_from/time_to the latest limit candles are returned.

Parameters

NameInTypeDescription
marketrequiredpathstringMarket id, e.g. btcusdt. Valid ids: GET /api/v2/peatio/public/markets.
periodqueryintegerCandle size in minutes (default 1). One of: 1, 5, 15, 30, 60, 120, 240, 360, 720, 1440, 4320, 10080.
time_fromqueryintegerUnix time in seconds; only candles at or after this time.
time_toqueryintegerUnix time in seconds; only candles up to this time.
limitqueryintegerNumber of candles, 1-10000 (default 30). Ignored when both time_from and time_to are given.

Responses

StatusDescription
200Array of candles.
422Validation error, e.g. {"errors":["public.market.doesnt_exist"]}.

Response fields

FieldTypeDescription
[0] timeinteger (unix seconds)Candle open time.
[1] opennumberOpen price.
[2] highnumberHigh price.
[3] lownumberLow price.
[4] closenumberClose price.
[5] volumenumberVolume in the base currency.

Example response

JSON
[
  [
    1790529540,
    84400.12,
    84455,
    84380.5,
    84420.55,
    0.0425
  ],
  [
    1790529600,
    84420.55,
    84430,
    84390.1,
    84401.2,
    0.0312
  ]
]

Example request

curl -s "https://exchange.ex5.com/api/v2/peatio/public/markets/btcusdt/k-line?period=60&limit=24"

List currencies

GET/api/v2/peatio/public/currenciesPublic

Returns visible currencies with deposit/withdrawal status, fees, minimum amounts, precision and required confirmations. Assets available on several networks list them in networks; the network-specific currency id (e.g. usdt.trc20) is what you use for deposits and withdrawals on that network. Paginated; cached server-side for up to 10 minutes.

Parameters

NameInTypeDescription
typequerystringFilter by type. One of: coin, fiat.
limitqueryintegerPage size, 1-1000 (default 100).
pagequeryintegerPage number, starting at 1 (default 1).

Responses

StatusDescription
200Array of currencies.
422Validation error, e.g. {"errors":["public.market.doesnt_exist"]}.

Response fields

FieldTypeDescription
idstringCurrency code, e.g. "btc", "usdt", "usdt.trc20".
namestringDisplay name.
descriptionstring | nullDescription.
homepagestring | nullHomepage URL.
parent_idstring | nullNative coin of the chain for tokens (e.g. "eth", "trx").
networksarray<CurrencyNetwork>List endpoint only: networks on which the asset can be deposited/withdrawn.
pricestring (decimal)Current reference price (used for limits/valuation).
explorer_transactionstringSingle-currency endpoint only: explorer URL template with #{txid}.
explorer_addressstringSingle-currency endpoint only: explorer URL template with #{address}.
typestring"coin" or "fiat".
deposit_enabledbooleanDeposits currently possible.
withdrawal_enabledbooleanWithdrawals currently possible.
deposit_feestring (decimal)Deposit fee.
min_deposit_amountstring (decimal)Minimum deposit amount.
withdraw_feestring (decimal)Withdrawal fee (in this currency).
min_withdraw_amountstring (decimal)Minimum withdrawal amount.
withdraw_limit_24hstring (decimal)Legacy 24 h withdrawal limit field ("0.0").
withdraw_limit_72hstring (decimal)Legacy 72 h withdrawal limit field ("0.0").
base_factorintegerSmallest-unit factor (10^decimals on chain).
precisionintegerDisplay/amount precision.
positionintegerSort position.
icon_urlstringIcon URL.
min_confirmationsintegerConfirmations required before a deposit is credited.

Example response

JSON
[
  {
    "id": "usdt",
    "name": "USDT",
    "description": null,
    "homepage": null,
    "parent_id": "eth",
    "networks": [
      {
        "name": "ERC-20",
        "long_name": "Ethereum",
        "network_currency": null
      },
      {
        "name": "TRC-20",
        "long_name": "Tron",
        "network_currency": {
          "id": "usdt.trc20",
          "name": "USDT",
          "description": null,
          "homepage": null,
          "parent_id": "trx",
          "price": "1.0",
          "type": "coin",
          "deposit_enabled": true,
          "withdrawal_enabled": true,
          "deposit_fee": "0.0",
          "min_deposit_amount": "15.0",
          "withdraw_fee": "2.0",
          "min_withdraw_amount": "6.0",
          "withdraw_limit_24h": "0.0",
          "withdraw_limit_72h": "0.0",
          "base_factor": 1000000,
          "precision": 2,
          "position": 18,
          "icon_url": "https://example.com/icons/usdt.png",
          "min_confirmations": 30
        }
      }
    ],
    "price": "1.0",
    "type": "coin",
    "deposit_enabled": true,
    "withdrawal_enabled": true,
    "deposit_fee": "0.0",
    "min_deposit_amount": "10.0",
    "withdraw_fee": "2.0",
    "min_withdraw_amount": "6.0",
    "withdraw_limit_24h": "0.0",
    "withdraw_limit_72h": "0.0",
    "base_factor": 1000000,
    "precision": 2,
    "position": 10,
    "icon_url": "https://example.com/icons/usdt.png",
    "min_confirmations": 15
  }
]

Example request

curl -s "https://exchange.ex5.com/api/v2/peatio/public/currencies"

Get a currency

GET/api/v2/peatio/public/currencies/{id}Public

Returns one currency, including block-explorer URL templates (#{txid} / #{address} placeholders). Network currencies such as usdt.trc20 can be requested directly. This endpoint does not include the networks array.

Parameters

NameInTypeDescription
idrequiredpathstringCurrency code, e.g. btc, usdt or a network currency such as usdt.trc20 (see GET /api/v2/peatio/public/currencies).

Responses

StatusDescription
200Currency.
422Validation error, e.g. {"errors":["public.market.doesnt_exist"]}.

Response fields

FieldTypeDescription
idstringCurrency code, e.g. "btc", "usdt", "usdt.trc20".
namestringDisplay name.
descriptionstring | nullDescription.
homepagestring | nullHomepage URL.
parent_idstring | nullNative coin of the chain for tokens (e.g. "eth", "trx").
networksarray<CurrencyNetwork>List endpoint only: networks on which the asset can be deposited/withdrawn.
pricestring (decimal)Current reference price (used for limits/valuation).
explorer_transactionstringSingle-currency endpoint only: explorer URL template with #{txid}.
explorer_addressstringSingle-currency endpoint only: explorer URL template with #{address}.
typestring"coin" or "fiat".
deposit_enabledbooleanDeposits currently possible.
withdrawal_enabledbooleanWithdrawals currently possible.
deposit_feestring (decimal)Deposit fee.
min_deposit_amountstring (decimal)Minimum deposit amount.
withdraw_feestring (decimal)Withdrawal fee (in this currency).
min_withdraw_amountstring (decimal)Minimum withdrawal amount.
withdraw_limit_24hstring (decimal)Legacy 24 h withdrawal limit field ("0.0").
withdraw_limit_72hstring (decimal)Legacy 72 h withdrawal limit field ("0.0").
base_factorintegerSmallest-unit factor (10^decimals on chain).
precisionintegerDisplay/amount precision.
positionintegerSort position.
icon_urlstringIcon URL.
min_confirmationsintegerConfirmations required before a deposit is credited.

Example response

JSON
{
  "id": "btc",
  "name": "Bitcoin",
  "description": null,
  "homepage": null,
  "price": "84836.51",
  "explorer_transaction": "https://explorer.ex5.com/btc/tx/#{txid}",
  "explorer_address": "https://explorer.ex5.com/btc/address/#{address}",
  "type": "coin",
  "deposit_enabled": true,
  "withdrawal_enabled": true,
  "deposit_fee": "0.0",
  "min_deposit_amount": "0.0",
  "withdraw_fee": "0.0005",
  "min_withdraw_amount": "0.001",
  "withdraw_limit_24h": "0.0",
  "withdraw_limit_72h": "0.0",
  "base_factor": 100000000,
  "precision": 8,
  "position": 1,
  "icon_url": "https://example.com/icons/btc.png",
  "min_confirmations": 2
}

Example request

curl -s "https://exchange.ex5.com/api/v2/peatio/public/currencies/btc"

Server time (ISO 8601)

GET/api/v2/peatio/public/timestampPublic

Returns the current server time as an ISO 8601 string in UTC. For API-key nonces prefer GET /api/v2/barong/public/time, which returns Unix seconds.

Responses

StatusDescription
200ISO 8601 string.

Example response

JSON
"2026-09-27T17:12:59+00:00"

Example request

curl -s "https://exchange.ex5.com/api/v2/peatio/public/timestamp"

Server time (Unix seconds)

GET/api/v2/barong/public/timePublic

Returns the authentication server time in Unix seconds. Use it to detect clock skew: API-key nonces must be within 5 seconds of server time (in milliseconds).

Responses

StatusDescription
200Server time.

Response fields

FieldTypeDescription
timeinteger (unix seconds)Current server time.

Example response

JSON
{
  "time": 1790530000
}

Example request

curl -s "https://exchange.ex5.com/api/v2/barong/public/time"