/api/sd/quality
GETTersedia

Matriks kualitas data (tampilan kolektor)

Lapisan data mandiri: matriks kualitas data (bursa × keluarga data)

GET/api/sd/quality

Permintaan

Endpoint ini tidak menerima parameter.

Contoh permintaan

curl -s "https://www.coinboss.com/api/sd/quality"

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 }`.
nownumbermsWaktu server saat respons disusun.
familiesarray—Keluarga data yang diperiksa untuk setiap bursa, dalam urutan tampilan.
families[]string—ID keluarga: `ticker`, `oi`, `funding`, `funding_settle`, `liquidation`, `ls`, `spot`, atau `sd_contracts`.
exchangesarray—Bursa.
exchanges[]string—Bursa.
matrixobject—Matriks dengan kunci baris dan kolom. kunci dinamis: aster,backpack,binance,bingx,bitfinex,bitget
matrix.{*}object—Matriks dengan kunci baris dan kolom. kunci dinamis: ticker,oi,funding,funding_settle,liquidation,ls
matrix.{*}.tickerobject—Kesegaran ticker futures bursa: `status`, jumlah baris, `age_s`, serta jendela segar / layak pakai. Kunci map adalah ID bursa. bisa tidak ada
matrix.{*}.ticker.statusstring—Status. bisa tidak ada
matrix.{*}.ticker.rowsnumber—Baris hasil. bisa tidak ada
matrix.{*}.ticker.rows_freshnumber—Baris yang diperbarui dalam jendela kesegaran. bisa tidak ada
matrix.{*}.ticker.rows_usablenumber—Baris dalam jendela layak pakai. bisa tidak ada
matrix.{*}.ticker.rows_orphannumber—Baris yang kontraknya sudah tidak tercatat. bisa tidak ada
matrix.{*}.ticker.rows_invalidnumber—Baris yang ditolak validasi. bisa tidak ada
matrix.{*}.ticker.age_snumbersJumlah detik sejak baris ini terakhir diperbarui. bisa tidak ada
matrix.{*}.ticker.fresh_within_snumbersJendela kesegaran: data yang lebih baru dari ini dianggap segar. bisa tidak ada
matrix.{*}.ticker.usable_within_snumbersData yang lebih lama dari ini tidak dipakai sama sekali. bisa tidak ada
matrix.{*}.oiobject—Open interest. bisa tidak ada
matrix.{*}.oi.statusstring—Status. bisa tidak ada
matrix.{*}.oi.rowsnumber—Baris hasil. bisa tidak ada
matrix.{*}.oi.rows_freshnumber—Baris yang diperbarui dalam jendela kesegaran. bisa tidak ada
matrix.{*}.oi.rows_usablenumber—Baris dalam jendela layak pakai. bisa tidak ada
matrix.{*}.oi.rows_orphannumber—Baris yang kontraknya sudah tidak tercatat. bisa tidak ada
matrix.{*}.oi.rows_invalidnumber—Baris yang ditolak validasi. bisa tidak ada
matrix.{*}.oi.age_snumbersJumlah detik sejak baris ini terakhir diperbarui. bisa tidak ada
matrix.{*}.oi.fresh_within_snumbersJendela kesegaran: data yang lebih baru dari ini dianggap segar. bisa tidak ada
matrix.{*}.oi.usable_within_snumbersData yang lebih lama dari ini tidak dipakai sama sekali. bisa tidak ada
matrix.{*}.fundingobject—Blok atau nilai funding rate. bisa tidak ada
matrix.{*}.funding.statusstring—Status. bisa tidak ada
matrix.{*}.funding.rowsnumber—Baris hasil. bisa tidak ada
matrix.{*}.funding.rows_freshnumber—Baris yang diperbarui dalam jendela kesegaran. bisa tidak ada
matrix.{*}.funding.rows_usablenumber—Baris dalam jendela layak pakai. bisa tidak ada
matrix.{*}.funding.rows_orphannumber—Baris yang kontraknya sudah tidak tercatat. bisa tidak ada
matrix.{*}.funding.rows_invalidnumber—Baris yang ditolak validasi. bisa tidak ada
matrix.{*}.funding.age_snumbersJumlah detik sejak baris ini terakhir diperbarui. bisa tidak ada
matrix.{*}.funding.fresh_within_snumbersJendela kesegaran: data yang lebih baru dari ini dianggap segar. bisa tidak ada
matrix.{*}.funding.usable_within_snumbersData yang lebih lama dari ini tidak dipakai sama sekali. bisa tidak ada
matrix.{*}.funding.rows_unknown_intervalnumbercountBaris funding yang diperbarui dalam 4 jam terakhir tetapi interval penyelesaiannya tidak diketahui, sehingga tidak dapat dinormalkan ke 8 jam; satu baris seperti ini saja membuat sel menjadi `partial`. bisa tidak ada
matrix.{*}.funding.rows_no_next_timenumbermsStempel waktu. bisa tidak ada
matrix.{*}.funding.rows_no_livenessnumbercountBaris funding yang baru diperbarui pada kontrak tanpa bukti perdagangan aktif (sudah delisting atau tanpa volume); tidak dihitung dalam jumlah kesegaran. bisa tidak ada
matrix.{*}.funding_settleobject—Kesegaran riwayat penyelesaian funding bursa: `status`, `age_s` dari penyelesaian terbaru, `symbols`, dan `history_from`. bisa tidak ada
matrix.{*}.funding_settle.statusstring—Status. bisa tidak ada
matrix.{*}.funding_settle.age_snumbersJumlah detik sejak baris ini terakhir diperbarui. bisa tidak ada
matrix.{*}.funding_settle.symbolsnumber—Simbol. bisa tidak ada
matrix.{*}.funding_settle.history_fromnumbermsCatatan paling awal yang tersimpan. bisa tidak ada
matrix.{*}.funding_settle.fresh_within_snumbersJendela kesegaran: data yang lebih baru dari ini dianggap segar. bisa tidak ada
matrix.{*}.liquidationobject—Blok likuidasi. bisa tidak ada
matrix.{*}.liquidation.statusstring—Status. bisa tidak ada
matrix.{*}.liquidation.viastring—Jalur pengumpulan. bisa tidak ada
matrix.{*}.liquidation.last_event_age_snumber|nullsJumlah detik sejak event tersebut. bisa tidak ada
matrix.{*}.liquidation.events_1hnumbercountOrder likuidasi yang tersimpan dari bursa ini dalam satu jam terakhir; ukuran order minimum berbeda antar bursa, sehingga jumlahnya tidak dapat dibandingkan. bisa tidak ada
matrix.{*}.liquidation.events_24hnumbercountOrder likuidasi yang tersimpan dari bursa ini dalam 24 jam terakhir; ukuran order minimum berbeda antar bursa, sehingga jumlahnya tidak dapat dibandingkan. bisa tidak ada
matrix.{*}.liquidation.ws_heartbeat_age_snumber|nullsJumlah detik sejak event tersebut. bisa tidak ada
matrix.{*}.liquidation.judged_bystring—Stempel waktu yang menjadi dasar penilaian status. bisa tidak ada
matrix.{*}.liquidation.idle_ok_snumbersJeda terpanjang tanpa likuidasi yang masih dianggap normal untuk bursa ini; jeda yang lebih panjang menandai feed sebagai `stale`. bisa tidak ada
matrix.{*}.lsobject—Kesegaran baris rasio long/short bursa: `status`, jumlah baris, `age_s`, serta jendela segar / layak pakai. bisa tidak ada
matrix.{*}.ls.statusstring—Status. bisa tidak ada
matrix.{*}.ls.reasonstring—Kode alasan. bisa tidak ada
matrix.{*}.spotobject—Blok atau nilai pasar spot. bisa tidak ada
matrix.{*}.spot.statusstring—Status. bisa tidak ada
matrix.{*}.spot.reasonstring—Kode alasan. bisa tidak ada
matrix.{*}.sd_contractsobject—Kesegaran baris kontrak bermargin koin, bermargin USDC, dan kontrak berjangka bursa: `status`, jumlah baris, dan `age_s`. bisa tidak ada
matrix.{*}.sd_contracts.statusstring—Status. bisa tidak ada
matrix.{*}.sd_contracts.reasonstring—Kode alasan. bisa tidak ada
matrix.{*}.funding_settle.reasonstring—Kode alasan. bisa tidak ada
matrix.{*}.liquidation.reasonstring—Kode alasan. bisa tidak ada
matrix.{*}.liquidation.notestring—Catatan. bisa tidak ada
matrix.{*}.ls.rowsnumber—Baris hasil. bisa tidak ada
matrix.{*}.ls.rows_freshnumber—Baris yang diperbarui dalam jendela kesegaran. bisa tidak ada
matrix.{*}.ls.rows_usablenumber—Baris dalam jendela layak pakai. bisa tidak ada
matrix.{*}.ls.rows_orphannumber—Baris yang kontraknya sudah tidak tercatat. bisa tidak ada
matrix.{*}.ls.rows_invalidnumber—Baris yang ditolak validasi. bisa tidak ada
matrix.{*}.ls.age_snumbersJumlah detik sejak baris ini terakhir diperbarui. bisa tidak ada
matrix.{*}.ls.fresh_within_snumbersJendela kesegaran: data yang lebih baru dari ini dianggap segar. bisa tidak ada
matrix.{*}.ls.usable_within_snumbersData yang lebih lama dari ini tidak dipakai sama sekali. bisa tidak ada
matrix.{*}.spot.age_snumbersJumlah detik sejak baris ini terakhir diperbarui. bisa tidak ada
matrix.{*}.spot.coinsnumber—Koin. bisa tidak ada
matrix.{*}.spot.fresh_within_snumbersJendela kesegaran: data yang lebih baru dari ini dianggap segar. bisa tidak ada
matrix.{*}.spot.notestring—Catatan. bisa tidak ada
matrix.{*}.sd_contracts.rowsnumber—Baris hasil. bisa tidak ada
matrix.{*}.sd_contracts.rows_freshnumber—Baris yang diperbarui dalam jendela kesegaran. bisa tidak ada
matrix.{*}.sd_contracts.age_snumbersJumlah detik sejak baris ini terakhir diperbarui. bisa tidak ada
matrix.{*}.sd_contracts.rows_without_oinumbercountBaris kontrak yang tidak memuat nilai open interest dalam USD. bisa tidak ada
matrix.{*}.sd_contracts.rows_oi_promotednumbercountBaris kontrak yang open interest-nya juga dihitung dalam total open interest seluruh situs. bisa tidak ada
matrix.{*}.sd_contracts.fresh_within_snumbersJendela kesegaran: data yang lebih baru dari ini dianggap segar. bisa tidak ada
matrix.{*}.{*}object—Matriks dengan kunci baris dan kolom.
matrix.{*}.{*}.statusstring—Status.
matrix.{*}.{*}.reasonstring—Kode alasan. bisa tidak ada
matrix.{*}.{*}.age_snumbersJumlah detik sejak baris ini terakhir diperbarui. bisa tidak ada
matrix.{*}.{*}.coinsnumber—Koin. bisa tidak ada
matrix.{*}.{*}.fresh_within_snumbersJendela kesegaran: data yang lebih baru dari ini dianggap segar. bisa tidak ada
matrix.{*}.{*}.notestring—Catatan. bisa tidak ada
matrix.{*}.oi.reasonstring—Kode alasan. bisa tidak ada
matrix.{*}.{*}.rowsnumber—Baris hasil. bisa tidak ada
matrix.{*}.{*}.rows_freshnumber—Baris yang diperbarui dalam jendela kesegaran. bisa tidak ada
matrix.{*}.{*}.rows_usablenumber—Baris dalam jendela layak pakai. bisa tidak ada
matrix.{*}.{*}.rows_orphannumber—Baris yang kontraknya sudah tidak tercatat. bisa tidak ada
matrix.{*}.{*}.rows_invalidnumber—Baris yang ditolak validasi. bisa tidak ada
matrix.{*}.{*}.usable_within_snumbersData yang lebih lama dari ini tidak dipakai sama sekali. bisa tidak ada
matrix.{*}.ticker.deadboolean—Hanya ada jika `status` bernilai `stale`: true jika tidak ada baris yang berada dalam jendela layak pakai sekalipun, sehingga bursa dikecualikan dari agregat. bisa tidak ada
matrix.{*}.funding.reasonstring—Kode alasan. bisa tidak ada
matrix.{*}.liquidation.pipeline_last_event_age_snumbersJumlah detik sejak event tersebut. bisa tidak ada
matrix.{*}.liquidation.node_heartbeat_age_snumbersJumlah detik sejak event tersebut. bisa tidak ada
summaryobject—Blok ringkasan.
summary.freshnumbercountJumlah sel bursa × keluarga dengan status `fresh`.
summary.partialnumber—true jika hanya sebagian dari data yang diharapkan tersedia.
summary.stalenumber—Baris atau flag untuk data yang lebih lama daripada jendela kesegaran.
summary.invalidnumbercountJumlah sel bursa × keluarga dengan status `invalid`.
summary.unavailablenumber—Item yang datanya tidak tersedia, beserta alasannya. Tidak pernah dilaporkan sebagai 0.
sourcesarray—Sumber data.
sources[]object—Sumber data.
sources[].exchangestring—ID bursa, huruf kecil (misalnya `binance`).
sources[].familystring—Keluarga data dari job kolektor pemilik catatan kesehatan ini, misalnya `oi`, `funding`, `ticker`.
sources[].endpointstring—Label panggilan upstream yang dipantau: host dan path API publik yang di-polling, atau nama pemeriksaan internal.
sources[].okboolean—false jika percobaan terbaru gagal, yaitu galat terakhir lebih baru daripada keberhasilan terakhir.
sources[].last_ok_age_snumber|nullsJumlah detik sejak event tersebut.
sources[].last_err_age_snumber|nullsJumlah detik sejak event tersebut.
sources[].last_statusnumber—Status HTTP panggilan terbaru.
sources[].last_errorstring|null—Teks galat dari kegagalan terakhir, dipotong hingga 160 karakter; null jika tidak ada yang tercatat.
sources[].last_msnumbermsDurasi panggilan terbaru; null jika tidak diukur.
sources[].fail_streaknumbercountPanggilan gagal berturut-turut hingga saat ini; 0 setelah satu keberhasilan.
sources[].ok_countnumbercountPanggilan berhasil yang tercatat dalam log kesehatan.
sources[].err_countnumbercountPanggilan gagal yang tercatat dalam log kesehatan.
sources[].http_429numbercountPanggilan gagal yang dijawab dengan HTTP 429 (terkena batas laju).
sources[].http_403numbercountPanggilan gagal yang dijawab dengan HTTP 403 (akses ditolak).
sources[].http_5xxnumbercountPanggilan gagal yang dijawab dengan status HTTP 5xx.
sources[].timeoutsnumbercountPanggilan gagal karena waktu habis.
errorsobject—Map dari ID keluarga ke pesan galat untuk keluarga yang pemeriksaannya sendiri gagal; kosong jika semua pemeriksaan berjalan.
alertsarray—Peringatan patroli kualitas data yang masih terbuka atau telah diselesaikan dalam 24 jam terakhir, yang terbuka lebih dahulu (paling banyak 200).
alerts[]object—Satu peringatan: `level`, `exchange`, `family`, `code`, `detail`, waktu dibuka / terakhir terlihat / diselesaikan, `hits`, dan `open`.
alerts[].levelstring—Level.
alerts[].exchangestring—ID bursa, huruf kecil (misalnya `binance`).
alerts[].familystring—Keluarga data yang menjadi pokok peringatan.
alerts[].codestring—Kode.
alerts[].detailstring—Detail.
alerts[].opened_atnumbermsStempel waktu.
alerts[].last_seen_atnumbermsStempel waktu.
alerts[].resolved_atnumber|nullmsStempel waktu.
alerts[].hitsnumbercountJumlah putaran patroli (satu setiap 5 menit) yang mengamati kondisi tersebut sejak peringatan dibuka.
alerts[].openboolean—Harga pembukaan periode tersebut.
monitorobject—Kesehatan pemantauan itu sendiri: usia putaran patroli terakhir, usia heartbeat kolektor, dan `patrol_ok`.
monitor.alert_job_age_snumbersJumlah detik sejak event tersebut.
monitor.collector_heartbeat_age_snumbersJumlah detik sejak event tersebut.
monitor.patrol_okboolean—true jika patroli berjalan dalam 15 menit terakhir; jika false, daftar `alerts` mungkin sudah tidak mutakhir.
legendobject—Definisi teks biasa untuk setiap status sel.
legend.freshstring—Definisi status `fresh`.
legend.partialstring—true jika hanya sebagian dari data yang diharapkan tersedia.
legend.stalestring—Baris atau flag untuk data yang lebih lama daripada jendela kesegaran.
legend.invalidstring—Definisi status `invalid`.
legend.unavailablestring—Item yang datanya tidak tersedia, beserta alasannya. Tidak pernah dilaporkan sebagai 0.

Dihasilkan 2026-11-11 23:01 UTC dari 1 respons nyata.

Contoh respons

/api/sd/quality · Respons nyata yang direkam 2026-11-13 03:59:27 UTC. Array dan map yang panjang dipersingkat untuk tampilan: alerts berisi 3 item; matrix berisi 29 item; sources berisi 262 item; exchanges berisi 29 item.

  • {
    • "success": true,
    • "now": 1794542357043,
    • "families": [
      • "ticker",
      • "oi",
      • "funding",
      • "funding_settle",
      • "liquidation",
      • "ls",
      • "spot",
      • "sd_contracts"
      ],
    • "exchanges": [
      • "aster",
      • "backpack",
      • "binance",
      • "bingx",
      • "bitfinex",
      • "bitget",
      • "bitstamp",
      • "bitunix"
      ],
    • "matrix": {
      • "aster": { … 8 },
      • "backpack": { … 8 }
      },
    • "summary": {
      • "fresh": 123,
      • "partial": 7,
      • "stale": 1,
      • "invalid": 0,
      • "unavailable": 101
      },
    • "sources": [
      • { … 16 },
      • { … 16 }
      ],
    • "errors": {},
    • "alerts": [
      • { … 10 },
      • { … 10 }
      ],
    • "monitor": {
      • "alert_job_age_s": 20,
      • "collector_heartbeat_age_s": 17,
      • "patrol_ok": true
      },
    • "legend": {
      • "fresh": "data timestamps within the fresh window",
      • "partial": "some rows outside the fresh window or missing a required field",
      • "stale": "no row within the fresh window (dead=true: also outside the usable window, excluded from aggregates)",
      • "invalid": "more than half of usable rows fail sanity checks",
      • "unavailable": "no public source or not collected; shown as —, never 0"
      }
    }

Detail

Autentikasi
Tidak ada. Endpoint publik.
Batas permintaan
1200 permintaan per menit per IP
Cache server
20s
Mikro-cache edge
10s
Frekuensi pembaruan
matriks dihitung saat diminta (memo dalam proses 20 s); job peringatan setiap 5 min
Jendela
status terbaru; peringatan yang terbuka atau terselesaikan dalam 24 h terakhir
Sumber data
Matriks kesegaran data (bursa x keluarga data) yang dihitung sendiri dari stempel waktu tabel yang dikumpulkan CoinBoss sendiri.
Cakupan bursa
semua bursa yang ada di keluarga data mana pun yang dikumpulkan; sumber yang tidak ada dilaporkan sebagai tidak tersedia beserta alasannya
Paginasi
peringatan dibatasi 200
Satuan
status per cell: fresh | partial | stale | invalid | unavailable; ages in seconds
Metode
fresh = >= 90% of live rows inside the family's freshness window (tickers 5 min, OI 15 min / cme 36 h, funding 15 min, long/short 90 min); liquidation feeds judged by WebSocket heartbeat or time since last event; funding settlements fresh within 9 h; spot snapshots within 30 min
Stempel waktu
Milidetik epoch Unix (UTC) kecuali deskripsi kolom menyatakan lain
Format respons
json
Stabilitas
Stabil
Tersedia sejak
2026-11-11

Status langsung

TersediaDiperiksa 2026-11-13 03:59:27 UTCHTTP 2006 msSkema sesuaiTitik data terbaru berusia 20s

Ketersediaan, 30 hari terakhir

100% dari 408 pemeriksaan lolos

Pergeseran skema yang terdeteksi oleh probe terakhir
  • Dikembalikan tetapi tidak didokumentasikan: matrix.{*}.{*}.rows_unknown_interval, matrix.{*}.{*}.rows_no_next_time, matrix.{*}.{*}.rows_no_liveness, matrix.{*}.{*}.symbols, matrix.{*}.{*}.history_from, matrix.{*}.{*}.via, matrix.{*}.{*}.last_event_age_s, matrix.{*}.{*}.events_1h, matrix.{*}.{*}.events_24h, matrix.{*}.{*}.ws_heartbeat_age_s, matrix.{*}.{*}.judged_by, matrix.{*}.{*}.idle_ok_s

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/sd/qualityTersedia
Parameter

Tidak ada parameter.

URL permintaanhttps://www.coinboss.com/api/sd/quality
Pilih endpoint lalu tekan “Kirim permintaan”. Respons, header, dan waktu tempuhnya akan muncul di sini.