Funding for one coin
Self-data layer: funding for one coin (8h-normalised, weighted)
/api/sd/fundingRequest
Query parameters
| Name | Type | Required | Default | Allowed values | Description |
|---|---|---|---|---|---|
| coin | string | Required | — | — | 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.
| Field | Type | Unit | Description |
|---|---|---|---|
| success | boolean | — | true when the request succeeded. On failure the body is `{ success: false, code, error, request_id }`. |
| coin | string | — | Coin symbol, upper case (for example BTC). |
| now | number | ms | Server time when the response was built. |
| unit | string | — | Unit of all rate fields in this response: `fraction` (0.0001 = 0.01 %). |
| avg_8h | number | fraction per 8h | Simple mean of the 8h-normalised rates, one contract per exchange. |
| oi_weighted_8h | number | fraction per 8h | Open-interest-weighted mean of the 8h-normalised rates. |
| apr_pct | number | % per year | Simple annualisation: 8h rate × 3 × 365 × 100. |
| apr_basis | string | — | Which aggregate the headline `apr_pct` is based on. |
| n_exchanges | number | — | Number of exchanges contributing. |
| n_normalized | number | — | Exchanges whose funding interval is known and could be normalised to 8h. |
| n_unknown_interval | number | — | Exchanges left out of the aggregates because their funding interval is unknown. |
| settled_cum_7d | object | — | Sum of actually settled funding rates over the last 7 days, averaged across exchanges with settlement history. |
| settled_cum_7d.avg | number | fraction | Simple mean across exchanges. |
| settled_cum_7d.oi_weighted | number | fraction | Open-interest-weighted mean. |
| settled_cum_7d.n | number | — | Exchanges with a complete window. |
| settled_cum_30d | object | — | Same, over 30 days. |
| settled_cum_30d.avg | number | fraction | Simple mean across exchanges. |
| settled_cum_30d.oi_weighted | number | fraction | Open-interest-weighted mean. |
| settled_cum_30d.n | number | — | Exchanges with a complete window. |
| by_exchange | array | — | 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[].exchange | string | — | Exchange id, lower case (for example `binance`). |
| by_exchange[].symbol | string | — | Instrument symbol as normalised by CoinBoss (for example BTCUSDT). |
| by_exchange[].margin | string | — | Margin currency class. |
| by_exchange[].kind | string | — | Kind. |
| by_exchange[].primary | boolean | — | true for the contract that represents the exchange in the aggregates. |
| by_exchange[].rate | number | — | Funding rate of the current period as published by the exchange. |
| by_exchange[].interval_h | number | h | Funding interval. |
| by_exchange[].rate_8h | number | — | Rate normalised to an 8-hour period: rate × 8 / interval_h. |
| by_exchange[].apr_pct | number | % per year | Annualised percentage. |
| by_exchange[].next_funding_time | number|null | ms | Next settlement time. |
| by_exchange[].next_derived | boolean | — | true when the next settlement time was derived from the interval instead of published by the exchange. |
| by_exchange[].predicted_rate | null | — | Indicative next-period rate where the exchange publishes one; otherwise null. |
| by_exchange[].oi_usd | number|null | USD | Open interest in USD notional. |
| by_exchange[].updated_at | number | ms | When this row was last updated. |
| by_exchange[].age_s | number | s | Seconds since this row was last updated. |
| by_exchange[].is_stale | boolean | — | true when the row is older than the freshness window; stale rows are not used in totals. |
| by_exchange[].settled | object|null | — | Actual settlement records for this contract; null when the exchange has no public history. |
| by_exchange[].settled.last_rate | number | — | Rate of the most recent settlement. may be absent |
| by_exchange[].settled.last_time | number | ms | Time of the most recent settlement. may be absent |
| by_exchange[].settled.interval_h | number | h | Funding interval. may be absent |
| by_exchange[].settled.cum_7d | number | — | Sum of settled rates over the last 7 days. may be absent |
| by_exchange[].settled.n_7d | number | — | Settlements found in the last 7 days. may be absent |
| by_exchange[].settled.n_7d_expected | number | — | Settlements expected in 7 days at this interval. may be absent |
| by_exchange[].settled.cum_7d_complete | boolean | — | true when no settlement is missing in the 7-day window. may be absent |
| by_exchange[].settled.cum_30d | number | — | Sum of settled rates over the last 30 days. may be absent |
| by_exchange[].settled.n_30d | number | — | Settlements found in the last 30 days. may be absent |
| by_exchange[].settled.n_30d_expected | number | — | Settlements expected in 30 days at this interval. may be absent |
| by_exchange[].settled.cum_30d_complete | boolean | — | true when no settlement is missing in the 30-day window. may be absent |
| by_exchange[].settled.history_from | number | ms | Earliest settlement record held for this contract. may be absent |
| other_contracts | array | — | 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[].exchange | string | — | Exchange id, lower case (for example `binance`). |
| other_contracts[].symbol | string | — | Instrument symbol as normalised by CoinBoss (for example BTCUSDT). |
| other_contracts[].margin | string | — | Margin currency class. |
| other_contracts[].kind | string | — | Kind. |
| other_contracts[].primary | boolean | — | true for the contract that represents the exchange in the aggregates. |
| other_contracts[].rate | number | — | Funding rate of the current period as published by the exchange. |
| other_contracts[].interval_h | number|null | h | Funding interval. |
| other_contracts[].rate_8h | number|null | — | Rate normalised to an 8-hour period: rate × 8 / interval_h. |
| other_contracts[].apr_pct | number|null | % per year | Annualised percentage. |
| other_contracts[].next_funding_time | number|null | ms | Next settlement time. |
| other_contracts[].next_derived | boolean | — | true when the next settlement time was derived from the interval instead of published by the exchange. |
| other_contracts[].predicted_rate | number|null | — | Indicative next-period rate where the exchange publishes one; otherwise null. |
| other_contracts[].oi_usd | number|null | USD | Open interest in USD notional. |
| other_contracts[].updated_at | number | ms | When this row was last updated. |
| other_contracts[].age_s | number | s | Seconds since this row was last updated. |
| other_contracts[].is_stale | boolean | — | true when the row is older than the freshness window; stale rows are not used in totals. |
| other_contracts[].settled | object|null | — | Actual settlement records for this contract; null when the exchange has no public history. |
| other_contracts[].settled.last_rate | number | — | Rate of the most recent settlement. may be absent |
| other_contracts[].settled.last_time | number | ms | Time of the most recent settlement. may be absent |
| other_contracts[].settled.interval_h | number | h | Funding interval. may be absent |
| other_contracts[].settled.cum_7d | number | — | Sum of settled rates over the last 7 days. may be absent |
| other_contracts[].settled.n_7d | number | — | Settlements found in the last 7 days. may be absent |
| other_contracts[].settled.n_7d_expected | number | — | Settlements expected in 7 days at this interval. may be absent |
| other_contracts[].settled.cum_7d_complete | boolean | — | true when no settlement is missing in the 7-day window. may be absent |
| other_contracts[].settled.cum_30d | number | — | Sum of settled rates over the last 30 days. may be absent |
| other_contracts[].settled.n_30d | number | — | Settlements found in the last 30 days. may be absent |
| other_contracts[].settled.n_30d_expected | number | — | Settlements expected in 30 days at this interval. may be absent |
| other_contracts[].settled.cum_30d_complete | boolean | — | true when no settlement is missing in the 30-day window. may be absent |
| other_contracts[].settled.history_from | number | ms | Earliest settlement record held for this contract. may be absent |
| coverage | object | — | What is and is not included in the numbers above. Compare this before comparing totals with another source. |
| coverage.settle_history_exchanges | array | — | 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_history | array | — | 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_interval | array | — | Rows whose funding interval could not be determined. empty in the samples used to generate this table |
| coverage.no_liveness_excluded | array | — | 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 |
| method | object | — | Plain-text statement of the formulas used for this response. |
| method.rate | string | — | Funding rate of the current period as published by the exchange. |
| method.rate_8h | string | — | Rate normalised to an 8-hour period: rate × 8 / interval_h. |
| method.apr_pct | string | % per year | Annualised percentage. |
| method.aggregate | string | — | Aggregate across exchanges. |
| method.settled | string | — | Actual settlement records for this contract; null when the exchange has no public history. |
| method.predicted_rate | string | — | Indicative next-period rate where the exchange publishes one; otherwise null. |
| method.liveness | string | — | 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"
- "other_contracts"
- "coverage"
- "settle_history_exchanges"
- "no_settle_history"
- "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.
| Parameters | HTTP | Latency | Result |
|---|---|---|---|
| coin=ETH | 200 | 43 ms | Pass |
| coin=SOL | 200 | 44 ms | Pass |
| coin=ARKM | 200 | 41 ms | Pass |
| — | 400 | 1 ms | Pass 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
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 →
| 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/sd/fundingAvailablestring — Coin symbol; 400 when missing. Alias: `base`.
https://www.coinboss.com/api/sd/funding?coin=BTCMore in this category
- Funding for one coin /api/sd/funding
- OI-weighted / volume-weighted funding history /api/currency/funding-weighted
- Per-exchange funding-rate detail for one coin /api/derivatives/funding-detail
- Accumulated funding per exchange for one coin /api/funding/accumulated
- Funding arbitrage opportunities /api/funding/arbitrage
- Funding-rate chart series for one coin /api/funding/chart
- Current funding rates for one coin across exchanges /api/funding/coin
- Accumulated funding fees /api/funding/fees
- Funding-rate heatmap /api/funding/heatmap
- Funding-rate history for one coin on one exchange /api/funding/history
- Funding-rate matrix /api/funding/matrix
- Funding-rate list per coin /api/market/funding
- Cross-exchange funding-rate spread ranking /api/market/funding-spread