Service status
Overall status, API instances and stores, failing endpoints, latency percentiles, 30-day availability, collector health per data family and open incidents.
/api/meta/statusRequest
This endpoint takes no parameters.
Example request
curl -s "https://www.coinboss.com/api/meta/status"Response fields
The field table is generated from real responses, so it lists exactly what the endpoint returns. Paths use a[] for array items and {*} for objects keyed by a dynamic name such as a coin or an exchange.
| Field | Type | Unit | Description |
|---|---|---|---|
| success | boolean | — | true when the request succeeded. On failure the body is `{ success: false, code, error, request_id }`. |
| schema | string | — | Schema id of this response (`coinboss.meta.status/1`). |
| now | number | ms | Server time when the response was built. |
| overall | string | — | Overall service status: `operational`, `degraded`, `partial_outage`, `major_outage` or `unknown`; see `legend`. |
| api_version | string | — | Version of the public API (`v1`). |
| catalog_version | string | — | Version of the endpoint catalog, a release date such as `2026.11.11`. |
| components | array | — | Service components with their status: REST API, WebSocket stream, database, cache, time-series store, endpoint probe and data collection. |
| components[] | object | — | One component: `id`, `title`, `status` and a `detail` object whose fields depend on the component. |
| components[].id | string | — | Identifier. |
| components[].title | string | — | Display name of the component. |
| components[].status | string | — | Status. |
| components[].detail | object | — | Detail. |
| components[].detail.instances_healthy | number | count | API server instances that answered the health check just now. may be absent |
| components[].detail.instances_total | number | count | API server instances that were checked. may be absent |
| components[].detail.health_latency_ms | number | ms | Slowest health-check response among the API instances. may be absent |
| components[].detail.last_check_at | number | ms | Timestamp. may be absent |
| components[].detail.first_frame_ms | number | ms | Time from connecting to the WebSocket stream until the first frame arrived in the last probe; null when not probed. may be absent |
| components[].detail.ping_ms | number | ms | Round-trip time of a trivial query to the component (database, cache or time-series store), measured from the API host. may be absent |
| components[].detail.note | null | — | Note. may be absent |
| components[].detail.last_run_at | number | ms | Timestamp. may be absent |
| components[].detail.age_s | number | s | Seconds since this row was last updated. may be absent |
| components[].detail.interval_s | number | s | Planned interval between two probe runs (300). may be absent |
| components[].detail.took_ms | number | ms | Duration of the last complete probe run; null when not recorded. may be absent |
| components[].detail.families_total | number | count | Number of data families evaluated for data collection. may be absent |
| components[].detail.families_degraded | number | count | Number of data families whose collection status is `degraded` or `outage`. may be absent |
| components[].detail.judged_by | string | — | Which timestamp the status was judged from. may be absent |
| endpoints | object | — | Number of documented endpoints in each live status, plus the list of failing ones. |
| endpoints.total | number | — | Total. |
| endpoints.available | number | — | Whether data is available. |
| endpoints.partial | number | — | true when only part of the expected data is present. |
| endpoints.degraded | number | count | Number of endpoints whose live status is `degraded`. |
| endpoints.down | number | count | Number of endpoints whose live status is `down`. |
| endpoints.unavailable | number | — | Items for which no data is available, with reasons. Never reported as 0. |
| endpoints.unknown | number | count | Number of endpoints whose live status is `unknown` (no recent probe result). |
| endpoints.failing | array | — | Endpoints currently `down` or `degraded`, each with `id`, `path`, `status`, `reason`, last HTTP status, last success time and failure streak. |
| endpoints.failing[] | object | — | One endpoint that is currently down or degraded. |
| endpoints.failing[].id | string | — | Identifier. |
| endpoints.failing[].path | string | — | Endpoint path. |
| endpoints.failing[].status | string | — | Status. |
| endpoints.failing[].reason | string | — | Reason code. |
| endpoints.failing[].http | number | — | HTTP status of the last probe; `null` when never probed. |
| endpoints.failing[].last_ok_at | number | ms | Timestamp. |
| endpoints.failing[].fail_streak | number | count | Number of consecutive failed probes. |
| latency_ms | object | — | Response-time distribution of the latest successful probe call of each endpoint, measured on the API host. |
| latency_ms.p50 | number | ms | Median response time across endpoints; null when there is no fresh sample. |
| latency_ms.p95 | number | ms | 95th-percentile response time across endpoints; null when there is no fresh sample. |
| latency_ms.max | number | — | Maximum. |
| latency_ms.sample | number | count | Number of endpoints included in the latency figures. |
| latency_ms.measured | string | — | Plain-text note on where latency is measured: on the server side, excluding network transit. |
| uptime | object | — | Probe checks of all endpoints together over the window: totals, success percentage and a per-day breakdown. |
| uptime.window_days | number | days | Length of the uptime window (30). |
| uptime.checks | number | count | Number of probe checks in the window, all endpoints together. |
| uptime.ok | number | count | Number of those checks that succeeded. |
| uptime.pct | number | % | Percentage. |
| uptime.tracking_since | string | — | First day with probe data inside the window, `YYYY-MM-DD`; null when there is no data yet. |
| uptime.days | array | — | Daily values or number of days. |
| uptime.days[] | object | — | Daily values or number of days. |
| uptime.days[].day | string | — | Calendar day (UTC). |
| uptime.days[].checks | number | count | Number of probe requests that day. |
| uptime.days[].ok | number | count | Number of successful probe requests that day. |
| uptime.days[].pct | number | % | Percentage. |
| uptime.days[].schema_pct | number | % | Share of that day’s probed responses that matched the documented field table. |
| uptime.days[].avg_ms | number | ms | Average response time that day. |
| collectors | object | — | State of exchange data collection, judged from data timestamps in storage: per-family counts, dataset checks and patrol health; null when not evaluable. |
| collectors.families | array | — | Collection status per data family. |
| collectors.families[] | object | — | One family: `family`, `title`, number of exchanges in each state and the resulting `status`. |
| collectors.families[].family | string | — | Family id, for example `ticker`, `oi`, `funding`, `liquidation`, `options`. |
| collectors.families[].title | string | — | Display title of the family. |
| collectors.families[].exchanges_collected | number | count | Exchanges for which the family is collected: fresh + partial + stale + broken. |
| collectors.families[].fresh | number | count | Exchanges whose newest data for the family is inside the fresh window. |
| collectors.families[].partial | number | — | true when only part of the expected data is present. |
| collectors.families[].stale | number | — | Rows or flag for data older than the freshness window. |
| collectors.families[].broken | number | count | Exchanges whose upstream keeps failing or whose rows mostly fail sanity checks for the family. |
| collectors.families[].unavailable | number | — | Items for which no data is available, with reasons. Never reported as 0. |
| collectors.families[].status | string | — | Status. |
| collectors.datasets | array | — | Quality checks of datasets that are not per exchange (for example spot ETF and CME daily data), each with status, lag, coverage and reason. |
| collectors.datasets[] | object | — | One market-wide dataset that is not tied to a single exchange (options, spot ETFs, CME, order books, basis). |
| collectors.datasets[].family | string | — | Dataset id, for example `etf` or `cme`. |
| collectors.datasets[].id | string | — | Identifier. |
| collectors.datasets[].title | string | — | Display name of the dataset. |
| collectors.datasets[].source | string | — | Where the value comes from. |
| collectors.datasets[].endpoint | string | — | Public endpoint that serves the dataset. |
| collectors.datasets[].status | string | — | Status. |
| collectors.datasets[].lag_s | number | s | Age of the newest data point when the response was built. |
| collectors.datasets[].source_at | number | ms | Timestamp. |
| collectors.datasets[].fetched_at | number | ms | When CoinBoss fetched the data from the source. |
| collectors.datasets[].fresh_within_s | number | s | Freshness window: data newer than this counts as fresh. |
| collectors.datasets[].coverage | object | — | What is included and what is missing. |
| collectors.datasets[].coverage.funds_total | number | count | Number of funds tracked. may be absent |
| collectors.datasets[].coverage.funds_covered | number | count | Number of funds with a usable disclosure. may be absent |
| collectors.datasets[].coverage.funds_unavailable | number | count | Number of funds whose issuer publishes no machine-readable disclosure. may be absent |
| collectors.datasets[].coverage.funds_failing | number | count | Number of funds whose disclosure could not be read in the last collection round. may be absent |
| collectors.datasets[].coverage.as_of | string | — | Newest disclosure date among covered funds (YYYY-MM-DD). may be absent |
| collectors.datasets[].coverage.as_of_min | string | — | Oldest disclosure date among covered funds (YYYY-MM-DD). may be absent |
| collectors.datasets[].reason | string|null | — | Reason code. |
| collectors.datasets[].coverage.contracts | number | — | Per-contract rows. may be absent |
| collectors.datasets[].coverage.report_date | string | — | Date of the newest CFTC Commitments of Traders report (YYYY-MM-DD). may be absent |
| collectors.datasets[].coverage.products | number | count | Number of CME products covered. may be absent |
| collectors.datasets[].coverage.trade_date | string | — | Trade date of the newest CME daily report (YYYY-MM-DD). may be absent |
| collectors.patrol_ok | boolean | — | true when the data-quality patrol ran within the last 15 minutes. |
| collectors.patrol_age_s | number | s | Seconds since the event. |
| collectors.evaluated_at | number | ms | Timestamp. |
| incidents | object | — | Data-quality alerts that are open or were resolved in the last 7 days: `open` count and `items` (at most 100). |
| incidents.open | number | — | Open price of the period. |
| incidents.items | array | — | Result items. |
| incidents.items[] | object | — | Result items. |
| incidents.items[].level | string | — | Level. |
| incidents.items[].exchange | string | — | Exchange id, lower case (for example `binance`). |
| incidents.items[].family | string | — | Data family the alert is about. |
| incidents.items[].code | string | — | Code. |
| incidents.items[].detail | string | — | Detail. |
| incidents.items[].opened_at | number | ms | Timestamp. |
| incidents.items[].last_seen_at | number | ms | Timestamp. |
| incidents.items[].resolved_at | number|null | ms | Timestamp. |
| incidents.items[].hits | number | count | Number of patrol runs (one every 5 minutes) that observed the condition since the alert opened. |
| incidents.items[].open | boolean | — | Open price of the period. |
| probe | object | — | State of the endpoint probe behind the live statuses: last run time, its age, the interval and whether it is fresh. |
| probe.last_run_at | number | ms | Timestamp. |
| probe.age_s | number | s | Seconds since this row was last updated. |
| probe.interval_s | number | s | Planned interval between two probe runs (300). |
| probe.fresh | boolean | — | true when the last probe run is less than 20 minutes old; when false, endpoint statuses are reported as `unknown`. |
| probe.error | null | — | Error message (present only on failure). |
| probe.endpoints_checked | number | count | Number of endpoints checked in the last probe round. |
| probe.ok | number | count | Number of endpoints that answered correctly in the last probe round. |
| probe.failed | number | count | Number of endpoints that failed in the last probe round. |
| probe.schema_mismatch | number | count | Number of endpoints whose response did not match the documented field table. |
| probe.alt_samples_failed | null | count | Number of extra sample requests that failed; `null` when the last round did not run them. |
| legend | object | — | Plain-text definition of each value of `overall`. |
| legend.operational | string | — | Definition of `operational`. |
| legend.degraded | string | — | Definition of `degraded`. |
| legend.partial_outage | string | — | Definition of `partial_outage`. |
| legend.major_outage | string | — | Definition of `major_outage`. |
| legend.unknown | string | — | Definition of `unknown`. |
| meta | object | — | Envelope of this response: schema id, producing system, timestamps, cache lifetime and freshness. |
| meta.schema | string | — | Schema id of this response; same value as the top-level `schema`. |
| meta.source | array | — | Where the value comes from. |
| meta.source[] | object | — | Where the value comes from. |
| meta.source[].system | string | — | System that produced the data; always `coinboss` for the developer-center endpoints. |
| meta.source[].component | string | — | Component behind the data: the endpoint probe and the data-quality patrol. |
| meta.observed_at | null | — | Timestamp. |
| meta.received_at | number | ms | Timestamp. |
| meta.fetched_at | number | ms | When CoinBoss fetched the data from the source. |
| meta.window | string | — | Window. |
| meta.cache_ttl_s | number | s | Server-side cache lifetime of this response. |
| meta.quality | string | — | `FRESH` when the endpoint probe reported within the last 20 minutes, otherwise `STALE`. |
| meta.is_stale | boolean | — | true when the row is older than the freshness window; stale rows are not used in totals. |
| meta.fallback | string | — | Plain-text note on what this endpoint returns when its inputs are stale or missing. |
Generated 2026-11-11 23:01 UTC from 1 real responses.
Example response
/api/meta/status · Real response captured 2026-11-13 03:53:47 UTC. Long arrays and maps are shortened for display: components had 7 items; uptime.days had 3 items; incidents.items had 11 items; endpoints.failing had 25 items; collectors.datasets had 12 items; collectors.families had 12 items.
- "success"true
- "schema""coinboss.meta.status/1"
- "now"1794542027137
- "overall""partial_outage"
- "api_version""v1"
- "catalog_version""2026.11.12"
- "components"
- "endpoints"
- "total"299
- "available"256
- "partial"17
- "degraded"17
- "down"8
- "unavailable"1
- "unknown"0
- "failing"
- "latency_ms"
- "p50"7
- "p95"839
- "max"10047
- "sample"289
- "measured""server-side, from the probe on the API host (excludes network transit)"
- "uptime"
- "window_days"30
- "checks"119504
- "ok"118277
- "pct"98.97
- "tracking_since""2026-11-11"
- "days"
- "collectors"
- "families"
- "datasets"
- "patrol_ok"true
- "patrol_age_s"282
- "evaluated_at"1794542027976
- "incidents"
- "open"2
- "items"
- "probe"
- "last_run_at"1794541726312
- "age_s"301
- "interval_s"300
- "fresh"true
- "error"null
- "endpoints_checked"290
- "ok"289
- "failed"1
- "schema_mismatch"0
- "alt_samples_failed"null
- "legend"
- "operational""all checks pass"
- "degraded""serving, with stale data, schema drift or reduced redundancy"
- "partial_outage""at least one endpoint or API instance is failing"
- "major_outage""database down, no API instance healthy, or 20%+ of endpoints failing"
- "unknown""the probe has not reported within 20 minutes — status cannot be asserted"
- "meta"
- "schema""coinboss.meta.status/1"
- "source"
- "observed_at"null
- "received_at"1794541726312
- "fetched_at"1794542027137
- "window""latest"
- "cache_ttl_s"15
- "quality""FRESH"
- "is_stale"false
- "fallback""status is \"unknown\" whenever the probe is stale; process liveness is never used as evidence"
Details
- Authentication
- None. Public endpoint.
- Rate limit
- 1200 requests per minute per IP
- Server cache
- 15s
- Edge micro-cache
- 10s
- Update frequency
- Evaluated on request; endpoint results come from the 5-minute API probe, collector health from data timestamps.
- Data sources
- API probe results, per-instance health checks, data-quality matrix, alert log.
- Timestamps
- Unix epoch milliseconds (UTC) unless the field description says otherwise
- Response format
- json
- Stability
- Stable
- Available since
- 2026-11-11
Live status
Availability, last 30 days
99.75% of 407 checks passed
Errors
Failed calls share one shape on every endpoint. The full list is on the errors page. Errors and rate limits →
| Code | HTTP | Meaning | What to do |
|---|---|---|---|
| INVALID_PARAM | 400 | A required parameter is missing or a value is not accepted. `param` names the parameter when it is known. | Do not retry unchanged; fix the request. |
| UNAUTHORIZED | 401 | The `CB-API-KEY` header was sent but the key is unknown or revoked. Public data needs no key — drop the header or use a valid key. | Do not retry unchanged. |
| FORBIDDEN | 403 | The route is not part of the public API (internal or account-only). | Do not retry. |
| NOT_FOUND | 404 | Unknown route, or the requested coin / exchange / fund does not exist. | Do not retry; check the path and identifiers against the catalog. |
| RATE_LIMITED | 429 | More requests than the per-minute limit. `Retry-After` gives the seconds to wait. | Wait for `Retry-After`, then retry with backoff. |
| INTERNAL | 500 | Unexpected server error. The message is generic by design; quote `request_id` when reporting it. | Retry once after a few seconds; report it with the request id if it persists. |
| UPSTREAM_FAILED | 503 | The data source behind this endpoint did not answer in time. No stale or substitute numbers are returned in its place. | Retry with backoff; check the status page. |
| UNAVAILABLE | 501 / 503 | The dataset is temporarily not ready (cache warming) or the endpoint has no lawful public source yet. | Retry later; the catalog marks endpoints that are unavailable by design. |
| REQUEST_FAILED | 200 | Some older endpoints answer HTTP 200 with `success: false`. Always check `success`, not only the HTTP status. | Depends on the message; treat as a failed request. |
Try it
/api/meta/statusAvailableNo parameters.
https://www.coinboss.com/api/meta/statusMore in this category
- Data-quality matrix (collector view) /api/sd/quality
- API catalog /api/meta/catalog
- Changelog and versioning policy /api/meta/changelog
- Endpoint documentation /api/meta/endpoint
- OpenAPI document /api/meta/openapi
- Data-quality matrix /api/meta/quality
- Service status /api/meta/status
- Checks whether a coin symbol is known to the platform /api/coin-exists
- Map of coin symbol to locally hosted icon path /api/coin-icons
- Coin-page aggregated summary /api/content/coin
- Site-wide section summary /api/content/summary
- Fiat FX rate table /api/currency/fx
- Map of exchange id to locally hosted icon path /api/exchange-icons
- Liveness check /api/health
- Research-page statistics /api/research/stats