/api/meta/catalog
GETAvailableFRESH

API catalog

Every public endpoint with its category, declared and live status, cache TTL, last probe result, plus rate limits and the error-code table.

GET/api/meta/catalog

Request

This endpoint takes no parameters.

Example request

curl -s "https://www.coinboss.com/api/meta/catalog"

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.

FieldTypeUnitDescription
successboolean—true when the request succeeded. On failure the body is `{ success: false, code, error, request_id }`.
schemastring—Schema id of this response (`coinboss.meta.catalog/1`).
nownumbermsServer time when the response was built.
api_versionstring—Version of the public API (`v1`).
catalog_versionstring—Version of the endpoint catalog, a release date such as `2026.11.11`.
base_pathstring—Path prefix shared by all endpoints (`/api`).
summaryobject—Summary block.
summary.totalnumber—Total.
summary.availablenumber—Whether data is available.
summary.partialnumber—true when only part of the expected data is present.
summary.degradednumbercountNumber of endpoints whose live status is `degraded`.
summary.downnumbercountNumber of endpoints whose live status is `down`.
summary.unavailablenumber—Items for which no data is available, with reasons. Never reported as 0.
summary.unknownnumbercountNumber of endpoints whose live status is `unknown` (no recent probe result).
probeobject—State of the endpoint probe behind the live statuses: last run time, its age, the interval and whether it is fresh.
probe.last_run_atnumbermsTimestamp.
probe.age_snumbersSeconds since this row was last updated.
probe.interval_snumbersPlanned interval between two probe runs (300).
probe.freshboolean—true when the last probe run is less than 20 minutes old; when false, endpoint statuses are reported as `unknown`.
probe.errornull—Error message (present only on failure).
categoriesarray—Endpoint categories that contain at least one endpoint, with per-status endpoint counts.
categories[]object—One category: `id`, `title`, `desc` and the number of its endpoints in each status.
categories[].idstring—Identifier.
categories[].titlestring—Display title of the category.
categories[].descstring—One-sentence description of the category; null when none is written.
categories[].totalnumber—Total.
categories[].availablenumber—Whether data is available.
categories[].partialnumber—true when only part of the expected data is present.
categories[].degradednumbercountNumber of endpoints of the category whose live status is `degraded`.
categories[].downnumbercountNumber of endpoints of the category whose live status is `down`.
categories[].unavailablenumber—Items for which no data is available, with reasons. Never reported as 0.
categories[].unknownnumbercountNumber of endpoints of the category whose live status is `unknown`.
endpointsarray—Every documented endpoint with its live status.
endpoints[]object—One endpoint: identity, path, declared and live status, cache lifetime, parameter names and the last probe result.
endpoints[].idstring—Identifier.
endpoints[].catstring—Id of the category the endpoint belongs to.
endpoints[].kindstring—Kind.
endpoints[].methodstring—Formula / method notes.
endpoints[].pathstring—Request path of the endpoint; `:name` segments are path parameters.
endpoints[].titlestring—Short display title of the endpoint.
endpoints[].summarystring—Summary block.
endpoints[].declaredstring—Status declared in the catalog, independent of probing: `available`, `partial` or `unavailable`.
endpoints[].statusstring—Status.
endpoints[].status_reasonstring|null—Why `status` is not `available`, in plain text; null when it is.
endpoints[].stabilitystring—`stable`, `beta` (field set can change without the 90-day notice) or `legacy` (kept working, a replacement exists).
endpoints[].sincestring|null—Start of the period.
endpoints[].ttl_snumber|nullsServer-side cache lifetime of the endpoint's responses; null when it is not cached or not applicable.
endpoints[].paramsarray—Names of all parameters the endpoint accepts. empty in the samples used to generate this table
endpoints[].params[]string—One parameter name.
endpoints[].requiredarray—Names of the parameters that must be sent. empty in the samples used to generate this table
endpoints[].probeobject—Last probe result of the endpoint: check time, HTTP status, `ok`, `schema_ok`, latency, size, data age, last success and failure streak; null when never probed.
endpoints[].probe.checked_atnumbermsTimestamp.
endpoints[].probe.httpnumber—HTTP status of the most recent probe request.
endpoints[].probe.okboolean—`true` when the most recent probe request returned HTTP 200 with a valid JSON body.
endpoints[].probe.schema_okboolean—`true` when the probed response matched the documented field table; `null` when no field table exists.
endpoints[].probe.latency_msnumbermsResponse time of the most recent probe request.
endpoints[].probe.bytesnumberbytesSize of the probed response body.
endpoints[].probe.qualitynull—`meta.quality` reported by the probed response (FRESH / PARTIAL / STALE …); `null` when the endpoint does not report it.
endpoints[].probe.data_age_snumber|nullsSeconds since the event.
endpoints[].probe.last_ok_atnumbermsTimestamp.
endpoints[].probe.fail_streaknumbercountNumber of consecutive failed probes; 0 when the last probe succeeded.
endpoints[].required[]string—One required parameter name.
rate_limitobject—Rate-limit rules of the public API.
rate_limit.window_snumbersLength of the counting window (60).
rate_limit.anonymous_per_minnumbercountRequests per minute allowed per client IP when no API key is sent.
rate_limit.scopestring—Text stating how requests are counted: per client IP when anonymous, per key when a `CB-API-KEY` header is sent.
rate_limit.key_tiers_per_minobject—Requests per minute allowed for each API-key tier, keyed by tier name.
rate_limit.key_tiers_per_min.hobbyistnumbercountRequests per minute for keys of the `hobbyist` tier.
rate_limit.key_tiers_per_min.startupnumbercountRequests per minute for keys of the `startup` tier.
rate_limit.key_tiers_per_min.standardnumbercountRequests per minute for keys of the `standard` tier.
rate_limit.key_tiers_per_min.professionalnumbercountRequests per minute for keys of the `professional` tier.
rate_limit.exemptarray—Path patterns that are not counted against the limit.
rate_limit.exempt[]string—One exempt path pattern, for example `/api/coin-icon/*`.
rate_limit.headersarray—Names of the response headers that report the rate-limit state.
rate_limit.headers[]string—One header name, for example `X-RateLimit-Remaining`.
rate_limit.on_exceedobject—What is returned when the limit is exceeded: `http` status and error `code`.
rate_limit.on_exceed.httpnumber—HTTP status returned when the limit is exceeded (429).
rate_limit.on_exceed.codestring—Code.
errorsarray—Error codes the API can return, each with HTTP status, meaning and retry advice.
errors[]object—One error code.
errors[].codestring—Code.
errors[].httpnumber|string—HTTP status sent with this code; a string such as `501 / 503` when more than one applies.
errors[].meaningstring—What the error means.
errors[].retrystring—Advice on whether and how to retry.
errors[].legacyboolean—Present and true only for the code used by older endpoints that answer HTTP 200 with `success: false`. may be absent
status_legendobject—Plain-text definition of each endpoint status.
status_legend.availablestring—Whether data is available.
status_legend.partialstring—true when only part of the expected data is present.
status_legend.degradedstring—Definition of status `degraded`.
status_legend.downstring—Definition of status `down`.
status_legend.unavailablestring—Items for which no data is available, with reasons. Never reported as 0.
status_legend.unknownstring—Definition of status `unknown`.
metaobject—Envelope of this response: schema id, producing system, timestamps, cache lifetime and freshness.
meta.schemastring—Schema id of this response; same value as the top-level `schema`.
meta.sourcearray—Where the value comes from.
meta.source[]object—Where the value comes from.
meta.source[].systemstring—System that produced the data; always `coinboss` for the developer-center endpoints.
meta.source[].componentstring—Component behind the data: the endpoint probe and the data-quality patrol.
meta.observed_atnull—Timestamp.
meta.received_atnumbermsTimestamp.
meta.fetched_atnumbermsWhen CoinBoss fetched the data from the source.
meta.windowstring—Window.
meta.cache_ttl_snumbersServer-side cache lifetime of this response.
meta.qualitystring—`FRESH` when the endpoint probe reported within the last 20 minutes, otherwise `STALE`.
meta.is_staleboolean—true when the row is older than the freshness window; stale rows are not used in totals.
meta.fallbackstring—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/catalog · Real response captured 2026-11-13 03:53:45 UTC. Long arrays and maps are shortened for display: errors had 9 items; endpoints had 299 items; categories had 21 items.

  • {
    • "success": true,
    • "schema": "coinboss.meta.catalog/1",
    • "now": 1794542025566,
    • "api_version": "v1",
    • "catalog_version": "2026.11.12",
    • "base_path": "/api",
    • "summary": {
      • "total": 299,
      • "available": 256,
      • "partial": 17,
      • "degraded": 17,
      • "down": 8,
      • "unavailable": 1,
      • "unknown": 0
      },
    • "probe": {
      • "last_run_at": 1794541726312,
      • "age_s": 299,
      • "interval_s": 300,
      • "fresh": true,
      • "error": null
      },
    • "categories": [
      • { … 10 },
      • { … 10 }
      ],
    • "endpoints": [
      • { … 16 },
      • { … 16 }
      ],
    • "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": { … 4 },
      • "exempt": [ … 1 ],
      • "headers": [ … 4 ],
      • "on_exceed": { … 2 }
      },
    • "errors": [
      • { … 4 },
      • { … 4 }
      ],
    • "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": [ … 1 ],
      • "observed_at": null,
      • "received_at": 1794541726312,
      • "fetched_at": 1794542025566,
      • "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\""
      }
    }

Details

Authentication
None. Public endpoint.
Rate limit
1200 requests per minute per IP
Server cache
30s
Edge micro-cache
10s
Update frequency
Rebuilt on request from the catalog file and the latest probe results (probe runs every 5 minutes).
Data sources
CoinBoss endpoint catalog + sd_api_probe (results of real calls made by the API probe).
Timestamps
Unix epoch milliseconds (UTC) unless the field description says otherwise
Response format
json
Stability
Stable
Available since
2026-11-11

Live status

AvailableChecked 2026-11-13 03:53:45 UTCHTTP 2006 msSchema matchesNewest data point 5m old

Availability, last 30 days

100% of 408 checks passed

Errors

Failed calls share one shape on every endpoint. The full list is on the errors page. Errors and rate limits →

CodeHTTPMeaningWhat to do
INVALID_PARAM400A 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.
UNAUTHORIZED401The `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.
FORBIDDEN403The route is not part of the public API (internal or account-only).Do not retry.
NOT_FOUND404Unknown route, or the requested coin / exchange / fund does not exist.Do not retry; check the path and identifiers against the catalog.
RATE_LIMITED429More requests than the per-minute limit. `Retry-After` gives the seconds to wait.Wait for `Retry-After`, then retry with backoff.
INTERNAL500Unexpected 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_FAILED503The 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.
UNAVAILABLE501 / 503The 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_FAILED200Some 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

GET/api/meta/catalogAvailable
Parameters

No parameters.

Request URLhttps://www.coinboss.com/api/meta/catalog
Choose an endpoint and press “Send request”. The response, headers and timing will appear here.