/api/sd/funding
GETAvailable

Funding for one coin

Self-data layer: funding for one coin (8h-normalised, weighted)

GET/api/sd/funding

Request

Query parameters

NameTypeRequiredDefaultAllowed valuesDescription
coinstringRequired——Coin symbol; 400 when missing. Alias: `base`. Example: BTC

Example request

curl -s "https://www.coinboss.com/api/sd/funding?coin=BTC"

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 }`.
coinstring—Coin symbol, upper case (for example BTC).
nownumbermsServer time when the response was built.
unitstring—Unit of all rate fields in this response: `fraction` (0.0001 = 0.01 %).
avg_8hnumberfraction per 8hSimple mean of the 8h-normalised rates, one contract per exchange.
oi_weighted_8hnumberfraction per 8hOpen-interest-weighted mean of the 8h-normalised rates.
apr_pctnumber% per yearSimple annualisation: 8h rate × 3 × 365 × 100.
apr_basisstring—Which aggregate the headline `apr_pct` is based on.
n_exchangesnumber—Number of exchanges contributing.
n_normalizednumber—Exchanges whose funding interval is known and could be normalised to 8h.
n_unknown_intervalnumber—Exchanges left out of the aggregates because their funding interval is unknown.
settled_cum_7dobject—Sum of actually settled funding rates over the last 7 days, averaged across exchanges with settlement history.
settled_cum_7d.avgnumberfractionSimple mean across exchanges.
settled_cum_7d.oi_weightednumberfractionOpen-interest-weighted mean.
settled_cum_7d.nnumber—Exchanges with a complete window.
settled_cum_30dobject—Same, over 30 days.
settled_cum_30d.avgnumberfractionSimple mean across exchanges.
settled_cum_30d.oi_weightednumberfractionOpen-interest-weighted mean.
settled_cum_30d.nnumber—Exchanges with a complete window.
by_exchangearray—One row per exchange: its main contract for this coin (the one with the largest open interest).
by_exchange[]object—Per-exchange breakdown.
by_exchange[].exchangestring—Exchange id, lower case (for example `binance`).
by_exchange[].symbolstring—Instrument symbol as normalised by CoinBoss (for example BTCUSDT).
by_exchange[].marginstring—Margin currency class.
by_exchange[].kindstring—Kind.
by_exchange[].primaryboolean—true for the contract that represents the exchange in the aggregates.
by_exchange[].ratenumber—Funding rate of the current period as published by the exchange.
by_exchange[].interval_hnumberhFunding interval.
by_exchange[].rate_8hnumber—Rate normalised to an 8-hour period: rate × 8 / interval_h.
by_exchange[].apr_pctnumber% per yearAnnualised percentage.
by_exchange[].next_funding_timenumber|nullmsNext settlement time.
by_exchange[].next_derivedboolean—true when the next settlement time was derived from the interval instead of published by the exchange.
by_exchange[].predicted_ratenull—Indicative next-period rate where the exchange publishes one; otherwise null.
by_exchange[].oi_usdnumber|nullUSDOpen interest in USD notional.
by_exchange[].updated_atnumbermsWhen this row was last updated.
by_exchange[].age_snumbersSeconds since this row was last updated.
by_exchange[].is_staleboolean—true when the row is older than the freshness window; stale rows are not used in totals.
by_exchange[].settledobject|null—Actual settlement records for this contract; null when the exchange has no public history.
by_exchange[].settled.last_ratenumber—Rate of the most recent settlement. may be absent
by_exchange[].settled.last_timenumbermsTime of the most recent settlement. may be absent
by_exchange[].settled.interval_hnumberhFunding interval. may be absent
by_exchange[].settled.cum_7dnumber—Sum of settled rates over the last 7 days. may be absent
by_exchange[].settled.n_7dnumber—Settlements found in the last 7 days. may be absent
by_exchange[].settled.n_7d_expectednumber—Settlements expected in 7 days at this interval. may be absent
by_exchange[].settled.cum_7d_completeboolean—true when no settlement is missing in the 7-day window. may be absent
by_exchange[].settled.cum_30dnumber—Sum of settled rates over the last 30 days. may be absent
by_exchange[].settled.n_30dnumber—Settlements found in the last 30 days. may be absent
by_exchange[].settled.n_30d_expectednumber—Settlements expected in 30 days at this interval. may be absent
by_exchange[].settled.cum_30d_completeboolean—true when no settlement is missing in the 30-day window. may be absent
by_exchange[].settled.history_fromnumbermsEarliest settlement record held for this contract. may be absent
other_contractsarray—Further contracts of the same coin (USDC, coin-margined, …). Not part of the aggregates.
other_contracts[]object—One additional funding contract of an exchange (coin-margined, USDC, …) that is not its primary contract and is excluded from the aggregates.
other_contracts[].exchangestring—Exchange id, lower case (for example `binance`).
other_contracts[].symbolstring—Instrument symbol as normalised by CoinBoss (for example BTCUSDT).
other_contracts[].marginstring—Margin currency class.
other_contracts[].kindstring—Kind.
other_contracts[].primaryboolean—true for the contract that represents the exchange in the aggregates.
other_contracts[].ratenumber—Funding rate of the current period as published by the exchange.
other_contracts[].interval_hnumber|nullhFunding interval.
other_contracts[].rate_8hnumber|null—Rate normalised to an 8-hour period: rate × 8 / interval_h.
other_contracts[].apr_pctnumber|null% per yearAnnualised percentage.
other_contracts[].next_funding_timenumber|nullmsNext settlement time.
other_contracts[].next_derivedboolean—true when the next settlement time was derived from the interval instead of published by the exchange.
other_contracts[].predicted_ratenumber|null—Indicative next-period rate where the exchange publishes one; otherwise null.
other_contracts[].oi_usdnumber|nullUSDOpen interest in USD notional.
other_contracts[].updated_atnumbermsWhen this row was last updated.
other_contracts[].age_snumbersSeconds since this row was last updated.
other_contracts[].is_staleboolean—true when the row is older than the freshness window; stale rows are not used in totals.
other_contracts[].settledobject|null—Actual settlement records for this contract; null when the exchange has no public history.
other_contracts[].settled.last_ratenumber—Rate of the most recent settlement. may be absent
other_contracts[].settled.last_timenumbermsTime of the most recent settlement. may be absent
other_contracts[].settled.interval_hnumberhFunding interval. may be absent
other_contracts[].settled.cum_7dnumber—Sum of settled rates over the last 7 days. may be absent
other_contracts[].settled.n_7dnumber—Settlements found in the last 7 days. may be absent
other_contracts[].settled.n_7d_expectednumber—Settlements expected in 7 days at this interval. may be absent
other_contracts[].settled.cum_7d_completeboolean—true when no settlement is missing in the 7-day window. may be absent
other_contracts[].settled.cum_30dnumber—Sum of settled rates over the last 30 days. may be absent
other_contracts[].settled.n_30dnumber—Settlements found in the last 30 days. may be absent
other_contracts[].settled.n_30d_expectednumber—Settlements expected in 30 days at this interval. may be absent
other_contracts[].settled.cum_30d_completeboolean—true when no settlement is missing in the 30-day window. may be absent
other_contracts[].settled.history_fromnumbermsEarliest settlement record held for this contract. may be absent
coverageobject—What is and is not included in the numbers above. Compare this before comparing totals with another source.
coverage.settle_history_exchangesarray—Exchanges for which actual settlement records are collected.
coverage.settle_history_exchanges[]string—Exchange id for which actual funding settlement records are collected for this coin.
coverage.no_settle_historyarray—Exchanges without a public settlement-history source; their `settled` is null.
coverage.no_settle_history[]string—Exchange id of a primary contract that has no collected settlement history, so its `settled` block is null.
coverage.unknown_intervalarray—Rows whose funding interval could not be determined. empty in the samples used to generate this table
coverage.no_liveness_excludedarray—Rows excluded because the contract shows no sign of trading (no recent ticker, open interest or quote). empty in the samples used to generate this table
methodobject—Plain-text statement of the formulas used for this response.
method.ratestring—Funding rate of the current period as published by the exchange.
method.rate_8hstring—Rate normalised to an 8-hour period: rate × 8 / interval_h.
method.apr_pctstring% per yearAnnualised percentage.
method.aggregatestring—Aggregate across exchanges.
method.settledstring—Actual settlement records for this contract; null when the exchange has no public history.
method.predicted_ratestring—Indicative next-period rate where the exchange publishes one; otherwise null.
method.livenessstring—Plain-text rule for dropping dead contracts: a funding row counts only with a ticker within 1h, open interest within 3h or an own quote within 3h.

Generated 2026-11-11 23:00 UTC from 4 real responses.

Example response

/api/sd/funding?coin=BTC · Real response captured 2026-11-13 03:57:42 UTC. Long arrays and maps are shortened for display: by_exchange had 23 items; other_contracts had 18 items; coverage.settle_history_exchanges had 16 items.

  • {
    • "success": true,
    • "coin": "BTC",
    • "now": 1794542262267,
    • "unit": "fraction",
    • "avg_8h": 0.00006731782608695654,
    • "oi_weighted_8h": 0.00005745116946489526,
    • "apr_pct": 6.2909,
    • "apr_basis": "oi_weighted_8h",
    • "n_exchanges": 23,
    • "n_normalized": 23,
    • "n_unknown_interval": 0,
    • "settled_cum_7d": {
      • "avg": 0.0016089506666666666,
      • "oi_weighted": 0.0015317230977727185,
      • "n": 15
      },
    • "settled_cum_30d": {
      • "avg": 0.0066857086666666675,
      • "oi_weighted": 0.006362887957085279,
      • "n": 15
      },
    • "by_exchange": [
      • { … 17 },
      • { … 17 }
      ],
    • "other_contracts": [
      • { … 17 },
      • { … 17 }
      ],
    • "coverage": {
      • "settle_history_exchanges": [ … 8 ],
      • "no_settle_history": [ … 7 ],
      • "unknown_interval": [],
      • "no_liveness_excluded": []
      },
    • "method": {
      • "rate": "current funding-period rate as published by the exchange (charged at next settlement; may change until then)",
      • "rate_8h": "rate × 8 / interval_h (rows with unknown interval excluded from aggregates)",
      • "apr_pct": "per exchange: rate_8h × 3 × 365 × 100; headline apr_pct = oi_weighted_8h × 3 × 365 × 100 (falls back to avg_8h when no OI weights; see apr_basis). Simple annual…",
      • "aggregate": "one contract per exchange (largest OI); avg_8h = simple mean; oi_weighted_8h = Σ(rate_8h × oi_usd)/Σoi_usd",
      • "settled": "actual settlement records collected from each exchange funding-history endpoint; cum = Σ settled rates in window",
      • "predicted_rate": "exchange-published indicative/next-period rate where available",
      • "liveness": "a funding row is used only if the same contract on the same exchange has a ticker within 1h, open interest within 3h, or a self-collected quote within 3h; rows …"
      }
    }

Verified samples

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

ParametersHTTPLatencyResult
coin=ETH20043 msPass
coin=SOL20044 msPass
coin=ARKM20041 msPass
—4001 msPass returns the expected error

Checked 2026-11-13 03:57:42 UTC

Details

Authentication
None. Public endpoint.
Rate limit
1200 requests per minute per IP
Server cache
20s
Edge micro-cache
10s
Update frequency
every 60 s for most venues (written together with tickers; binance dedicated 60 s job); remaining funding jobs and coin-margined contracts every 5 min; settlement records hourly
Window
latest snapshot (funding rows within 4 h on contracts with a live ticker / OI); settled sums over 7 d and 30 d
Data sources
Current funding rates polled by in-house collectors from the public REST APIs of 24 perpetual venues (e.g. binance, okx, bybit, bitget, gate, hyperliquid).
Exchange coverage
24 venues for current rates; settlement history from 16 venues (coin-margined perpetuals of binance, okx, bybit kept separately)
Units
unit = 'fraction' (0.0001 = 0.01%); rate_8h normalized to 8 h; apr_pct in percent; times in Unix ms
Method
one contract per exchange (largest OI); rate_8h = rate x 8 / interval_hours; avg_8h = simple mean; oi_weighted_8h = SUM(rate_8h x oi_usd) / SUM(oi_usd); apr_pct = rate_8h x 3 x 365 x 100; settled 7 d / 30 d = SUM of settlement records with a completeness flag (>= 90% of expected settlements)
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:57:42 UTCHTTP 20052 msSchema matchesNewest data point 1s old

Availability, last 30 days

100% of 410 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/sd/fundingAvailable
Parameters

string — Coin symbol; 400 when missing. Alias: `base`.

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