Catatan perubahan

Catatan perubahan dan versi

Apa yang berubah di API, versi saat ini, dan aturan kompatibilitasnya.

v1Versi saat ini
2026.11.12Revisi katalog

Pemberian versi dan kompatibilitas

Pemberian versi

  • API publik berversi v1. Prefiks path-nya adalah `/api` dan tidak memuat nomor versi.
  • Katalog memiliki versi berbasis tanggal sendiri (`catalog_version`, misalnya 2026.11.11). Versi ini berubah setiap kali endpoint, parameter, atau dokumentasi berubah.
  • Setiap respons endpoint data mandiri membawa ID `schema` (misalnya `sd.oi.v1`). ID baru hanya diterbitkan jika kolom yang sudah ada berubah makna atau tipe.

Kompatibilitas

  • Penambahan endpoint, parameter opsional, kolom respons, nilai enum, atau bursa adalah perubahan yang tidak merusak kompatibilitas dan dapat terjadi kapan saja. Klien harus mengabaikan kolom yang tidak dikenalnya.
  • Menghapus atau mengganti nama kolom, mengubah tipe atau satuannya, atau menjadikan parameter opsional sebagai wajib adalah perubahan yang merusak kompatibilitas. Perubahan tersebut diumumkan di sini sebelum dirilis.
  • Koreksi adalah pengecualian: perbaikan atas angka yang salah, atau atas input tidak valid yang sebelumnya diterima tanpa peringatan, dirilis segera dan dicantumkan di sini pada hari mulai berlakunya, serta ditandai sebagai breaking jika kode klien mungkin perlu diubah.
  • Angka dapat berubah karena cakupan membaik (bursa atau jenis kontrak baru ditambahkan). Cakupan selalu dilaporkan dalam respons, jadi bandingkan `coverage` sebelum membandingkan total.
  • Data yang tidak ada dikembalikan sebagai `null` dan tercantum di `coverage.unavailable`; data tersebut tidak pernah diganti dengan 0 atau estimasi. Kode yang memperlakukan `null` sebagai 0 akan menghasilkan nilai yang salah.

Penghentian

  • Endpoint yang ditandai `legacy` tetap berfungsi, tetapi pekerjaan baru sebaiknya memakai pengganti yang dicantumkan.
  • Endpoint lawas dihapus paling cepat 90 hari setelah entri penghentiannya muncul di catatan perubahan ini.
  • Endpoint yang ditandai `beta` melayani halaman situs; himpunan kolomnya dapat berubah tanpa pemberitahuan 90 hari, dan setiap perubahan tetap dicantumkan di sini.

Perubahan

Ditambahkan2026.11.12Kompatibel mundur

`/api/currency/ex-table`: `market=perpetual`, `delivery` and `all`, plus one status vocabulary

  • New values of `market`: `perpetual` (perpetual contracts), `delivery` (dated futures) and `all` (spot, perpetual and delivery markets of the coin in one list). They return one row per market and number `rank` inside the requested view.
  • Every per-market row carries `market_status` (`ACTIVE`, `EXPIRING`, `EXPIRED`, `NO_QUOTE`, `STALE`), `reason_code` (`NO_QUOTE`, `EXPIRED`, `STALE`, `UNAVAILABLE` or null), `source_at`, `quality`, `is_stale`, `expires_in_s`, `symbol` and `base`. The state is derived from the contract specification of the exchange (expiry) and from the time the ticker was received. `status` and `status_reason` are unchanged.
  • `EXPIRING` marks a contract that still trades and expires within 24 hours (`meta.expiring_window_s`). Rows that are not `ACTIVE` or `EXPIRING` return `price: null`; no price is carried over from an earlier quote or from another contract.
  • `meta` adds `market_status_counts`, `type_counts` and `type_rankable`. The row order is the same for every caller: rankable rows by `volume_usd` descending, then rows without a quote, expired contracts last.
Ditambahkan2026.11.12Kompatibel mundur

`/api/liquidation-events` adds event / account counts and BTC high, low and range

  • New fields on every row: `btc_high`, `btc_low`, `btc_range` (USD, high − low) and `btc_range_pct` ((high − low) / low × 100), with `btc_range_meta`. Prices are the median of the UTC daily high / low on Binance (BTC/USDT), Coinbase (BTC/USD) and Kraken (BTC/USD) spot. The fields are null unless all three venues have a final daily candle.
  • New fields on `coinboss` rows: `liquidation_count` (de-duplicated liquidation events; not people) and `account_count` (distinct liquidated accounts on exchanges that expose an account identifier, currently Hyperliquid only; `quality` is `PARTIAL`), each with a `_meta` object giving source, window, quality and coverage. Both are null on baseline rows.
  • CoinBoss does not publish a liquidated-trader (people) count; `coverage.metrics.people_count.quality` is `UNAVAILABLE`. `liquidated_traders` and `btc_amplitude` are unchanged: they stay the text recorded in the third-party source and are not copied into the new fields.
Diubah2026.11.12Kompatibel mundur

`/api/currency/ex-table`: per-contract rows carry their own quote and a `status`

  • With `group=pair`, every contract row now uses the ticker of that contract. Before, only the main contract of each exchange had a price and the other rows returned `price: null`.
  • New row fields with `group=pair` and `market=spot`: `status` (`active`, `no_quote`, `not_provided`, `expired`), `status_reason`, `market_type`, `expiry_ts`, `expiry_date`, `native_symbol`, `quote`, `margin_type`, `price_source`, `price_at` and `rank`; the response adds `meta` (freshness window, volume window and unit, sort rule, row counts per status).
  • Rows that are not `active` return `price: null` and are never filled from another contract. `volume_usd` on such rows is `0` only when the exchange reports zero 24h turnover, otherwise `null`.
  • Order with `group=pair`: `active` rows first by `volume_usd` descending (these carry `rank`), then rows without a live quote by `oi_usd` descending, expired contracts last. `contract_type` now follows the exchange contract specification, so dated contracts on Deribit, Bybit, Gate and KuCoin are reported as `delivery`; `expiry` is set for all of them.
  • Requests without `group` return the same rows and fields as before.
Diubah2026.11.12Kompatibel mundur

`/api/liquidation-events` returns the Top 10 with a `source` field

  • This corrects the 2026-11-11 entry below. The historical baseline rows (third-party public historical records) are served again, as recorded and without recalculation.
  • Rows recorded by CoinBoss are UTC daily totals from its own collectors. A day is added only when its total is greater than the 10th place of the list at that time. Every row carries `source` (`historical_baseline` or `coinboss`) and `basis`.
  • The list is sorted by `total_usd` and returns 10 rows. New fields: `data[].total_usd` (same value as `amount_usd`), `data[].source`, `data[].basis` and `threshold_usd`. `coverage` is split into `coverage.baseline` and `coverage.coinboss`; the `coverage.source`, `coverage.from` and `coverage.note` fields introduced on 2026-11-11 moved under them.
Diubah2026.11.12Kompatibel mundur

Kegagalan sumber hulu dijawab dengan HTTP 503 dan body error JSON tetap dipertahankan

  • Permintaan gagal yang sebelumnya dijawab dengan HTTP 502 atau 504 kini dijawab dengan 503 beserta header `Retry-After`. CDN di depan API mengganti body respons 502 dan 504 dengan teksnya sendiri sehingga `code` dan `request_id` hilang; respons 503 diteruskan tanpa perubahan. Nilai `code` tetap sama seperti sebelumnya.
  • Sumber hulu yang gagal di balik satu endpoint tidak lagi memengaruhi endpoint lain: gateway hanya mencoba instans lain saat terjadi error koneksi atau timeout.
  • `/api/sd/options/*` dan `/api/sd/cme/overview` menerima nama koin yang ditulis dalam aksara Tionghoa. Koin yang tidak memiliki pasar tersebut mendapat HTTP 200 dengan agregat `null`, bukan 400.
  • Riwayat penyelesaian funding: celah dalam jendela 30 hari dideteksi dan diisi ulang untuk 150 koin yang paling banyak diperdagangkan di Bybit, OKX, Gate, dan Bitget (40 di HTX), sehingga `cum_7d` dan `cum_30d` lengkap untuk lebih banyak koin.
Diperbaiki2026.11.11Kompatibel mundur

Indeks variabilitas likuidasi diperbaiki; endpoint yang sumbernya tidak tersedia menjawab 503

  • `/api/indicators/cdri`: deret harian kosong karena pengelompokan per hari membaca stempel waktu milidetik sebagai detik. Kini endpoint mengembalikan hingga 90 hari UTC lengkap berisi total likuidasi; `current.days` (kolom baru) adalah jumlah hari yang dipakai, dan `current.cdri` / `current.liqCV` bernilai `null` jika tersedia kurang dari dua hari.
  • `/api/indicators/reddit-subs`: menjawab HTTP 503 dengan kode `UNAVAILABLE` selama sumbernya menolak permintaan, bukan HTTP 500. Jumlah pelanggan hanya disimpan jika sumber mengembalikan angka positif.
  • Body galat pada jawaban HTTP 5xx tidak lagi memuat teks galat upstream di kolom legacy `msg`; kolom tersebut kini berisi pesan generik yang sama dengan `error`.
Diperbaiki2026.11.11Merusak kompatibilitas

Catatan yang berhenti diperbarui ditandai dan dikeluarkan dari total

  • `/api/coins/all` dan `/api/coins/search`: catatan koin yang tidak diperbarui selama lebih dari 48 jam mengembalikan `market_cap` dan `mcap_rank` sebagai `null` dengan `is_stale: true`, dan diurutkan setelah semua baris yang masih mutakhir. Aturan yang berlaku dikembalikan sebagai `stale_rule`.
  • `/api/derivatives/coins-full`: tepat satu baris per koin. Simbol yang dipakai bersama oleh beberapa catatan koin sebelumnya menghasilkan satu baris per catatan; kini baris tersebut memuat nama, kapitalisasi pasar, dan peringkat dari catatan terbesar yang diperbarui dalam 48 jam, atau `null` jika tidak ada. `mcap_rank` adalah kolom baru.
  • `/api/reserves/overview`: setiap baris memiliki `updated_at` dan `is_stale`. `total` kini hanya menjumlahkan bursa yang diperbarui dalam 36 jam; definisi sebelumnya dipertahankan sebagai `total_including_stale`, dan bursa yang dikecualikan dicantumkan dalam `stale_exchanges`.
  • `/api/margin/rates` dan `/api/margin-fee/matrix`: aset dan sel yang rate-nya berhenti diperbarui membawa `is_stale: true`; ambang dan jumlahnya dikembalikan di tingkat teratas.
  • Snapshot harian kapitalisasi pasar global dari 2026-10-28 hingga 2026-11-11 dihitung ulang setelah dua catatan dengan kapitalisasi pasar yang mustahil (lebih besar dari Bitcoin) ditemukan dalam penjumlahan. Kolektor kini menyimpan `null` untuk nilai seperti itu.
Diubah2026.11.11Kompatibel mundur

Gangguan sumber dilaporkan dalam respons, bukan berujung kegagalan atau terlihat seolah mutakhir

  • `/api/indicators/mempool/pools`: jika sumber mining pool tidak menjawab, hasil terakhir yang tersimpan dikembalikan dengan `stale: true`, `cached_at`, dan `stale_reason`, bukan HTTP 500.
  • `/api/etf/funds`: objek baru `frozen_fields` yang menyebutkan kolom tingkat dana yang sumbernya berhenti memublikasikan pada 2026-10-08, beserta tanggal yang dirujuk setiap nilainya.
  • `/api/indicators/halving`: objek baru `current_difficulty` (`value`, `as_of`, `source`). `difficulty` (progres retarget) tetap `null` selama sumbernya tidak tersedia.
  • `/api/browser/detect`: pencarian chain yang gagal tidak lagi dilaporkan sebagai alamat tanpa aktivitas. `kind` bernilai `lookup_failed` jika tidak ada chain yang dapat dikueri.
  • `/api/currency/flows`: dokumentasi kini mencantumkan 22 jendela yang benar-benar disajikan endpoint (5 menit hingga 1 tahun).
Diubah2026.11.11Merusak kompatibilitas

Nilai parameter yang tidak didukung mengembalikan 400, bukan data bawaan

  • `/api/derivatives/kline`: `interval=4h` mengembalikan candlestick 4 jam yang sebenarnya, disusun dari candlestick 1h pada batas UTC (sebelumnya mengembalikan candlestick 1h). Interval apa pun selain `1h`, `4h`, atau `1d` mengembalikan 400.
  • Endpoint opsi di bawah `/api/options/`: `currency` yang tidak didukung mengembalikan 400, bukan data BTC, dan `coin` diterima sebagai alias pada ketujuh endpoint.
  • `/api/etf/flows`, `/api/etf/detail`, `/api/etf/funds`, dan `/api/etf/holdings`: `asset` yang tidak didukung mengembalikan 400, bukan data BTC.
  • `/api/liquidations/coins`: `range` yang tidak didukung mengembalikan 400, bukan data 24h, dan jendela yang berlaku dikembalikan sebagai `range`.
  • `limit` dibatasi hingga 1000 pada `/api/liquidations`, `/api/liquidations/largest`, dan `/api/derivatives/coins-full`. `limit` yang bukan angka memakai nilai bawaan, bukan berujung kegagalan.
Diperbaiki2026.11.11Merusak kompatibilitas

Volume harian dan statistik riset dikoreksi

  • `/api/volume/coin`: `daily_30d` sebelumnya menjumlahkan setiap snapshot 24h bergulir dalam satu hari sehingga volume harian terlalu tinggi sekitar 24 kali. Kini yang diambil adalah snapshot terakhir setiap hari UTC.
  • `/api/research/stats` dengan `topic=derivatives`: `volume_24h_usd` mengalami kelebihan hitung yang sama dan telah dikoreksi.
  • `avg_funding_rate_pct` dalam respons yang sama kini berupa persentase, sekitar 100 kali pecahan mentah yang dikembalikan sebelumnya. Sesuaikan kode yang mengalikannya dengan 100.
Diperbaiki2026.11.11Kompatibel mundur

Endpoint pasar lama mengabaikan baris yang berhenti diperbarui

  • Terdampak: `/api/market/tickers`, `/api/market/volume-rank`, `/api/market/open-interest`, `/api/market/funding`, `/api/market/funding-spread`, `/api/market/long-short`, `/api/market/long-short-v2`, `/api/market/overview`, `/api/p3/volume/overview`, `/api/p3/perp-spot-volume`, `/api/volume/btc-ex-share`, dan `/api/derivatives/coins-full`.
  • Baris hanya dihitung selama masih mutakhir: ticker dalam 1 jam, open interest dalam 3 jam (CME: 120 jam), funding dalam 4 jam, rasio long/short dalam 24 jam.
  • Total menjadi sedikit lebih rendah dan beberapa daftar menjadi lebih pendek. Kontrak yang berhenti diperdagangkan menampilkan harga `null`, bukan nilai terakhirnya.
Diperbaiki2026.11.11Kompatibel mundur

Kontrak berpengali dicocokkan dengan koin dasarnya

  • `/api/funding/coin`, `/api/funding/history`, `/api/funding/chart`, dan `/api/ls/coin` kini mencocokkan kontrak yang dikuotasikan dalam kelipatan suatu koin (misalnya `1000PEPE`) dengan koin dasarnya, sehingga koin-koin ini mencantumkan lebih banyak bursa.
Ditambahkan2026.11.11Kompatibel mundur

Data opsi dari enam bursa

  • Baru: `/api/sd/options/overview`, `/api/sd/options/expiries`, `/api/sd/options/strikes`, `/api/sd/options/chain`, dan `/api/sd/options/history`.
  • Open interest, volume nosional 24h, rasio put/call, max pain, IV ATM, skew 25-delta, dan struktur tenor IV dihitung oleh CoinBoss dari daftar kontrak Deribit, Binance, Bybit, OKX, Gate, dan Coincall.
  • Volume nosional dan nilai transaksi premi adalah kolom terpisah dan tidak pernah dijumlahkan. Kolom yang tidak dipublikasikan suatu bursa bernilai `null` dan tercantum di `coverage.field_gaps`.
  • Riwayat bersifat per jam dan dimulai pada 2026-11-11; jam-jam sebelumnya tidak diisi mundur.
Ditambahkan2026.11.11Kompatibel mundur

Data ETF spot, CME, dan CFTC dari publikasi primer

  • Baru: `/api/sd/etf/overview`, `/api/sd/etf/funds`, dan `/api/sd/etf/history`, disusun dari pengungkapan penerbit. Total mencakup dana yang dapat dikumpulkan CoinBoss; setiap dana lainnya dicantumkan beserta alasannya, dan `totals_scope` selalu `covered_funds_only`.
  • Arus dana dihitung oleh CoinBoss dari saham beredar dan NAV (atau aset bersih dan NAV). Rumus yang dipakai dikembalikan per dana di `flow_method`.
  • Baru: `/api/sd/cme/overview` (volume dan open interest harian delapan produk CME) dan `/api/sd/cme/cot` (posisi mingguan CFTC menurut kategori trader).
  • Harga penyelesaian CME belum dikumpulkan. Angka USD memakai harga acuan yang diberi label (`price_src`), dan karena itu ikhtisar ditandai PARTIAL.
Ditambahkan2026.11.11Kompatibel mundur

Kedalaman order book dan slippage

  • Baru: `/api/sd/liquidity`, `/api/sd/liquidity/history`, dan `/api/sd/liquidity/rank`.
  • Kedalaman dalam ±0.5 %, ±1 %, dan ±2 % dari harga tengah serta slippage market order senilai 10k / 100k / 1M USD dihitung dari snapshot order book nyata 24 bursa, secara terpisah untuk pasar perpetual dan spot.
  • Snapshot yang tidak menjangkau suatu rentang ditandai `complete: false`, dilaporkan sebagai batas bawah, dan tidak dimasukkan ke agregat. `n_included` menunjukkan berapa order book yang tercakup dalam suatu total.
  • `/api/indicators/large-orderbook` adalah keluaran model, bukan order book; gunakan endpoint baru untuk likuiditas terpasang.
Ditambahkan2026.11.11Kompatibel mundur

Basis dari harga mark dan harga indeks bursa

  • Baru: `/api/sd/basis`, `/api/sd/basis/history`, dan `/api/sd/basis/rank`.
  • Basis perpetual = (mark − index) ÷ index × 100 di bursa yang sama; basis spot-perpetual membandingkan perpetual dengan pasar spot bursa yang sama; kontrak berjangka menambahkan nilai disetahunkan.
  • Agregat diberikan dalam bentuk berbobot OI, berbobot volume, dan median. Baris yang tidak lolos aturan penyertaan tetap dikembalikan dengan `excluded_reason`.
  • Riwayat per jam dimulai pada 2026-11-11.
Diubah2026.11.11Kompatibel mundur

Map ikon memakai origin situs publik

  • `/api/coin-icons` dan `/api/exchange-icons` mengembalikan URL ikon pada `https://www.coinboss.com`, origin yang sama dengan semua endpoint publik lainnya. Path-nya (`/api/coin-icon/{coin}`, `/api/exchange-icon/{exchange}`) tidak berubah.
Tidak digunakan lagi2026.11.11Kompatibel mundur

`/api/basis/list` dan `/api/cftc/cot` ditandai legacy

  • Gunakan `/api/sd/basis/rank` sebagai pengganti `/api/basis/list`, dan `/api/sd/cme/cot` sebagai pengganti `/api/cftc/cot`. Endpoint lawas tetap berfungsi.
Diubah2026.11.11Kompatibel mundur

`/api/liquidation-events` kini hanya menyajikan catatan CoinBoss

  • Daftar disusun dari order likuidasi yang diterima CoinBoss dari feed bursa. Riwayatnya dimulai pada 2026-08-19; tanggal sebelumnya tidak mengembalikan baris.
  • Nama dan tipe kolom tidak berubah.
Dihapus2026.11.11Kompatibel mundur

Endpoint operasional tidak lagi dapat dijangkau dari internet

  • `/api/health/alerts`, `/api/health/server`, `/api/health/history`, dan `/api/health/ch-read` menjawab 404 untuk permintaan publik. Endpoint tersebut tidak pernah menjadi bagian dari API publik.
  • Gunakan `/api/meta/status` untuk status layanan dan `/api/meta/quality` untuk kesegaran data.
Ditambahkan2026.11.11Kompatibel mundur

Pusat developer dan metadata API yang dapat dibaca mesin

  • Baru: `/api/meta/catalog`, `/api/meta/endpoint`, `/api/meta/status`, `/api/meta/quality`, `/api/meta/changelog`, dan `/api/meta/openapi`.
  • Tabel kolom dan contoh respons dalam dokumentasi dihasilkan dari respons nyata oleh probe API yang memanggil setiap endpoint publik setiap 5 menit.
  • Status endpoint (available / partial / degraded / down / unavailable) kini berasal dari panggilan nyata tersebut, bukan dari status proses.
Diubah2026.11.11Kompatibel mundur

Body error seragam dan ID permintaan

  • Setiap respons membawa header `X-Request-Id`; body error mengulanginya sebagai `request_id`.
  • Body error kini berbentuk `{ success: false, code, error, request_id }` di semua endpoint. `error` tetap berupa string, sehingga klien yang sudah ada tetap berfungsi.
  • Rute `/api/*` yang tidak dikenal menjawab JSON 404 (`NOT_FOUND`), bukan halaman HTML.
  • Respons HTTP 429 menyertakan `Retry-After`.
  • Pesan error 5xx bersifat generik; detail internal tidak lagi ditampilkan.
Ditambahkan2026.11.11Kompatibel mundur

Endpoint data mandiri dengan cakupan dan kualitas di setiap respons

  • Baru: `/api/sd/oi`, `/api/sd/funding`, `/api/sd/liquidations`, `/api/sd/volume`, `/api/sd/ls`, `/api/sd/coin`, dan `/api/sd/quality`.
  • Open interest melaporkan kontrak USDT / USDC / bermargin koin / berjangka secara terpisah dan menyatakan bursa mana yang melaporkan angka dua sisi.
  • Funding dikembalikan dalam bentuk mentah, beserta intervalnya, dinormalkan ke 8h, dan disetahunkan; bursa yang kontraknya tidak aktif dikecualikan dan dicantumkan.
Tidak digunakan lagi2026.11.11Kompatibel mundur

`/api/market/long-short` ditandai legacy

  • Gunakan `/api/market/long-short-v2` untuk tampilan daftar atau `/api/sd/ls` untuk rasio akun / posisi / taker per bursa.
Diubah2026.10.31Kompatibel mundur

Kolom ikon mengembalikan path same-origin

  • Kolom seperti `image_url` / `icon` kini berisi path CoinBoss (`/api/coin-icon/...`), bukan URL pihak ketiga.
  • Koin tanpa ikon terverifikasi mengembalikan `null`; klien sebaiknya menampilkan placeholder sendiri.
Diperbaiki2026.10.24Kompatibel mundur

Baris usang tidak lagi masuk ke agregat

  • Total open interest, funding, dan long/short hanya memakai baris yang diperbarui dalam jendela kesegaran (lebih panjang untuk CME, yang memublikasikan harian).
  • Kontrak yang sudah delisting berhenti berkontribusi pada total begitu pembaruan terakhirnya keluar dari jendela.

Endpoint lawas

Dipertahankan demi kompatibilitas. Endpoint ini tetap berfungsi; integrasi baru sebaiknya memakai penggantinya.

EndpointPenggantiDeskripsi
/api/market/long-short/api/market/long-short-v2Dipertahankan untuk integrasi yang sudah ada. Gunakan `/api/market/long-short-v2` (menambahkan filter bursa) atau `/api/sd/ls` (per bursa, dengan akun / posisi / taker dipisahkan).
/api/basis/list/api/sd/basis/rank`apr_pct` adalah `basis_pct × 3 × 365`, ekstrapolasi sederhana dari basis perpetual saat ini seolah-olah dibayarkan setiap 8 jam; nilai ini bukan imbal hasil funding maupun imbal hasil kontrak berjangka. `/api/sd/basis` melaporkan basis mark-indeks, spot-perpetual, dan kontrak berjangka secara terpisah.