Katalog API
Setiap endpoint publik beserta kategorinya, status yang dideklarasikan dan status langsung, TTL cache, hasil probe terakhir, ditambah batas permintaan dan tabel kode error.
/api/meta/catalogPermintaan
Endpoint ini tidak menerima parameter.
Contoh permintaan
curl -s "https://www.coinboss.com/api/meta/catalog"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 (`coinboss.meta.catalog/1`). |
| now | number | ms | Waktu server saat respons disusun. |
| api_version | string | — | Versi API publik (`v1`). |
| catalog_version | string | — | Versi katalog endpoint, berupa tanggal rilis seperti `2026.11.11`. |
| base_path | string | — | Awalan path yang dipakai bersama oleh semua endpoint (`/api`). |
| summary | object | — | Blok ringkasan. |
| summary.total | number | — | Total. |
| summary.available | number | — | Apakah data tersedia. |
| summary.partial | number | — | true jika hanya sebagian dari data yang diharapkan tersedia. |
| summary.degraded | number | count | Jumlah endpoint yang status langsungnya `degraded`. |
| summary.down | number | count | Jumlah endpoint yang status langsungnya `down`. |
| summary.unavailable | number | — | Item yang datanya tidak tersedia, beserta alasannya. Tidak pernah dilaporkan sebagai 0. |
| summary.unknown | number | count | Jumlah endpoint yang status langsungnya `unknown` (tidak ada hasil probe terbaru). |
| probe | object | — | Keadaan probe endpoint di balik status langsung: waktu putaran terakhir, usianya, intervalnya, dan apakah masih segar. |
| probe.last_run_at | number | ms | Stempel waktu. |
| probe.age_s | number | s | Jumlah detik sejak baris ini terakhir diperbarui. |
| probe.interval_s | number | s | Interval terencana antara dua putaran probe (300). |
| probe.fresh | boolean | — | true jika putaran probe terakhir berusia kurang dari 20 menit; jika false, status endpoint dilaporkan sebagai `unknown`. |
| probe.error | null | — | Pesan error (hanya ada saat gagal). |
| categories | array | — | Kategori endpoint yang memuat setidaknya satu endpoint, beserta jumlah endpoint per status. |
| categories[] | object | — | Satu kategori: `id`, `title`, `desc`, dan jumlah endpoint-nya pada setiap status. |
| categories[].id | string | — | Pengenal. |
| categories[].title | string | — | Judul tampilan kategori. |
| categories[].desc | string | — | Deskripsi satu kalimat tentang kategori; null jika belum ditulis. |
| categories[].total | number | — | Total. |
| categories[].available | number | — | Apakah data tersedia. |
| categories[].partial | number | — | true jika hanya sebagian dari data yang diharapkan tersedia. |
| categories[].degraded | number | count | Jumlah endpoint dalam kategori yang status langsungnya `degraded`. |
| categories[].down | number | count | Jumlah endpoint dalam kategori yang status langsungnya `down`. |
| categories[].unavailable | number | — | Item yang datanya tidak tersedia, beserta alasannya. Tidak pernah dilaporkan sebagai 0. |
| categories[].unknown | number | count | Jumlah endpoint dalam kategori yang status langsungnya `unknown`. |
| endpoints | array | — | Setiap endpoint yang terdokumentasi beserta status langsungnya. |
| endpoints[] | object | — | Satu endpoint: identitas, path, status yang dideklarasikan dan status langsung, masa berlaku cache, nama parameter, dan hasil probe terakhir. |
| endpoints[].id | string | — | Pengenal. |
| endpoints[].cat | string | — | ID kategori tempat endpoint tersebut berada. |
| endpoints[].kind | string | — | Jenis. |
| endpoints[].method | string | — | Catatan rumus / metode. |
| endpoints[].path | string | — | Path permintaan endpoint; segmen `:name` adalah parameter path. |
| endpoints[].title | string | — | Judul tampilan singkat endpoint. |
| endpoints[].summary | string | — | Blok ringkasan. |
| endpoints[].declared | string | — | Status yang dideklarasikan dalam katalog, terlepas dari hasil probe: `available`, `partial`, atau `unavailable`. |
| endpoints[].status | string | — | Status. |
| endpoints[].status_reason | string|null | — | Alasan `status` bukan `available`, dalam teks biasa; null jika memang demikian. |
| endpoints[].stability | string | — | `stable`, `beta` (kumpulan kolom dapat berubah tanpa pemberitahuan 90 hari), atau `legacy` (tetap berfungsi, penggantinya sudah ada). |
| endpoints[].since | string|null | — | Awal periode. |
| endpoints[].ttl_s | number|null | s | Masa berlaku cache sisi server untuk respons endpoint; null jika tidak di-cache atau tidak berlaku. |
| endpoints[].params | array | — | Nama semua parameter yang diterima endpoint. kosong pada sampel yang dipakai untuk menghasilkan tabel ini |
| endpoints[].params[] | string | — | Satu nama parameter. |
| endpoints[].required | array | — | Nama parameter yang wajib dikirim. kosong pada sampel yang dipakai untuk menghasilkan tabel ini |
| endpoints[].probe | object | — | Hasil probe terakhir endpoint: waktu pemeriksaan, status HTTP, `ok`, `schema_ok`, latensi, ukuran, usia data, keberhasilan terakhir, dan rentetan kegagalan; null jika belum pernah di-probe. |
| endpoints[].probe.checked_at | number | ms | Stempel waktu. |
| endpoints[].probe.http | number | — | Status HTTP permintaan probe terbaru. |
| endpoints[].probe.ok | boolean | — | `true` jika permintaan probe terbaru mengembalikan HTTP 200 dengan body JSON yang valid. |
| endpoints[].probe.schema_ok | boolean | — | `true` jika respons yang di-probe cocok dengan tabel kolom yang terdokumentasi; `null` jika tidak ada tabel kolom. |
| endpoints[].probe.latency_ms | number | ms | Waktu respons permintaan probe terbaru. |
| endpoints[].probe.bytes | number | bytes | Ukuran body respons yang di-probe. |
| endpoints[].probe.quality | null | — | `meta.quality` yang dilaporkan respons yang di-probe (FRESH / PARTIAL / STALE …); `null` jika endpoint tidak melaporkannya. |
| endpoints[].probe.data_age_s | number|null | s | Jumlah detik sejak event tersebut. |
| endpoints[].probe.last_ok_at | number | ms | Stempel waktu. |
| endpoints[].probe.fail_streak | number | count | Jumlah probe yang gagal berturut-turut; 0 jika probe terakhir berhasil. |
| endpoints[].required[] | string | — | Satu nama parameter wajib. |
| rate_limit | object | — | Aturan batas laju API publik. |
| rate_limit.window_s | number | s | Panjang jendela penghitungan (60). |
| rate_limit.anonymous_per_min | number | count | Permintaan per menit yang diizinkan per IP klien jika tidak ada kunci API yang dikirim. |
| rate_limit.scope | string | — | Teks yang menyatakan cara permintaan dihitung: per IP klien jika anonim, per kunci jika header `CB-API-KEY` dikirim. |
| rate_limit.key_tiers_per_min | object | — | Permintaan per menit yang diizinkan untuk setiap tingkatan kunci API, dengan nama tingkatan sebagai kuncinya. |
| rate_limit.key_tiers_per_min.hobbyist | number | count | Permintaan per menit untuk kunci tingkatan `hobbyist`. |
| rate_limit.key_tiers_per_min.startup | number | count | Permintaan per menit untuk kunci tingkatan `startup`. |
| rate_limit.key_tiers_per_min.standard | number | count | Permintaan per menit untuk kunci tingkatan `standard`. |
| rate_limit.key_tiers_per_min.professional | number | count | Permintaan per menit untuk kunci tingkatan `professional`. |
| rate_limit.exempt | array | — | Pola path yang tidak dihitung terhadap batas. |
| rate_limit.exempt[] | string | — | Satu pola path yang dikecualikan, misalnya `/api/coin-icon/*`. |
| rate_limit.headers | array | — | Nama header respons yang melaporkan keadaan batas laju. |
| rate_limit.headers[] | string | — | Satu nama header, misalnya `X-RateLimit-Remaining`. |
| rate_limit.on_exceed | object | — | Yang dikembalikan saat batas terlampaui: status `http` dan `code` galat. |
| rate_limit.on_exceed.http | number | — | Status HTTP yang dikembalikan saat batas terlampaui (429). |
| rate_limit.on_exceed.code | string | — | Kode. |
| errors | array | — | Kode galat yang dapat dikembalikan API, masing-masing dengan status HTTP, makna, dan saran percobaan ulang. |
| errors[] | object | — | Satu kode galat. |
| errors[].code | string | — | Kode. |
| errors[].http | number|string | — | Status HTTP yang dikirim bersama kode ini; berupa teks seperti `501 / 503` jika lebih dari satu yang berlaku. |
| errors[].meaning | string | — | Makna galat tersebut. |
| errors[].retry | string | — | Saran tentang perlu tidaknya dan cara mencoba ulang. |
| errors[].legacy | boolean | — | Hanya ada dan bernilai true untuk kode yang dipakai endpoint lama yang menjawab HTTP 200 dengan `success: false`. bisa tidak ada |
| status_legend | object | — | Definisi teks biasa untuk setiap status endpoint. |
| status_legend.available | string | — | Apakah data tersedia. |
| status_legend.partial | string | — | true jika hanya sebagian dari data yang diharapkan tersedia. |
| status_legend.degraded | string | — | Definisi status `degraded`. |
| status_legend.down | string | — | Definisi status `down`. |
| status_legend.unavailable | string | — | Item yang datanya tidak tersedia, beserta alasannya. Tidak pernah dilaporkan sebagai 0. |
| status_legend.unknown | string | — | Definisi status `unknown`. |
| meta | object | — | Envelope respons ini: ID skema, sistem penghasil, stempel waktu, masa berlaku cache, dan kesegaran. |
| meta.schema | string | — | ID skema respons ini; nilainya sama dengan `schema` di tingkat teratas. |
| meta.source | array | — | Asal nilai tersebut. |
| meta.source[] | object | — | Asal nilai tersebut. |
| meta.source[].system | string | — | Sistem yang menghasilkan data; selalu `coinboss` untuk endpoint pusat pengembang. |
| meta.source[].component | string | — | Komponen di balik data: probe endpoint dan patroli kualitas data. |
| meta.observed_at | null | — | Stempel waktu. |
| meta.received_at | number | ms | Stempel waktu. |
| meta.fetched_at | number | ms | Waktu CoinBoss mengambil data dari sumber. |
| meta.window | string | — | Jendela. |
| meta.cache_ttl_s | number | s | Masa berlaku cache sisi server untuk respons ini. |
| meta.quality | string | — | `FRESH` jika probe endpoint melapor dalam 20 menit terakhir, selain itu `STALE`. |
| meta.is_stale | boolean | — | true jika baris lebih lama daripada jendela kesegaran; baris usang tidak dipakai dalam total. |
| meta.fallback | string | — | Catatan teks biasa tentang apa yang dikembalikan endpoint ini ketika inputnya usang atau tidak ada. |
Dihasilkan 2026-11-11 23:01 UTC dari 1 respons nyata.
Contoh respons
/api/meta/catalog · Respons nyata yang direkam 2026-11-13 03:59:27 UTC. Array dan map yang panjang dipersingkat untuk tampilan: errors berisi 9 item; endpoints berisi 299 item; categories berisi 21 item.
- "success"true
- "schema""coinboss.meta.catalog/1"
- "now"1794542367982
- "api_version""v1"
- "catalog_version""2026.11.12"
- "base_path""/api"
- "summary"
- "total"299
- "available"256
- "partial"19
- "degraded"17
- "down"6
- "unavailable"1
- "unknown"0
- "probe"
- "last_run_at"1794542029183
- "age_s"339
- "interval_s"300
- "fresh"true
- "error"null
- "categories"
- "endpoints"
- "rate_limit"
- "window_s"60
- "anonymous_per_min"1200
- "scope""per client IP for anonymous requests; per key when a CB-API-KEY header is sent"
- "key_tiers_per_min"
- "exempt"
- "headers"
- "on_exceed"
- "errors"
- "status_legend"
- "available""last probe returned HTTP 200 and the response matched the documented schema"
- "partial""works, but exchange / field coverage is incomplete (see status_reason)"
- "degraded""responding, but schema drift or stale data was detected by the last probe"
- "down""last probe failed"
- "unavailable""documented for completeness; no lawful public source yet, the endpoint returns nulls or is not served"
- "unknown""no probe result within the last 20 minutes"
- "meta"
- "schema""coinboss.meta.catalog/1"
- "source"
- "observed_at"null
- "received_at"1794542029183
- "fetched_at"1794542367982
- "window""latest"
- "cache_ttl_s"30
- "quality""FRESH"
- "is_stale"false
- "fallback""when the probe has not reported within 20 minutes every endpoint status becomes \"unknown\""
Detail
- Autentikasi
- Tidak ada. Endpoint publik.
- Batas permintaan
- 1200 permintaan per menit per IP
- Cache server
- 30s
- Mikro-cache edge
- 10s
- Frekuensi pembaruan
- Disusun ulang saat diminta dari file katalog dan hasil probe terbaru (probe berjalan setiap 5 menit).
- Sumber data
- Katalog endpoint CoinBoss + sd_api_probe (hasil panggilan nyata yang dilakukan probe API).
- Stempel waktu
- Milidetik epoch Unix (UTC) kecuali deskripsi kolom menyatakan lain
- Format respons
- json
- Stabilitas
- Stabil
- Tersedia sejak
- 2026-11-11
Status langsung
Ketersediaan, 30 hari terakhir
100% dari 409 pemeriksaan lolos
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/meta/catalogTersediaTidak ada parameter.
https://www.coinboss.com/api/meta/catalogLainnya di kategori ini
- Matriks kualitas data (tampilan kolektor) /api/sd/quality
- Katalog API /api/meta/catalog
- Catatan perubahan dan kebijakan versi /api/meta/changelog
- Dokumentasi endpoint /api/meta/endpoint
- Dokumen OpenAPI /api/meta/openapi
- Matriks kualitas data /api/meta/quality
- Status layanan /api/meta/status
- Memeriksa apakah suatu simbol koin dikenal oleh platform /api/coin-exists
- Peta simbol koin ke path ikon yang di-host secara lokal /api/coin-icons
- Ringkasan agregat halaman koin /api/content/coin
- Ringkasan bagian seluruh situs /api/content/summary
- Tabel kurs valas fiat /api/currency/fx
- Peta id bursa ke path ikon yang di-host secara lokal /api/exchange-icons
- Pemeriksaan liveness /api/health
- Statistik halaman riset /api/research/stats