Rantai opsi (satu bursa)
Call dan put berdampingan untuk setiap strike pada satu jatuh tempo di satu bursa: open interest, volume, harga mark, IV mark / bid / ask, dan greeks sebagaimana dipublikasikan bursa.
/api/sd/options/chainPermintaan
Parameter kueri
| Nama | Tipe | Wajib | Default | Nilai yang diizinkan | Deskripsi |
|---|---|---|---|---|---|
| coin | string | Wajib | — | — | Simbol koin, tidak peka huruf besar/kecil (misalnya `BTC`). Nilai yang tidak diisi atau salah format mengembalikan 400. Contoh: BTC |
| exchange | string | Wajib | — | deribit, binance, bybit, okx, gate, coincall | ID bursa. `all` tidak diterima di sini: satu rantai opsi hanya milik satu bursa. Contoh: okx |
| expiry | string | Opsional | — | — | Tanggal jatuh tempo UTC dalam format `YYYY-MM-DD`. Default: jatuh tempo terdekat. `all` tidak diterima. |
| kind | string | Opsional | — | inverse, linear | Keluarga kontrak jika bursa mencatatkan opsi dengan penyelesaian dalam koin (`inverse`) maupun dalam stablecoin (`linear`). Default: keluarga dengan open interest lebih besar untuk jatuh tempo tersebut. |
| limit | integer | Opsional | 100 | ≥ 1 · ≤ 500 | Jumlah strike per halaman (satu baris = satu strike beserta call dan put-nya). |
| offset | integer | Opsional | 0 | ≥ 0 · ≤ 100000 | Jumlah strike yang dilewati. |
Contoh permintaan
curl -s "https://www.coinboss.com/api/sd/options/chain?coin=BTC&exchange=okx"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.
| Kolom | Tipe | Satuan | Deskripsi |
|---|---|---|---|
| success | boolean | — | true jika permintaan berhasil. Jika gagal, body-nya adalah `{ success: false, code, error, request_id }`. |
| schema | string | — | ID skema respons ini. ID hanya berubah jika kolom yang sudah ada berubah makna atau tipe. |
| now | number | ms | Waktu server saat respons disusun. |
| coin | string | — | Simbol koin (huruf besar). |
| exchange | string | — | ID bursa (huruf kecil). |
| expiry | string | — | Tanggal jatuh tempo (UTC), `YYYY-MM-DD`, atau `all`. |
| expiry_ts | number | ms | Waktu jatuh tempo. |
| days_left | number | days | Jumlah hari hingga jatuh tempo. |
| kind | string | — | Keluarga kontrak: `inverse` (penyelesaian dalam koin) atau `linear` (penyelesaian dalam stablecoin). |
| kinds_available | array | — | Keluarga kontrak yang dicatatkan bursa untuk jatuh tempo ini. |
| kinds_available[] | string | — | Keluarga kontrak yang dicatatkan bursa untuk jatuh tempo ini. |
| expiries_available | array | — | Tanggal jatuh tempo yang saat ini memiliki kontrak. |
| expiries_available[] | string | — | Tanggal jatuh tempo yang saat ini memiliki kontrak. |
| underlying | string | — | Aset dasar keluarga kontrak. |
| settle | string | — | Mata uang penyelesaian keluarga kontrak. |
| contract_size | number | coin | Kuantitas koin dasar per kontrak. |
| underlying_price | number | USD | Harga forward / aset dasar yang dipublikasikan bursa untuk jatuh tempo ini. |
| index_price | number | USD | Harga indeks spot yang dipakai untuk konversi ke USD (dalam agregat: median harga indeks milik masing-masing bursa). |
| total_strikes | number | — | Jumlah strike yang tersedia untuk jatuh tempo ini sebelum paginasi. |
| limit | number | — | Batas baris yang diterapkan. |
| offset | number | — | Baris yang dilewati. |
| returned | number | — | Jumlah strike yang dikembalikan pada halaman ini. |
| rows | array | — | Satu baris per strike beserta call dan put-nya. |
| rows[] | object | — | Satu baris per strike beserta call dan put-nya. |
| rows[].strike | number | USD | Harga strike. |
| rows[].call | object | — | Kontrak call pada strike ini; `null` jika bursa tidak mencatatkannya. |
| rows[].call.instrument | string | — | Nama kontrak sebagaimana ditulis bursa. |
| rows[].call.oi_contracts | number | contracts | Open interest dalam kontrak sebagaimana dihitung bursa. |
| rows[].call.oi_coin | number | coin | Open interest dalam unit koin dasar. |
| rows[].call.oi_usd | number | USD | Open interest sebagai nosional USD: kuantitas koin × harga indeks spot. Satu sisi. |
| rows[].call.vol_contracts_24h | number | contracts | Volume 24h dalam kontrak sebagaimana dihitung bursa. |
| rows[].call.vol_coin_24h | number | coin | Kuantitas yang diperdagangkan dalam 24h, dalam unit koin dasar. |
| rows[].call.vol_usd_24h | number | USD | Volume nosional 24h: kuantitas koin yang diperdagangkan × harga indeks spot saat ini. Bukan nilai transaksi premi. |
| rows[].call.vol_premium_usd_24h | number|null | USD | Nilai transaksi premi 24h (harga opsi × kuantitas) jika bursa memublikasikannya; `null` jika tidak. Tidak pernah dijumlahkan ke volume nosional. |
| rows[].call.mark_price | number|null | — | Harga mark opsi dalam unit kuotasinya (koin untuk kontrak dengan penyelesaian dalam koin). |
| rows[].call.mark_price_usd | number|null | USD | Harga mark opsi yang dikonversi ke USD. |
| rows[].call.mark_iv | number | % | Volatilitas tersirat pada harga mark. |
| rows[].call.bid_iv | number|null | % | Volatilitas tersirat pada bid terbaik; `null` jika bursa tidak memublikasikannya. |
| rows[].call.ask_iv | number|null | % | Volatilitas tersirat pada ask terbaik; `null` jika bursa tidak memublikasikannya. |
| rows[].call.delta | number|null | — | Delta sebagaimana dipublikasikan bursa; `null` jika tidak dipublikasikan. |
| rows[].call.gamma | number|null | — | Gamma sebagaimana dipublikasikan bursa; `null` jika tidak dipublikasikan. |
| rows[].call.vega | number|null | — | Vega sebagaimana dipublikasikan bursa; `null` jika tidak dipublikasikan. |
| rows[].call.theta | number|null | — | Theta sebagaimana dipublikasikan bursa; `null` jika tidak dipublikasikan. |
| rows[].call.observed_at | number | ms | Stempel waktu yang diberikan sumber untuk data tersebut. |
| rows[].put | object | — | Kontrak put pada strike ini; `null` jika bursa tidak mencatatkannya. |
| rows[].put.instrument | string | — | Nama kontrak sebagaimana ditulis bursa. |
| rows[].put.oi_contracts | number | contracts | Open interest dalam kontrak sebagaimana dihitung bursa. |
| rows[].put.oi_coin | number | coin | Open interest dalam unit koin dasar. |
| rows[].put.oi_usd | number | USD | Open interest sebagai nosional USD: kuantitas koin × harga indeks spot. Satu sisi. |
| rows[].put.vol_contracts_24h | number | contracts | Volume 24h dalam kontrak sebagaimana dihitung bursa. |
| rows[].put.vol_coin_24h | number | coin | Kuantitas yang diperdagangkan dalam 24h, dalam unit koin dasar. |
| rows[].put.vol_usd_24h | number | USD | Volume nosional 24h: kuantitas koin yang diperdagangkan × harga indeks spot saat ini. Bukan nilai transaksi premi. |
| rows[].put.vol_premium_usd_24h | number|null | USD | Nilai transaksi premi 24h (harga opsi × kuantitas) jika bursa memublikasikannya; `null` jika tidak. Tidak pernah dijumlahkan ke volume nosional. |
| rows[].put.mark_price | number | — | Harga mark opsi dalam unit kuotasinya (koin untuk kontrak dengan penyelesaian dalam koin). |
| rows[].put.mark_price_usd | number | USD | Harga mark opsi yang dikonversi ke USD. |
| rows[].put.mark_iv | number | % | Volatilitas tersirat pada harga mark. |
| rows[].put.bid_iv | number|null | % | Volatilitas tersirat pada bid terbaik; `null` jika bursa tidak memublikasikannya. |
| rows[].put.ask_iv | number|null | % | Volatilitas tersirat pada ask terbaik; `null` jika bursa tidak memublikasikannya. |
| rows[].put.delta | number|null | — | Delta sebagaimana dipublikasikan bursa; `null` jika tidak dipublikasikan. |
| rows[].put.gamma | number|null | — | Gamma sebagaimana dipublikasikan bursa; `null` jika tidak dipublikasikan. |
| rows[].put.vega | number|null | — | Vega sebagaimana dipublikasikan bursa; `null` jika tidak dipublikasikan. |
| rows[].put.theta | number|null | — | Theta sebagaimana dipublikasikan bursa; `null` jika tidak dipublikasikan. |
| rows[].put.observed_at | number | ms | Stempel waktu yang diberikan sumber untuk data tersebut. |
| coverage | object | — | Apa yang termasuk dan tidak termasuk dalam angka-angka ini. Bandingkan ini terlebih dahulu sebelum membandingkan total dengan sumber lain. |
| coverage.included_exchanges | array | — | Sumber yang data segarnya disertakan. |
| coverage.included_exchanges[] | string | — | Sumber yang data segarnya disertakan. |
| coverage.unavailable | array | — | Sumber yang tidak dapat disertakan, masing-masing dengan alasannya. Sumber tersebut tidak pernah dihitung sebagai 0. kosong pada sampel yang dipakai untuk menghasilkan tabel ini |
| coverage.stale_excluded | array | — | Baris yang tidak dimasukkan karena pembaruan terakhirnya berada di luar jendela kesegaran. kosong pada sampel yang dipakai untuk menghasilkan tabel ini |
| coverage.field_gaps | array | — | Kolom yang tidak dipublikasikan suatu bursa; nilainya `null` untuk bursa tersebut. |
| coverage.field_gaps[] | object | — | Kolom yang tidak dipublikasikan suatu bursa; nilainya `null` untuk bursa tersebut. |
| coverage.field_gaps[].exchange | string | — | ID bursa (huruf kecil). |
| coverage.field_gaps[].fields | array | — | Nama kolom yang tidak ada. |
| coverage.field_gaps[].fields[] | string | — | Nama kolom yang tidak ada. |
| coverage.field_gaps[].kind | string | — | Keluarga kontrak: `inverse` (penyelesaian dalam koin) atau `linear` (penyelesaian dalam stablecoin). |
| method | object | — | Pernyataan teks biasa tentang rumus yang dipakai untuk respons ini, satu entri per kolom. |
| method.chain | string | — | Catatan rumus untuk `chain`, teks biasa. |
| method.kind | string | — | Catatan rumus untuk `kind`, teks biasa. |
| method.oi_usd | string | — | Catatan rumus untuk `oi_usd`, teks biasa. |
| method.mark_price | string | — | Catatan rumus untuk `mark_price`, teks biasa. |
| method.iv | string | — | Catatan rumus untuk `iv`, teks biasa. |
| method.greeks | string | — | Catatan rumus untuk `greeks`, teks biasa. |
| method.vol_usd_24h | string | — | Catatan rumus untuk `vol_usd_24h`, teks biasa. |
| method.vol_premium_usd_24h | string | — | Catatan rumus untuk `vol_premium_usd_24h`, teks biasa. |
| meta | object | — | Silsilah data dan kesegaran respons ini. |
| meta.schema | string | — | ID skema respons ini. ID hanya berubah jika kolom yang sudah ada berubah makna atau tipe. |
| meta.source | array | — | Endpoint publik hulu tempat data dikumpulkan. |
| meta.source[] | object | — | Endpoint publik hulu tempat data dikumpulkan. |
| meta.source[].exchange | string | — | ID bursa (huruf kecil). |
| meta.source[].endpoint | string | — | Endpoint publik sumber yang dibaca kolektor (ditampilkan sebagai silsilah data; klien tidak pernah memanggilnya). |
| meta.observed_at | number | ms | Stempel waktu yang diberikan sumber untuk data tersebut. |
| meta.received_at | number | ms | Waktu kolektor CoinBoss menerima data. |
| meta.fetched_at | number | ms | Waktu respons ini disusun. |
| meta.window | string | — | Jendela waktu yang dicakup angka-angka ini. |
| meta.quality | string | — | FRESH, PARTIAL, STALE, BROKEN, atau UNAVAILABLE, dinilai dari stempel waktu data dan cakupan. |
| meta.is_stale | boolean | — | True jika data lebih lama dari jendela kesegarannya. |
| meta.cache_ttl_s | number | s | Masa hidup cache respons ini. |
| meta.fallback | string | — | Apa yang dikembalikan endpoint ketika kolektor atau sumber gagal. |
Dihasilkan 2026-11-11 23:00 UTC dari 3 respons nyata.
Contoh respons
/api/sd/options/chain?coin=BTC&exchange=okx · Respons nyata yang direkam 2026-11-13 03:52:54 UTC. Array dan map yang panjang dipersingkat untuk tampilan: rows berisi 45 item; expiries_available berisi 12 item.
- "success"true
- "schema""coinboss.sd.options/1"
- "now"1794541974766
- "coin""BTC"
- "exchange""okx"
- "expiry""2026-11-13"
- "expiry_ts"1794556800000
- "days_left"0.1716
- "kind""inverse"
- "kinds_available"
- "inverse"
- "linear"
- "expiries_available"
- "2026-11-13"
- "2026-11-14"
- "2026-11-15"
- "2026-11-16"
- "2026-11-20"
- "2026-11-27"
- "2026-12-04"
- "2026-12-25"
- "underlying""BTC-USD"
- "settle""BTC"
- "contract_size"0.01
- "underlying_price"71428.8359576
- "index_price"71417.4
- "total_strikes"45
- "limit"100
- "offset"0
- "returned"45
- "rows"
- "coverage"
- "included_exchanges"
- "unavailable"
- "stale_excluded"
- "field_gaps"
- "stale_included"
- "method"
- "chain""T-quote for one exchange, one expiry and one contract family: one row per strike (ascending) with the call and put legs; paginated by strike with limit (default…"
- "kind""inverse = coin-settled (Deribit BTC/ETH, OKX *-USD); linear = USD/USDT/USDC-settled. When an exchange lists both families for the expiry and kind is omitted, th…"
- "oi_usd""sum over contracts of oi_coin x that exchange's spot index price (USDT/USDC treated 1:1 as USD); oi_coin is open interest in units of the underlying coin after …"
- "mark_price""exchange-native quote: Deribit/OKX inverse in underlying coin per 1 coin; Binance in USDT per contract (contract_size coins); others in USD per 1 coin. mark_pri…"
- "iv""mark_iv / bid_iv / ask_iv in percent as published by the exchange (no-quote sentinels such as 0 or -1 are null)"
- "greeks""delta/gamma/vega/theta exactly as published by the exchange (OKX: Black-Scholes greeks in USD terms); never computed by CoinBoss; null where the exchange does n…"
- "vol_usd_24h""NOTIONAL 24h volume = sum of vol_coin (24h traded quantity in underlying coin) x the exchange's CURRENT spot index price; not premium turnover. Binance statisti…"
- "vol_premium_usd_24h""PREMIUM turnover (option price x quantity) as reported by the exchange: Deribit volume_usd, Binance amount, Gate sum(|size| x multiplier x price) from the 24h t…"
- "meta"
- "schema""coinboss.sd.options/1"
- "source"
- "observed_at"1794522472654
- "received_at"1794522473638
- "fetched_at"1794541974766
- "window""latest"
- "quality""STALE"
- "is_stale"true
- "cache_ttl_s"60
- "fallback""on collector failure the last stored rows are served: an exchange whose newest batch is older than 25 min (collector cycle is 10 min) is excluded from totals (l…"
Sampel terverifikasi
Selain contoh di atas, probe memanggil endpoint ini dengan parameter berikut dan memeriksa skemanya setiap kali.
| Parameter | HTTP | Latensi | Hasil |
|---|---|---|---|
| coin=ETH&exchange=deribit | 200 | 59 ms | Lolos STALE |
| coin=BTC&limit=5&exchange=bybit | 200 | 3 ms | Lolos STALE |
| coin=BTC | 400 | 1 ms | Lolos mengembalikan error yang diharapkan |
Diperiksa 2026-11-13 03:28:17 UTC
Detail
- Autentikasi
- Tidak ada. Endpoint publik.
- Batas permintaan
- 1200 permintaan per menit per IP
- Cache server
- 60s
- Mikro-cache edge
- 10s
- Frekuensi pembaruan
- Putaran kolektor setiap 10 menit; sebuah bursa dianggap segar selama 25 menit setelah putaran terakhirnya yang berhasil.
- Jendela
- Snapshot terbaru satu jatuh tempo.
- Sumber data
- Endpoint opsi REST publik milik Deribit, Binance, Bybit, OKX, Gate, dan Coincall, dikumpulkan dan disimpan oleh CoinBoss (sd_opt_latest, sd_opt_summary_hourly). Tidak ada agregator pihak ketiga yang terlibat.
- Cakupan bursa
- Enam bursa opsi. Koin yang tidak memiliki opsi tercatat di bursa yang dipilih mengembalikan HTTP 200 dengan kolom null, `meta.quality = "UNAVAILABLE"`, dan alasannya di `coverage.unavailable`. Bursa tanpa feed opsi publik juga tercantum di sana.
- Paginasi
- Berbasis offset: `limit` (maks 500) dan `offset`; `total_strikes` dan `returned` ada di respons.
- Pengurutan
- Strike, menaik.
- Satuan
- USD notional = contracts × contract size × spot index price of the venue. `*_coin` fields are in units of the underlying coin. Implied volatility is in percent (55 = 55 %). `vol_premium_usd_24h` is premium turnover, reported separately and never added to notional volume.
- Metode
- Greeks and IV are passed through from the venue, not recomputed. A venue that does not publish a column returns `null` for it and the column is listed under `coverage.field_gaps`.
- Stempel waktu
- Milidetik epoch Unix (UTC) kecuali deskripsi kolom menyatakan lain
- Format respons
- json
- Stabilitas
- Stabil
- Tersedia sejak
- 2026-11-11
Status langsung
Endpoint melaporkan kualitas data STALE
Ketersediaan, 30 hari terakhir
100% dari 406 pemeriksaan lolos
- Dikembalikan tetapi tidak didokumentasikan: coverage.stale_included, coverage.stale_included[], coverage.stale_included[].exchange, coverage.stale_included[].age_s
Error
Panggilan yang gagal memiliki satu bentuk yang sama di semua endpoint. Daftar lengkapnya ada di halaman error. Error dan batas permintaan →
| Kode | HTTP | Arti | Tindakan |
|---|---|---|---|
| INVALID_PARAM | 400 | Parameter wajib tidak ada atau suatu nilai tidak diterima. `param` menyebutkan nama parameternya jika diketahui. | Jangan mengulang tanpa perubahan; perbaiki permintaannya. |
| UNAUTHORIZED | 401 | Header `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. |
| FORBIDDEN | 403 | Rute ini bukan bagian dari API publik (internal atau khusus akun). | Jangan mengulang. |
| NOT_FOUND | 404 | Rute tidak dikenal, atau koin / bursa / dana yang diminta tidak ada. | Jangan mengulang; periksa path dan pengenal terhadap katalog. |
| RATE_LIMITED | 429 | Jumlah permintaan melebihi batas per menit. `Retry-After` memberikan jumlah detik untuk menunggu. | Tunggu selama `Retry-After`, lalu ulangi dengan backoff. |
| INTERNAL | 500 | Error 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_FAILED | 503 | Sumber 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. |
| UNAVAILABLE | 501 / 503 | Dataset 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_FAILED | 200 | Beberapa endpoint lama menjawab HTTP 200 dengan `success: false`. Selalu periksa `success`, bukan hanya status HTTP. | Bergantung pada pesannya; perlakukan sebagai permintaan yang gagal. |
Coba
/api/sd/options/chainTerdegradasistring — Coin symbol, case-insensitive (for example `BTC`). Missing or malformed values return 400.
string — Venue id. `all` is not accepted here: a chain belongs to one venue.
string — UTC expiry date as `YYYY-MM-DD`. Default: the nearest expiry. `all` is not accepted.
string — Contract family when the venue lists both coin-settled (`inverse`) and stablecoin-settled (`linear`) options. Default: the family with the larger open interest for that expiry.
integer · default 100 · min 1 · maks 500 — Strikes per page (one row = one strike with its call and put).
integer · default 0 · min 0 · maks 100000 — Number of strikes to skip.
https://www.coinboss.com/api/sd/options/chain?coin=BTC&exchange=okxLainnya di kategori ini
- Rantai opsi (satu bursa) /api/sd/options/chain
- Opsi per jatuh tempo /api/sd/options/expiries
- Riwayat opsi (per jam) /api/sd/options/history
- Ikhtisar opsi (semua bursa) /api/sd/options/overview
- Opsi per strike /api/sd/options/strikes
- Ringkasan opsi di halaman koin /api/currency/options-summary
- Kurva senyum / struktur tenor volatilitas tersirat opsi /api/options/iv
- Riwayat volatilitas tersirat opsi /api/options/iv-history
- Max pain opsi /api/options/max-pain
- OI opsi per jatuh tempo /api/options/oi-by-expiry
- OI opsi per strike /api/options/oi-by-strike
- Ikhtisar opsi /api/options/overview
- Distribusi volume opsi /api/options/volume-dist