/api/currency/ex-table
GETTersedia

Tabel bursa di halaman koin

Tabel bursa di halaman koin (harga, volume, OI, funding per bursa; spot atau futures)

GET/api/currency/ex-table

Permintaan

Parameter kueri

NamaTipeWajibDefaultNilai yang diizinkanDeskripsi
coinstringWajib——Simbol koin dasar (huruf besar, mis. BTC). Contoh: BTC
marketstringOpsionalfuturesfutures, spot, perpetual, delivery, all`futures` (default) and `spot` return one row per exchange (`futures` one row per contract with `group=pair`). `perpetual`, `delivery` and `all` always return one row per market: perpetual contracts only, dated futures only, or every spot, perpetual and delivery market of the coin in one list. Any other value is treated as `futures`. Contoh: futures
groupstringOpsional—pair`pair` returns one row per contract instead of one row per exchange. Each row then carries `status`, `status_reason`, `market_type`, `expiry_ts`, `expiry_date`, `native_symbol`, `quote`, `margin_type`, `price_source`, `price_at` and `rank`, and the response adds a `meta` object. Rows whose `status` is not `active` (no live quote, no feed, expired) carry no price.

Contoh permintaan

curl -s "https://www.coinboss.com/api/currency/ex-table?coin=BTC&market=futures"

Kolom respons

Tabel kolom dihasilkan dari respons nyata, sehingga memuat persis apa yang dikembalikan endpoint. Path memakai a[] untuk item array dan {*} untuk objek yang kuncinya berupa nama dinamis seperti koin atau bursa.

KolomTipeSatuanDeskripsi
successboolean—true jika permintaan berhasil. Jika gagal, body-nya adalah `{ success: false, code, error, request_id }`.
coinstring—Simbol koin, huruf besar (misalnya BTC).
marketstring—Pasar.
dataarray—Payload.
data[]object—Payload.
data[].exchangestring—ID bursa, huruf kecil (misalnya `binance`).
data[].namestring—Nama.
data[].pairstring|null—Exchange symbol of the row's contract: the highest-volume contract of the exchange, or the exact contract with `group=pair` (the symbol as CoinBoss normalises it; the name used by the exchange is `native_symbol`); null when the exchange has open interest but no ticker.
data[].pricenumber|null—Harga terakhir dalam mata uang kuotasi (USD atau USDT kecuali dinyatakan lain).
data[].change_pctnumber|null%Perubahan persentase.
data[].volume_usdnumber|nullUSDVolume dalam nosional USD.
data[].oi_usdnumber|nullUSDOpen interest dalam nosional USD.
data[].ls_rationumber|null—Rasio long/short.
data[].liq_longnumber|null—Long yang terlikuidasi.
data[].liq_shortnumber|null—Short yang terlikuidasi.
data[].fundingnumber|null—Blok atau nilai funding rate.
data[].funding_interval_hnumber|nullhInterval funding. bisa tidak ada
data[].funding_8hnumber|nullfraction`funding` yang dinormalkan ke interval 8 jam: rate × 8 ÷ `funding_interval_h` (0.0001 = 0.01 %); null jika interval penyelesaian tidak diketahui. bisa tidak ada
data[].next_funding_timenumber|nullmsStempel waktu. bisa tidak ada
data[].multipliernumberxJumlah koin yang diwakili satu unit kuotasi kontrak (1000 untuk kontrak bergaya 1000PEPE, selain itu 1). bisa tidak ada
data[].vol_change_pctnumber|null%Perubahan volume 24h bursa terhadap snapshot per jamnya yang diambil 23–25 jam sebelumnya; null jika tidak ada snapshot atau pada baris non-utama.
data[].oi_change_pctnumber|null%Perubahan open interest bursa terhadap snapshot per jam kontrak yang sama yang paling dekat dengan 24 jam lalu (±1 h); null jika tidak ada baseline.
data[].oi_vol_change_pctnumber|null%Perubahan rasio open interest ÷ volume 24h terhadap rasio yang sama 24 jam sebelumnya.
data[].price_rawnumber|nullUSDHarga terakhir persis seperti kuotasi bursa untuk kontrak tersebut, sebelum dibagi `multiplier`; sama dengan `price` jika `multiplier` bernilai 1. bisa tidak ada
data[].liquidity_usdnumber|nullUSDNosional order book bid ditambah ask dalam rentang ±1 % dari harga tengah di bursa ini; merupakan batas bawah jika `liquidity_complete` bernilai false. bisa tidak ada
data[].liquidity_reach_pctnumber%Jarak dari harga tengah yang benar-benar tercakup oleh order book yang dikembalikan bursa, yaitu yang lebih kecil di antara sisi bid dan ask. bisa tidak ada
data[].liquidity_completeboolean—True jika order book yang dikembalikan menjangkau seluruh rentang ±1 % di kedua sisi; false berarti `liquidity_usd` lebih rendah daripada nilai sebenarnya. bisa tidak ada
data[].oi_vol_rationumber|null—Open interest dibagi volume 24h.
data[].pair_dispstring—Bentuk tampilan pasangan sebagai base/quote (`BTC/USDT`, `1000PEPE/USDT`, `BTC/USD` untuk CME dan bursa bermargin USD).
data[].contract_typestring|null—`perpetual` or `delivery` (dated futures); null on spot rows. With `group=pair` it comes from the exchange's contract specification where CoinBoss has one, otherwise from the expiry code in the symbol.
data[].expirystring(decimal)|null—Expiry date code YYMMDD of a dated contract. With `group=pair` it is derived from `expiry_ts` for every contract that has an expiry; otherwise it is the six-digit symbol suffix. Null for contracts without an expiry and for CME rows.
data[].market_typestring—`spot`, `perpetual` or `delivery`. bisa tidak ada
data[].expiry_tsnumber|nullmsExpiry / delivery time of the contract, Unix milliseconds; null when the contract has no expiry or the exchange does not publish one. bisa tidak ada
data[].expiry_datestring|null—Expiry date as YYYY-MM-DD (UTC); null when the contract has no expiry. bisa tidak ada
data[].native_symbolstring|null—Contract name exactly as the exchange lists it (`BTCUSDT_270326`, `BTC-PERPETUAL`, `XBTMZ26`); null when CoinBoss holds no contract specification for the venue and on spot rows. bisa tidak ada
data[].quotestring|null—Quote currency of the contract or spot pair (`USDT`, `USDC`, `USD`, …). bisa tidak ada
data[].margin_typestring|null—Margin asset class from the contract specification: `usdt`, `usdc`, `coin`, `usd` or `other`; null when unknown and on spot rows. bisa tidak ada
data[].statusstring—Market state of the row (only with `group=pair` and `market=spot`): `active` = a real quote received within the last hour and a 24h volume above zero; `no_quote` = the contract is listed but has no usable quote, see `status_reason`; `not_provided` = the exchange publishes no real-time ticker that CoinBoss collects (CME); `expired` = the contract is past its expiry. Rows that are not `active` carry no price. bisa tidak ada
data[].status_reasonstring|null—Why a row is not `active`: `expired`, `no_realtime_feed`, `quote_stale` (last quote older than one hour), `no_price`, `no_volume` (the exchange reports no 24h volume) or `no_trades_24h` (the reported 24h volume is zero). Null on active rows. bisa tidak ada
data[].price_sourcestring|null—Dataset the row's price and volume were read from: `market_tickers`, `sd_contract_latest` or `spot_coin_ex_vol`; null when no ticker exists for the contract. bisa tidak ada
data[].price_atnumber|nullmsTime the row's ticker was received, Unix milliseconds. On rows that are not `active` it is the time of the last ticker seen (no price is returned for it), or null. bisa tidak ada
data[].symbolstring—Symbol of the row as CoinBoss stores it (`BTCUSDT`, `BTCUSD_270326`, `BTC-27NOV26`); same value as `pair` on contract rows, base + quote on spot rows. The name used by the exchange is `native_symbol`. bisa tidak ada
data[].basestring—Underlying of the contract or spot pair as traded. Contracts quoted in multiples of the coin keep the multiplier (`1000PEPE`). bisa tidak ada
data[].market_statusstring—State of the market: `ACTIVE` = not expired, a quote of this market received within the last hour and a 24h volume above zero; `EXPIRING` = active and the exchange lists its expiry within the next 24 hours; `EXPIRED` = past its expiry; `STALE` = the last quote is older than one hour; `NO_QUOTE` = no usable quote, see `reason_code`. Only `ACTIVE` and `EXPIRING` rows carry a price and a `rank`. bisa tidak ada
data[].reason_codestring|null—Why the row carries no price: `NO_QUOTE` (listed, but no trades in 24h or no last price / volume reported), `EXPIRED`, `STALE`, or `UNAVAILABLE` (CoinBoss collects no real-time ticker for this market, e.g. CME). Null on `ACTIVE` and `EXPIRING` rows. The finer cause is in `status_reason`. bisa tidak ada
data[].source_atnumber|nullmsTime the ticker behind this row was received from the exchange, Unix milliseconds; null when no ticker exists. Same value as `price_at`. bisa tidak ada
data[].qualitystring—`live` = `source_at` within the last hour, `stale` = older, `none` = no ticker for this market. bisa tidak ada
data[].is_staleboolean—True when `quality` is `stale`. bisa tidak ada
data[].expires_in_snumber|nullsSeconds until the expiry of the contract at the time the table was assembled; negative once expired; null when the contract has no expiry. bisa tidak ada
data[].ranknumber|null—Position among rankable rows (`market_status` `ACTIVE` or `EXPIRING`) ordered by `volume_usd` descending, starting at 1 and counted inside the requested view; null on rows that are not rankable. bisa tidak ada
data[].marketstring—Pasar. bisa tidak ada
metaobject— bisa tidak ada
meta.groupstring—`pair` = one row per contract, `exchange` = one row per spot venue. bisa tidak ada
meta.as_ofnumbermsTime the table was assembled, Unix milliseconds. bisa tidak ada
meta.fresh_window_snumbersMaximum age of a quote for a row to count as `active`. bisa tidak ada
meta.expiring_window_snumbersA contract whose expiry is closer than this is reported as `EXPIRING`. bisa tidak ada
meta.volume_windowstring—Window of `volume_usd`: `24h_rolling`, the rolling 24-hour turnover each exchange reports. bisa tidak ada
meta.volume_unitstring—Unit of `volume_usd`. bisa tidak ada
meta.sortstring—Row order of the response in words. bisa tidak ada
meta.countsobject—Number of rows per `status`. bisa tidak ada
meta.counts.activenumbercountRows with `status=active`. bisa tidak ada
meta.counts.no_quotenumbercountRows with `status=no_quote`. bisa tidak ada
meta.counts.not_providednumbercountRows with `status=not_provided`. bisa tidak ada
meta.counts.expirednumbercountRows with `status=expired`. bisa tidak ada
meta.market_status_countsobject—Number of rows per `market_status`. bisa tidak ada
meta.market_status_counts.ACTIVEnumbercountRows with `market_status=ACTIVE`. bisa tidak ada
meta.market_status_counts.EXPIRINGnumbercountRows with `market_status=EXPIRING`. bisa tidak ada
meta.market_status_counts.EXPIREDnumbercountRows with `market_status=EXPIRED`. bisa tidak ada
meta.market_status_counts.NO_QUOTEnumbercountRows with `market_status=NO_QUOTE`. bisa tidak ada
meta.market_status_counts.STALEnumbercountRows with `market_status=STALE`. bisa tidak ada
meta.type_countsobject—Number of rows per market type. bisa tidak ada
meta.type_counts.spotnumbercountSpot rows in the response. bisa tidak ada
meta.type_counts.perpetualnumbercountPerpetual rows in the response. bisa tidak ada
meta.type_counts.deliverynumbercountDelivery (dated futures) rows in the response. bisa tidak ada
meta.type_rankableobject—Number of rankable rows (`ACTIVE` or `EXPIRING`) per market type. bisa tidak ada
meta.type_rankable.spotnumbercountSpot rows that are rankable (`ACTIVE` or `EXPIRING`). bisa tidak ada
meta.type_rankable.perpetualnumbercountPerpetual rows that are rankable. bisa tidak ada
meta.type_rankable.deliverynumbercountDelivery rows that are rankable. bisa tidak ada

Dihasilkan 2026-11-12 10:57 UTC dari 9 respons nyata.

Contoh respons

/api/currency/ex-table?coin=BTC&market=futures · Respons nyata yang direkam 2026-11-13 03:57:28 UTC. Array dan map yang panjang dipersingkat untuk tampilan: data berisi 24 item.

  • {
    • "success": true,
    • "coin": "BTC",
    • "market": "futures",
    • "data": [
      • { … 26 },
      • { … 26 }
      ]
    }

Sampel terverifikasi

Selain contoh di atas, probe memanggil endpoint ini dengan parameter berikut dan memeriksa skemanya setiap kali.

ParameterHTTPLatensiHasil
coin=BTC&market=all200139 msLolos
coin=BTC&market=perpetual2001 msLolos
coin=BTC&market=delivery2002 msLolos
coin=BTC&group=pair&market=futures2002 msLolos
coin=BTC&market=spot2001 msLolos
coin=ETH&market=futures200105 msLolos
coin=SOL&market=futures20067 msLolos
coin=ARKM&market=futures20055 msLolos

Diperiksa 2026-11-13 03:57:28 UTC

Detail

Autentikasi
Tidak ada. Endpoint publik.
Batas permintaan
1200 permintaan per menit per IP
Cache server
30s
Mikro-cache edge
10s
Frekuensi pembaruan
ticker / OI / funding setiap 60 s hingga 5 min; kedalaman order book setiap 5 min; volume spot setiap 10 min; likuidasi real-time
Jendela
snapshot terbaru (ticker 1 h, OI 3 h, funding 4 h, long/short 24 h, kedalaman 30 min); perubahan 24 h dibandingkan arsip per jam
Sumber data
Statistik futures dan spot per bursa untuk satu koin, disusun dari kolektor CoinBoss sendiri yang melakukan polling ke API publik sekitar 30 bursa (mis. binance, okx, bybit, bitget, gate, hyperliquid).
Cakupan bursa
futures: semua bursa yang memiliki ticker segar untuk koin tersebut (hingga 24); kedalaman dari 15 bursa untuk sekitar 28 koin; spot (market=spot): 14 bursa spot
Pengurutan
volume_usd desc. With `group=pair` and with `market=spot|perpetual|delivery|all`: rankable rows (`market_status` ACTIVE or EXPIRING) first by volume_usd desc (these carry `rank`), then rows without a live quote by oi_usd desc, expired contracts last; ties by expiry, exchange and symbol, so every request made at the same moment gets the same order
Satuan
price in USD (multiplier contracts normalized to one coin); volume / OI / liquidations / depth in USD; funding as raw fraction and 8 h-normalized fraction; changes in percent
Metode
per exchange (futures): volume = SUM(volume_usd); funding_8h = rate x 8 / interval_hours of the largest-OI contract; depth_1pct_usd = bid + ask notional within +/- 1% of mid; OI 24 h change by same-contract pairing; volume change vs the ticker archive 23-25 h earlier; liquidations = 24 h SUM(value_usd)
Stempel waktu
Milidetik epoch Unix (UTC) kecuali deskripsi kolom menyatakan lain
Format respons
json
Stabilitas
Stabil

Status langsung

TersediaDiperiksa 2026-11-13 03:57:28 UTCHTTP 200139 msSkema sesuai

Ketersediaan, 30 hari terakhir

99.76% dari 411 pemeriksaan lolos

Error

Panggilan yang gagal memiliki satu bentuk yang sama di semua endpoint. Daftar lengkapnya ada di halaman error. Error dan batas permintaan →

KodeHTTPArtiTindakan
INVALID_PARAM400Parameter wajib tidak ada atau suatu nilai tidak diterima. `param` menyebutkan nama parameternya jika diketahui.Jangan mengulang tanpa perubahan; perbaiki permintaannya.
UNAUTHORIZED401Header `CB-API-KEY` dikirim tetapi kuncinya tidak dikenal atau sudah dicabut. Data publik tidak memerlukan kunci — hapus header tersebut atau gunakan kunci yang valid.Jangan mengulang tanpa perubahan.
FORBIDDEN403Rute ini bukan bagian dari API publik (internal atau khusus akun).Jangan mengulang.
NOT_FOUND404Rute tidak dikenal, atau koin / bursa / dana yang diminta tidak ada.Jangan mengulang; periksa path dan pengenal terhadap katalog.
RATE_LIMITED429Jumlah permintaan melebihi batas per menit. `Retry-After` memberikan jumlah detik untuk menunggu.Tunggu selama `Retry-After`, lalu ulangi dengan backoff.
INTERNAL500Error server yang tidak terduga. Pesannya sengaja dibuat generik; sertakan `request_id` saat melaporkannya.Ulangi sekali setelah beberapa detik; laporkan beserta ID permintaan jika masih terjadi.
UPSTREAM_FAILED503Sumber data di balik endpoint ini tidak menjawab tepat waktu. Tidak ada angka usang atau angka pengganti yang dikembalikan sebagai gantinya.Ulangi dengan backoff; periksa halaman status.
UNAVAILABLE501 / 503Dataset untuk sementara belum siap (cache sedang diisi) atau endpoint belum memiliki sumber publik yang sah.Ulangi nanti; katalog menandai endpoint yang memang tidak tersedia secara desain.
REQUEST_FAILED200Beberapa endpoint lama menjawab HTTP 200 dengan `success: false`. Selalu periksa `success`, bukan hanya status HTTP.Bergantung pada pesannya; perlakukan sebagai permintaan yang gagal.

Coba

GET/api/currency/ex-tableTersedia
Parameter

string — Base coin symbol (uppercase, e.g. BTC).

string · default futures — `futures` (default) and `spot` return one row per exchange (`futures` one row per contract with `group=pair`). `perpetual`, `delivery` and `all` always return one row per market: perpetual contracts only, dated futures only, or every spot, perpetual and delivery market of the coin in one list. Any other value is treated as `futures`.

string — `pair` returns one row per contract instead of one row per exchange. Each row then carries `status`, `status_reason`, `market_type`, `expiry_ts`, `expiry_date`, `native_symbol`, `quote`, `margin_type`, `price_source`, `price_at` and `rank`, and the response adds a `meta` object. Rows whose `status` is not `active` (no live quote, no feed, expired) carry no price.

URL permintaanhttps://www.coinboss.com/api/currency/ex-table?coin=BTC&market=futures
Pilih endpoint lalu tekan “Kirim permintaan”. Respons, header, dan waktu tempuhnya akan muncul di sini.