Bitcoin Difficulty Ribbon

8-window simple moving average ribbon of Bitcoin's network difficulty.

The Difficulty Ribbon: 9/14/25/40/60/90/128/200-day SMAs of network difficulty. Compression of the ribbon has historically preceded major price bottoms.

How to call

Request format

GET
curl -X GET "https://newhedge.io/api/v2/metrics/difficulty-ribbon/METRIC_NAME?api_token=YOUR_TOKEN"
Query params

api_token (required) — 24 character token.

resolution (optional) — 1d (default), 12h, 4h, 1h, 30m, 10m, coarsest to finest. Finer buckets are served to Advanced and Enterprise accounts, and only for the metrics that ingest them (listed per metric below); see Resolutions.

before (optional) — exclusive cursor, returns observations older than this timestamp_ms. Works on every resolution.

limit (optional) — the most recent N observations, maximum 5000. Finer resolutions page by default (2500); a 1d request returns the whole series unless you send limit or before.

before and limit narrow a time series. A response with no single time axis, such as a hash keyed by venue or a labelled snapshot table, has nothing to cut on. It is returned whole, and both parameters are ignored rather than rejected.

A before that is not a positive epoch-millisecond timestamp is a 400. It is the one paging value we reject rather than ignore, because a page size has a sensible default and a cursor does not.

include (optional) — definition wraps the response as {"definition": …, "data": …} and returns the record shown under each metric; see Definitions. Any other value is a 400.

Path params

:metric_name — one of the metric names listed below.

Responses

200 with JSON payload, 400 for an unknown include value, 401 for missing/invalid token, 404 for missing resources. A 404 for a metric withdrawn on purpose adds withdrawn, withdrawn_on and reason, for example {"error":"Metric not found","withdrawn":true,"withdrawn_on":"2026-09-07","reason":"The venue's public feed reports insurance-fund settlements, not liquidation orders."}; a removed chart can add successor.

Plan and quota refusals keep these statuses and error texts and add code, required_plan, current_plan, feature, upgrade_url, limit and resets_at where they apply. A Pro token whose history window removed points also gets the X-Newhedge-History-Truncated headers, and for a Pro token X-Newhedge-Available-From is the start of the window. See Errors and plan limits.

Metrics

Each metric is fetched independently. Responses are trimmed samples to show structure.

9 metrics
Metric

Network Difficultynetwork_difficulty

Data used by the Bitcoin Difficulty Ribbon chart.

Resolutions: 1d, 12h, 4h, 1h, 30m, 10m.

Endpoint
https://newhedge.io/api/v2/metrics/difficulty-ribbon/network_difficulty?api_token=YOUR_TOKEN

Replace `YOUR_TOKEN` with your API token.

Sample response
200 Successful response
[
  [
    1792972800000,
    140577680051919
  ],
  [
    1793059200000,
    140577680051919
  ],
  [
    1793145600000,
    140577680051919
  ]
]
Definition (from the chart description)

Units: difficulty

Timestamp (1d): Labelled 00:00 UTC of the day it describes.

Timestamp (finer resolutions): A finer resolution is labelled in UTC at the end of the interval it covers, not at its start. Add include=definition to a request and the definition describes the bucket that request was served.

Calendar: calendar_daily

Metric

9-Day SMAnetwork_difficulty_sma_9

Data used by the Bitcoin Difficulty Ribbon chart.

Resolutions: 1d, 12h, 4h, 1h, 30m, 10m.

Endpoint
https://newhedge.io/api/v2/metrics/difficulty-ribbon/network_difficulty_sma_9?api_token=YOUR_TOKEN

Replace `YOUR_TOKEN` with your API token.

Sample response
200 Successful response
[
  [
    1792972800000,
    140577680051919.0
  ],
  [
    1793059200000,
    140577680051919.0
  ],
  [
    1793145600000,
    140577680051919.0
  ]
]
Definition (from the chart description)

Units: difficulty

Timestamp (1d): Labelled 00:00 UTC of the day it describes.

Timestamp (finer resolutions): A finer resolution is labelled in UTC at the end of the interval it covers, not at its start. Add include=definition to a request and the definition describes the bucket that request was served.

Calendar: calendar_daily

Metric

14-Day SMAnetwork_difficulty_sma_14

Data used by the Bitcoin Difficulty Ribbon chart.

Resolutions: 1d, 12h, 4h, 1h, 30m, 10m.

Endpoint
https://newhedge.io/api/v2/metrics/difficulty-ribbon/network_difficulty_sma_14?api_token=YOUR_TOKEN

Replace `YOUR_TOKEN` with your API token.

Sample response
200 Successful response
[
  [
    1792972800000,
    138893034830235.9
  ],
  [
    1793059200000,
    139454583237463.6
  ],
  [
    1793145600000,
    140016131644691.3
  ]
]
Definition (from the chart description)

Units: difficulty

Timestamp (1d): Labelled 00:00 UTC of the day it describes.

Timestamp (finer resolutions): A finer resolution is labelled in UTC at the end of the interval it covers, not at its start. Add include=definition to a request and the definition describes the bucket that request was served.

Calendar: calendar_daily

Metric

25-Day SMAnetwork_difficulty_sma_25

Data used by the Bitcoin Difficulty Ribbon chart.

Resolutions: 1d, 12h, 4h, 1h, 30m, 10m.

Endpoint
https://newhedge.io/api/v2/metrics/difficulty-ribbon/network_difficulty_sma_25?api_token=YOUR_TOKEN

Replace `YOUR_TOKEN` with your API token.

Sample response
200 Successful response
[
  [
    1792972800000,
    136176783383204
  ],
  [
    1793059200000,
    136489607647301.2
  ],
  [
    1793145600000,
    136804074755348.8
  ]
]
Definition (from the chart description)

Units: difficulty

Timestamp (1d): Labelled 00:00 UTC of the day it describes.

Timestamp (finer resolutions): A finer resolution is labelled in UTC at the end of the interval it covers, not at its start. Add include=definition to a request and the definition describes the bucket that request was served.

Calendar: calendar_daily

Metric

40-Day SMAnetwork_difficulty_sma_40

Data used by the Bitcoin Difficulty Ribbon chart.

Resolutions: 1d, 12h, 4h, 1h, 30m, 10m.

Endpoint
https://newhedge.io/api/v2/metrics/difficulty-ribbon/network_difficulty_sma_40?api_token=YOUR_TOKEN

Replace `YOUR_TOKEN` with your API token.

Sample response
200 Successful response
[
  [
    1792972800000,
    134629077971377.9
  ],
  [
    1793059200000,
    134957250229779.8
  ],
  [
    1793145600000,
    135285422488181.7
  ]
]
Definition (from the chart description)

Units: difficulty

Timestamp (1d): Labelled 00:00 UTC of the day it describes.

Timestamp (finer resolutions): A finer resolution is labelled in UTC at the end of the interval it covers, not at its start. Add include=definition to a request and the definition describes the bucket that request was served.

Calendar: calendar_daily

Metric

60-Day SMAnetwork_difficulty_sma_60

Data used by the Bitcoin Difficulty Ribbon chart.

Resolutions: 1d, 12h, 4h, 1h, 30m, 10m.

Endpoint
https://newhedge.io/api/v2/metrics/difficulty-ribbon/network_difficulty_sma_60?api_token=YOUR_TOKEN

Replace `YOUR_TOKEN` with your API token.

Sample response
200 Successful response
[
  [
    1792972800000,
    132017153463713.5
  ],
  [
    1793059200000,
    132263330188792.2
  ],
  [
    1793145600000,
    132509506913870.9
  ]
]
Definition (from the chart description)

Units: difficulty

Timestamp (1d): Labelled 00:00 UTC of the day it describes.

Timestamp (finer resolutions): A finer resolution is labelled in UTC at the end of the interval it covers, not at its start. Add include=definition to a request and the definition describes the bucket that request was served.

Calendar: calendar_daily

Metric

90-Day SMAnetwork_difficulty_sma_90

Data used by the Bitcoin Difficulty Ribbon chart.

Resolutions: 1d, 12h, 4h, 1h, 30m, 10m.

Endpoint
https://newhedge.io/api/v2/metrics/difficulty-ribbon/network_difficulty_sma_90?api_token=YOUR_TOKEN

Replace `YOUR_TOKEN` with your API token.

Sample response
200 Successful response
[
  [
    1792972800000,
    130273083302031.5
  ],
  [
    1793059200000,
    130432485223476.5
  ],
  [
    1793145600000,
    130591887144921.6
  ]
]
Definition (from the chart description)

Units: difficulty

Timestamp (1d): Labelled 00:00 UTC of the day it describes.

Timestamp (finer resolutions): A finer resolution is labelled in UTC at the end of the interval it covers, not at its start. Add include=definition to a request and the definition describes the bucket that request was served.

Calendar: calendar_daily

Metric

128-Day SMAnetwork_difficulty_sma_128

Data used by the Bitcoin Difficulty Ribbon chart.

Resolutions: 1d, 12h, 4h, 1h, 30m, 10m.

Endpoint
https://newhedge.io/api/v2/metrics/difficulty-ribbon/network_difficulty_sma_128?api_token=YOUR_TOKEN

Replace `YOUR_TOKEN` with your API token.

Sample response
200 Successful response
[
  [
    1792972800000,
    129950513103752.8
  ],
  [
    1793059200000,
    130072738213482.2
  ],
  [
    1793145600000,
    130194963323211.7
  ]
]
Definition (from the chart description)

Units: difficulty

Timestamp (1d): Labelled 00:00 UTC of the day it describes.

Timestamp (finer resolutions): A finer resolution is labelled in UTC at the end of the interval it covers, not at its start. Add include=definition to a request and the definition describes the bucket that request was served.

Calendar: calendar_daily

Metric

200-Day SMAnetwork_difficulty_sma_200

Data used by the Bitcoin Difficulty Ribbon chart.

Resolutions: 1d, 12h, 4h, 1h, 30m.

Endpoint
https://newhedge.io/api/v2/metrics/difficulty-ribbon/network_difficulty_sma_200?api_token=YOUR_TOKEN

Replace `YOUR_TOKEN` with your API token.

Sample response
200 Successful response
[
  [
    1792972800000,
    131858361727105.8
  ],
  [
    1793059200000,
    131866415767009.3
  ],
  [
    1793145600000,
    131874469806912.9
  ]
]
Definition (from the chart description)

Units: difficulty

Timestamp (1d): Labelled 00:00 UTC of the day it describes.

Timestamp (finer resolutions): A finer resolution is labelled in UTC at the end of the interval it covers, not at its start. Add include=definition to a request and the definition describes the bucket that request was served.

Calendar: calendar_daily