POST /v1/market/buff/history

Returns OHLC history for BUFF float ranges and fade ranges. Data begins on May 19, 2026.

Each range from GET /v1/market/buff/latest has its own time series, including per-variant ranges for Doppler phases and Case Hardened tiers. OHLC is computed for ask, avg_ask, and bid; ask_volume and bid_volume are last-observed. Since data for this endpoint is also surfaced in v1/market/buff/latest, prices update every 10 minutes. Max 100 items per request.

Access#

Requires a Scale or Enterprise API key.

Supported intervals#

IntervalMax range
30m90 days
1h365 days
1dUnlimited

Supported sources#

SourceFields
buffask, avg_ask, bid (OHLC); ask_volume, bid_volume (last-observed)

bucket is the UTC interval boundary. open_time and close_time are the first and last observation timestamps inside the bucket.

Request#

POSTapi.cs2.sh/v1/market/buff/history
curl -X POST https://api.cs2.sh/v1/market/buff/history \
  -H "Authorization: Bearer <<YOUR_API_KEY>>" \
  -H "Accept-Encoding: gzip" --compressed \
  -H "Content-Type: application/json" \
  -d '{
  "items": [
    "★ Bayonet | Fade (Factory New)",
    "AK-47 | Case Hardened (Field-Tested)"
  ],
  "start": "2026-05-12",
  "end": "2026-05-19",
  "interval": "1h"
}'

Parameters#

FieldTypeRequiredDescription
itemsstring[]YesList of market_hash_name values (max 100)
startstringYesStart date/time as YYYY-MM-DD or RFC3339
endstringNoEnd date/time as YYYY-MM-DD or RFC3339. Defaults to now.
intervalstringNoDefault: 30m. Allowed: 30m, 1h, 1d.

Response#

json
{
  "response_time": "2026-05-19T18:42:11.014Z",
  "currency": "USD",
  "start": "2026-05-12T00:00:00Z",
  "end": "2026-05-19T00:00:00Z",
  "interval": "1h",
  "items": {
    "★ Bayonet | Fade (Factory New)": {
      "market_hash_name": "★ Bayonet | Fade (Factory New)",
      "buckets": [
        {
          "bucket_id": "fade:99:100",
          "bucket_type": "fade",
          "fade": {
            "min": 99,
            "max": 100
          },
          "data": [
            {
              "bucket": "2026-05-19T18:00:00Z",
              "updated_at": "2026-05-19T18:36:34Z",
              "collected_at": "2026-05-19T18:40:53.334Z",
              "open_ask": 472.06,
              "high_ask": 484.41,
              "low_ask": 471.32,
              "close_ask": 477.65,
              "open_avg_ask": 528.72,
              "high_avg_ask": 533.04,
              "low_avg_ask": 525.18,
              "close_avg_ask": 531.09,
              "open_bid": 369.85,
              "high_bid": 377.94,
              "low_bid": 369.85,
              "close_bid": 377.94,
              "ask_volume": 27,
              "bid_volume": 7,
              "open_time": "2026-05-19T18:01:12Z",
              "close_time": "2026-05-19T18:56:18Z"
            }
          ]
        }
      ]
    }
  }
}

Returns a BUFFMarketFloatHistoryResponse object. See Objects for the full shape.

Response fields#

Each item holds ranges in buckets[]; each entry carries range identity (bucket_id, bucket_type, float/fade, matching GET /v1/market/buff/latest) and a data[] array of OHLC points. Each point carries OHLC of ask, avg_ask, and bid, last-observed ask_volume/bid_volume, and the real observation window (open_time/close_time).

FieldAppears on
bucket_id, bucket_type, dataAll returned ranges
floatfloat and float_fade ranges
fadefade and float_fade ranges
bucket, updated_at, collected_at, open_time, close_timeAll history points

Full schemas: BUFFMarketFloatHistoryItem, BUFFMarketFloatHistoryBucket, BUFFMarketFloatHistoryPoint.

Errors#

StatusWhen
400 validation_errorThe request body or query failed validation (e.g. bad JSON, missing items/start, over 100 items, or a bad interval or date range).
401 / 403Missing key, invalid key, or plan access.
429Rate-limited.
5xxServer-side issue.

When some items resolve and others don't, the request still returns 200 with the resolved items plus an errors[] array – each entry is an ItemError with a code of unknown_item, invalid_format, or not_in_cache.