/api/meta/endpoint
GETAvailableFRESH

Endpoint documentation

Full documentation of one endpoint: parameters, field table generated from real responses, a captured example response, verified samples, 30-day probe history, errors and limits.

GET/api/meta/endpoint

Request

Query parameters

NameTypeRequiredDefaultAllowed valuesDescription
idstringRequired——Endpoint id from the catalog (for example `sd-oi`). Unknown ids return 404. Example: sd-oi

Example request

curl -s "https://www.coinboss.com/api/meta/endpoint?id=sd-oi"

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.endpoint/1`).
nownumbermsServer time when the response was built.
endpointobject—Catalog record of the endpoint. Map keys are attribute names such as `id`, `path`, `status`, `params`, `category`, `sources`, `units`, `formula`. dynamic keys: id,cat,kind,method,path,title
endpoint.{*}array|number|object|string|null—Value of one attribute: text, a number, a list (`params`, `required`, `ts_fields`) or an object (`probe`, `category`, `example_query`); null when not set.
endpoint.{*}[]object|string—Element of a list attribute: a parameter definition in `params`, or a name in `required` / `ts_fields`. may be absent
endpoint.{*}[].namestring—Name. may be absent
endpoint.{*}[].instring—Where the parameter is sent: `query` or `path`. may be absent
endpoint.{*}[].typestring—Type. may be absent
endpoint.{*}[].requiredboolean—true when the parameter must be sent. may be absent
endpoint.{*}[].defaultnull—Value used when the parameter is omitted; null when there is no default. may be absent
endpoint.{*}[].enumnull—List of accepted values; null when the parameter is not restricted to a list. may be absent
endpoint.{*}[].minnull—Minimum. may be absent
endpoint.{*}[].maxnull—Maximum. may be absent
endpoint.{*}[].examplestring—Example value of the parameter; null when none is given. may be absent
endpoint.{*}[].descstring—Description of the parameter. may be absent
endpoint.{*}.checked_atnumbermsTimestamp. may be absent
endpoint.{*}.httpnumber—HTTP status of the most recent probe request. may be absent
endpoint.{*}.okboolean—`true` when the most recent probe request returned HTTP 200 with a valid JSON body. may be absent
endpoint.{*}.schema_okboolean—`true` when the probed response matched the documented field table; `null` when no field table exists. may be absent
endpoint.{*}.latency_msnumbermsResponse time of the most recent probe request. may be absent
endpoint.{*}.bytesnumberbytesSize of the probed response body. may be absent
endpoint.{*}.qualitynull—`meta.quality` reported by the probed response (FRESH / PARTIAL / STALE …); `null` when the endpoint does not report it. may be absent
endpoint.{*}.data_age_snumber|nullsSeconds since the event. may be absent
endpoint.{*}.last_ok_atnumbermsTimestamp. may be absent
endpoint.{*}.fail_streaknumbercountNumber of consecutive failed probes; 0 when the last probe succeeded. may be absent
endpoint.{*}.idstring—Identifier. may be absent
endpoint.{*}.titlestring—Display title of the endpoint's category (inside `category`). may be absent
endpoint.{*}.coinstring—Coin symbol, upper case (for example BTC). may be absent
fieldsarray—Field table of the response, inferred from real responses; null when no table has been generated.
fields[]object—One response field: `path`, `type`, `unit`, `desc` and flags.
fields[].pathstring—Path of the field in the response: `a.b` for nesting, `[]` for array items, `{*}` for the values of a map.
fields[].typestring—Type.
fields[].unitstring|null—Unit of the values in this object.
fields[].descstring—Description of the field; null when none has been written.
fields[].optionalboolean—Present and true when the field was missing in at least one sampled response. may be absent
fields[].mapboolean—Present and true when the object is a map with data-dependent keys (coins, exchanges, dates) rather than fixed fields. may be absent
fields[].keysarray—Sample of keys seen in the map; only on fields with `map` true. may be absent
fields[].keys[]string—One sample key. may be absent
fields_generated_atnumbermsTimestamp.
fields_generated_fromarray—Request URLs whose real responses the field table was inferred from; null when there is no table.
fields_generated_from[]string—One sampled request path with query string.
exampleobject—Last successful real response captured by the probe: `request`, `captured_at`, `truncated` (original lengths of shortened arrays) and `body`; null when none.
example.requeststring—Request that produced the captured example (path and query string).
example.captured_atnumbermsTimestamp.
example.truncatedobject—What was shortened in the captured example: for each array or map, the number of items left out. Its keys depend on the documented endpoint.
example.bodyobject—Captured response of the documented endpoint, shortened. Its structure is the one described by `fields`.
verified_samplesobject|null—Results of the probe's extra sample requests (`at`, `samples` with query, HTTP status, latency, schema check); null when none ran.
verified_samples.atnumbermsTime the extra samples were last checked.
verified_samples.samplesarray—Number of samples.
verified_samples.samples[]object—Number of samples.
verified_samples.samples[].queryobject—Query parameters of the sample request.
verified_samples.samples[].query.coinstring—Coin symbol, upper case (for example BTC). may be absent
verified_samples.samples[].httpnumber—HTTP status returned.
verified_samples.samples[].okboolean—`true` when the sample returned what was expected (HTTP 200 with valid JSON, or the expected error status).
verified_samples.samples[].latency_msnumbermsResponse time of the sample request.
verified_samples.samples[].schema_okboolean|null—`true` when the sample response matched the documented field table; `null` when not checked.
verified_samples.samples[].qualitynull—`meta.quality` reported by the sample response; `null` when not reported.
verified_samples.samples[].notestring|null—Note.
probe_detailnull—Schema differences found by the last probe: `missing`, `mismatched` and `undocumented` field paths; null when there are none.
uptime_30dobject—Probe checks of this endpoint over the last 30 days: totals, success percentage and a per-day breakdown.
uptime_30d.checksnumbercountNumber of probe checks of the endpoint in the last 30 days (fewer days when tracking started later).
uptime_30d.oknumbercountNumber of those checks that succeeded.
uptime_30d.pctnumber%Percentage.
uptime_30d.daysarray—Daily values or number of days.
uptime_30d.days[]object—Daily values or number of days.
uptime_30d.days[].daystring—Calendar day (UTC).
uptime_30d.days[].checksnumbercountNumber of probe requests that day.
uptime_30d.days[].oknumbercountNumber of successful probe requests that day.
uptime_30d.days[].pctnumber%Percentage.
uptime_30d.days[].avg_msnumbermsAverage response time that day; `null` without checks.
uptime_30d.days[].max_msnumbermsSlowest response that day.
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
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.
relatedarray—All endpoints of the same category, this one included.
related[]object—One endpoint: `id`, `path` and `title`.
related[].idstring—Identifier.
related[].pathstring—Request path of the endpoint.
related[].titlestring—Short display title of the endpoint.
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).
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 this endpoint was probed 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:03 UTC from 3 real responses.

Example response

/api/meta/endpoint?id=sd-oi · Real response captured 2026-11-13 03:53:45 UTC. Long arrays and maps are shortened for display: errors had 9 items; fields had 103 items; related had 6 items; endpoint had 35 items; uptime_30d.days had 3 items; verified_samples.samples had 4 items.

  • {
    • "success": true,
    • "schema": "coinboss.meta.endpoint/1",
    • "now": 1794542025825,
    • "endpoint": {
      • "id": "sd-oi",
      • "cat": "open-interest"
      },
    • "fields": [
      • { … 4 },
      • { … 4 }
      ],
    • "fields_generated_at": 1794438008862,
    • "fields_generated_from": [
      • "/api/sd/oi?coin=BTC",
      • "/api/sd/oi?coin=ETH",
      • "/api/sd/oi?coin=SOL",
      • "/api/sd/oi?coin=ARKM"
      ],
    • "example": {
      • "request": "/api/sd/oi?coin=BTC",
      • "captured_at": 1794541954384,
      • "truncated": { … 4 },
      • "body": { … 17 }
      },
    • "verified_samples": {
      • "at": 1794540459506,
      • "samples": [ … 2 ]
      },
    • "probe_detail": {
      • "missing": [],
      • "mismatched": [],
      • "undocumented": [ … 6 ]
      },
    • "uptime_30d": {
      • "checks": 410,
      • "ok": 410,
      • "pct": 100,
      • "days": [ … 2 ]
      },
    • "errors": [
      • { … 4 },
      • { … 4 }
      ],
    • "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 }
      },
    • "related": [
      • { … 3 },
      • { … 3 }
      ],
    • "probe": {
      • "last_run_at": 1794541726312,
      • "age_s": 300,
      • "interval_s": 300,
      • "fresh": true,
      • "error": null
      },
    • "meta": {
      • "schema": "coinboss.meta.endpoint/1",
      • "source": [ … 1 ],
      • "observed_at": null,
      • "received_at": 1794541954384,
      • "fetched_at": 1794542025825,
      • "window": "latest",
      • "cache_ttl_s": 30,
      • "quality": "FRESH",
      • "is_stale": false,
      • "fallback": "field table comes from the last schema generation; example is the last successful real response"
      }
    }

Verified samples

Besides the example above, the probe calls this endpoint with these parameters and checks the schema each time.

ParametersHTTPLatencyResult
id=sd-funding2002 msPass FRESH
id=liquidations-overview2002 msPass FRESH
—4002 msPass returns the expected error

Checked 2026-11-13 03:29:26 UTC

Details

Authentication
None. Public endpoint.
Rate limit
1200 requests per minute per IP
Server cache
30s
Edge micro-cache
10s
Data sources
CoinBoss endpoint catalog, schemas generated by the API probe, sd_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 2004 msSchema matchesNewest data point 71s old

Availability, last 30 days

99.75% of 407 checks passed

Schema drift detected by the last probe
  • Returned but not documented: probe_detail.missing, probe_detail.mismatched, probe_detail.undocumented, probe_detail.undocumented[]

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/endpointAvailable
Parameters

string — Endpoint id from the catalog (for example `sd-oi`). Unknown ids return 404.

Request URLhttps://www.coinboss.com/api/meta/endpoint?id=sd-oi
Choose an endpoint and press “Send request”. The response, headers and timing will appear here.