# GET /v1/liquidity/items

所有饰品的每日流动性分档和预估售出时间。

返回每件饰品最新的流动性分档和预估售出时间。

流动性每天重新计算，依据滚动 30 天和 90 天窗口内的成交量与成交额，并更重视近期活动。变体与基础饰品分别评分。

## 访问

需要 Scale 或 Enterprise API 密钥。

## 流动性分档

| 分档 | 含义 |
| --- | --- |
| `unknown` | 近期成交太少，无法分类。 |
| `extremely_illiquid` | 几乎没有成交。 |
| `very_illiquid` | 成交量很低。 |
| `illiquid` | 成交量较低。 |
| `moderate` | 成交量中等。 |
| `liquid` | 成交量稳定。 |
| `very_liquid` | 成交量较高。 |
| `extremely_liquid` | 成交量很高，属于交易最活跃的饰品。 |

## 变体

支持的 Doppler、Gamma Doppler 和 Case Hardened 变体会返回在基础饰品的 `variants` 下。变体映射以显示名称作为键，例如 `Phase 1`、`Ruby` 或 `Tier 1`。在变体对象中，`market_hash_name` 是基础饰品名称，`name` 是完整变体名称，`version` 是稳定代码。

## 请求

`GET https://api.cs2.sh/v1/liquidity/items`

**curl**

```bash
curl https://api.cs2.sh/v1/liquidity/items \
  -H "Authorization: Bearer <<YOUR_API_KEY>>" \
  -H "Accept-Encoding: gzip" --compressed
```

**Python**

```python
import requests

headers = {
    "Authorization": "Bearer <<YOUR_API_KEY>>",
    "Accept-Encoding": "gzip",
}

response = requests.get(
    "https://api.cs2.sh/v1/liquidity/items",
    headers=headers,
)

response.raise_for_status()
data = response.json()
```

**Node**

```javascript
const headers = {
  "Authorization": "Bearer <<YOUR_API_KEY>>",
  "Accept-Encoding": "gzip",
};

const response = await fetch("https://api.cs2.sh/v1/liquidity/items", { headers });

if (!response.ok) throw new Error(`HTTP ${response.status}`);
const data = await response.json();
```

**Go**

```go
package main

import (
    "compress/gzip"
    "encoding/json"
    "fmt"
    "io"
    "net/http"
)

func main() {
    req, _ := http.NewRequest("GET", "https://api.cs2.sh/v1/liquidity/items", nil)
    req.Header.Set("Authorization", "Bearer <<YOUR_API_KEY>>")
    req.Header.Set("Accept-Encoding", "gzip")

    resp, err := http.DefaultClient.Do(req)
    if err != nil { panic(err) }
    defer resp.Body.Close()

    if resp.StatusCode < 200 || resp.StatusCode >= 300 {
        body, _ := io.ReadAll(resp.Body)
        panic(fmt.Sprintf("HTTP %d: %s", resp.StatusCode, body))
    }

    var reader io.Reader = resp.Body
    if resp.Header.Get("Content-Encoding") == "gzip" {
        gz, err := gzip.NewReader(resp.Body)
        if err != nil { panic(err) }
        defer gz.Close()
        reader = gz
    }

    var data any
    if err := json.NewDecoder(reader).Decode(&data); err != nil { panic(err) }
    fmt.Printf("%#v\n", data)
}
```

**R**

```r
library(httr2)

resp <- request("https://api.cs2.sh/v1/liquidity/items") |>
  req_headers(
    Authorization = "Bearer <<YOUR_API_KEY>>",
    `Accept-Encoding` = "gzip"
  ) |>
  req_perform()

data <- resp_body_json(resp)
```

## 响应

```json
{
  "response_time": "2026-07-26T00:00:29.508Z",
  "run_date": "2026-07-26",
  "items": {
    "USP-S | Printstream (Factory New)": {
      "market_hash_name": "USP-S | Printstream (Factory New)",
      "liquidity": "extremely_liquid",
      "estimated_sale_time": "1 - 2 hours"
    }
  }
}
```

## 响应字段

[ItemLiquidityGetResponse](/zh-cn/docs/objects#itemliquiditygetresponse) 字段:

| 字段 | 类型 | 必需 | 描述 |
| --- | --- | --- | --- |
| `response_time` | `string (date-time)` | 是 | 快照计算时间。 |
| `run_date` | `string (date)` | 是 | 每日计算对应的 UTC 日期。 |
| `items` | [`Record<string, ItemLiquidityItem>`](/zh-cn/docs/objects#itemliquidityitem) | 是 | `market_hash_name` 到饰品流动性数据的映射。 |

## 饰品数据

| 字段 | 描述 |
| --- | --- |
| `items.<name>.liquidity` | 流动性分档，从 `extremely_illiquid` 到 `extremely_liquid`。 |
| `items.<name>.estimated_sale_time` | 估计售出时间范围，假设挂单定价具有竞争力。 |
| `items.<name>.variants` | 逐变体的流动性条目，独立评分。 |

- 返回的饰品上都存在 `market_hash_name`、`liquidity` 和 `estimated_sale_time`。
- `variants` 仅在饰品具有变体流动性数据时出现。

完整结构：[ItemLiquidityItem](/zh-cn/docs/objects#itemliquidityitem)。

### ItemLiquidityItem

单个饰品的流动性分档和预计售出时间。

| 字段 | 类型 | 必需 | 描述 |
| --- | --- | --- | --- |
| `market_hash_name` | `string` | 是 | Steam 市场哈希名称。 |
| `liquidity` | `string` | 否 | 允许值: `unknown`, `extremely_illiquid`, `very_illiquid`, `illiquid`, `moderate`, `liquid`, `very_liquid`, `extremely_liquid`. 重新计算的饰品流动性分档。 |
| `estimated_sale_time` | `string` | 否 | 允许值: `under 1 hour`, `1 - 2 hours`, `2 - 6 hours`, `6 - 12 hours`, `12 - 24 hours`, `1 - 2 days`, `2 - 3 days`, `3 - 4 days`, `4 - 5 days`, `5 - 7 days`, `7 - 10 days`, `10 - 14 days`, `2 - 3 weeks`, `3 - 4 weeks`, `1 - 1.5 months`, `1.5 - 2 months`, `2+ months`, `unknown`. 竞争性定价挂单售出的第 80 百分位预计等待时间。 |
| `variants` | `Record<string, object>` | 否 | 按显示名称作为键的逐变体饰品流动性。 |

## 错误

`503 service_unavailable` 表示当前流动性快照尚未就绪。共有错误见[请求错误](/zh-cn/docs/using-the-api#请求错误)。
