Getting started

Quick start

Three minutes, one key and one request. This page goes from creating the account to reading the first response, then shows how to fetch several data families in a single call.

#Get a key

Create an account: your first key is generated automatically, and waits for you in the console. The free tier opens four data families (price and volume, derivatives, indicators, macro) with no card: enough to find out in one evening whether the data suits you.

The key is shown masked in the console: reveal it or copy it when you need it, then keep it in a secrets manager or an environment variable. If it is compromised, one rotation replaces it.

#The first call

Bitcoin’s composite funding rate, aggregated over every venue that publishes it and brought back to an eight-hour basis.

export BYTNODE_KEY="your_key"

curl -H "X-API-KEY: $BYTNODE_KEY" \
  "https://api.bytnode.com/v1/funding/rate?symbol=BTCUSDT"

Only two things are mandatory: the X-API-KEY header and the symbol parameter. There is no default symbol. A request without a symbol is refused rather than served with Bitcoin, which is not necessarily what you wanted.

#Reading the response

Response
{
  "status": "ok",
  "timestamp": 1775648290510,
  "data_type": "funding_rate_8h",
  "data": {
    "bucket": "2026-08-29T08:00:00+00:00",
    "rate": 0.000082,
    "apr": 0.08979,
    "exchange_count": 7
  }
}

The four keys of the envelope

  • status: ok or error.
  • timestamp: the instant the response was produced, in milliseconds. It is not the timestamp of the data: the data carries its own timestamp or its bucket.
  • data_type: the name of the type returned. It lets you route a response without relying on the path called.
  • data: the payload, which is an object, a list, or null when nothing is available.

What this response says in particular

  • bucket opens the eight-hour window the rate was computed over, aligned on 00:00, 08:00 and 16:00 UTC.
  • apr annualises the rate, here about 9 % a year.
  • exchange_count says how many venues the composite was built on. That count varies from one window to the next: it is information, not a constant.

#Several families in one request

Calling ten endpoints to fill a dashboard is a waste: /v1/snapshot does the job in one trip. Each parameter is a field name, its value is the depth asked for: a number of rows or of minutes depending on the field, true for the fields that only have a current value.

curl
Twenty-four hourly candles, funding, one hour of open interest delta, two hours of liquidations, hourly CVD and the sentiment index.
curl -H "X-API-KEY: $BYTNODE_KEY" \
  "https://api.bytnode.com/v1/snapshot?symbol=BTCUSDT\
&klines_1h=24\
&funding_rate_8h=true\
&oi_delta=60\
&liq_cumulative=120\
&cvd@1h=24\
&fear_greed=true"

Multi-timeframe fields are asked for with the @tf suffix (cvd@1h), and the key comes back unchanged in the response. The detail of the sixty-one fields, along with the unavailable and coverage keys that come with the response, is on the Snapshot page.

#What next