> ## Documentation Index
> Fetch the complete documentation index at: https://polymarketcn.com/llms.txt
> Use this file to discover all available pages before exploring further.

# CLOB 狀態

> 檢查 Polymarket CLOB API 的運行狀態

<Callout type="success">
  還沒有帳號？[點擊這裡註冊 Polymarket](https://polymarket.com/?r=2026VIP) 並完成入金，才能用錢包私鑰為訂單籤名、實際成交。
</Callout>

<Warning>
  **法律合規提醒**：在使用 Polymarket 服務或 API 前，請確認您所在地區的法律規定。Polymarket 目前不支援比利時、法國、新加坡、泰國、中國大陸等地區，政策可能隨時變化。
</Warning>

了解如何檢查 Polymarket CLOB API 的運行狀態和健康狀況。

## API 狀態檢查

### 健康檢查端點

Polymarket 提供健康檢查端點來驗證 API 是否正常運行。

```bash theme={null}
curl https://clob.polymarket.com/health
```

**響應示例**：

```json theme={null}
{
  "status": "ok",
  "timestamp": "2024-01-15T10:30:00Z"
}
```

### Python 檢查

```python theme={null}
import requests

def check_clob_status():
    try:
        response = requests.get('https://clob.polymarket.com/health')
        if response.status_code == 200:
            data = response.json()
            print(f"✓ CLOB API 狀態: {data.get('status', 'ok')}")
            return True
        else:
            print(f"✗ CLOB API 返回狀態碼: {response.status_code}")
            return False
    except Exception as e:
        print(f"✗ 無法連接到 CLOB API: {e}")
        return False

check_clob_status()
```

### TypeScript 檢查

```typescript theme={null}
async function checkClobStatus(): Promise<boolean> {
  try {
    const response = await fetch('https://clob.polymarket.com/health');
    if (response.ok) {
      const data = await response.json();
      console.log(`✓ CLOB API 狀態: ${data.status || 'ok'}`);
      return true;
    } else {
      console.log(`✗ CLOB API 返回狀態碼: ${response.status}`);
      return false;
    }
  } catch (error) {
    console.error(`✗ 無法連接到 CLOB API: ${error}`);
    return false;
  }
}

checkClobStatus();
```

## 系統狀態頁面

Polymarket 維護一個公開的狀態頁面，顯示所有服務的當前狀態和歷史正常運行時間。

<Card title="Polymarket 狀態頁面" icon="chart-line" href="https://status.polymarket.com">
  查看實時系統狀態和事件歷史
</Card>

## 服務組件

Polymarket 的交易基礎設施包括多個組件：

### 1. CLOB API

* **作用**：訂單創建、取消和查詢
* **端點**：`https://clob.polymarket.com`
* **健康檢查**：`/health`

### 2. Gamma API

* **作用**：市場數據和元數據
* **端點**：`https://gamma-api.polymarket.com`
* **健康檢查**：`/health`

### 3. Data API

* **作用**：歷史數據和分析
* **端點**：`https://data-api.polymarket.com`
* **健康檢查**：`/health`

### 4. WebSocket

* **作用**：實時數據流
* **端點**：`wss://ws-subscriptions-clob.polymarket.com`

### 5. 區塊鏈網絡

* **Polygon 主網**：訂單結算和資金管理
* **網絡狀態**：[Polygon Status](https://status.polygon.technology/)

## 監控腳本

### 完整的系統監控

```python theme={null}
import requests
import time
from datetime import datetime

def check_service(name: str, url: str) -> bool:
    """檢查服務是否可用"""
    try:
        response = requests.get(url, timeout=5)
        status = response.status_code == 200
        print(f"{'✓' if status else '✗'} {name}: {'在線' if status else '離線'}")
        return status
    except Exception as e:
        print(f"✗ {name}: 離線 ({e})")
        return False

def monitor_polymarket():
    """監控所有 Polymarket 服務"""
    print(f"\n=== Polymarket 系統狀態檢查 ({datetime.now().strftime('%Y-%m-%d %H:%M:%S')}) ===\n")
    
    services = {
        'CLOB API': 'https://clob.polymarket.com/health',
        'Gamma API': 'https://gamma-api.polymarket.com/health',
        'Data API': 'https://data-api.polymarket.com/health',
    }
    
    results = {}
    for name, url in services.items():
        results[name] = check_service(name, url)
    
    # 總體狀態
    all_online = all(results.values())
    print(f"\n總體狀態: {'✓ 所有服務正常' if all_online else '✗ 部分服務異常'}\n")
    
    return all_online

# 單次檢查
monitor_polymarket()

# 持續監控（每5分鐘檢查一次）
# while True:
#     monitor_polymarket()
#     time.sleep(300)  # 5分鐘
```

### TypeScript 監控腳本

```typescript theme={null}
interface ServiceStatus {
  name: string;
  online: boolean;
}

async function checkService(name: string, url: string): Promise<ServiceStatus> {
  try {
    const response = await fetch(url, {
      method: 'GET',
      signal: AbortSignal.timeout(5000), // 5秒超時
    });
    const online = response.ok;
    console.log(`${online ? '✓' : '✗'} ${name}: ${online ? '在線' : '離線'}`);
    return { name, online };
  } catch (error) {
    console.log(`✗ ${name}: 離線 (${error})`);
    return { name, online: false };
  }
}

async function monitorPolymarket(): Promise<boolean> {
  console.log(`\n=== Polymarket 系統狀態檢查 (${new Date().toLocaleString()}) ===\n`);
  
  const services = {
    'CLOB API': 'https://clob.polymarket.com/health',
    'Gamma API': 'https://gamma-api.polymarket.com/health',
    'Data API': 'https://data-api.polymarket.com/health',
  };
  
  const results = await Promise.all(
    Object.entries(services).map(([name, url]) => checkService(name, url))
  );
  
  const allOnline = results.every(r => r.online);
  console.log(`\n總體狀態: ${allOnline ? '✓ 所有服務正常' : '✗ 部分服務異常'}\n`);
  
  return allOnline;
}

// 單次檢查
monitorPolymarket();

// 持續監控（每5分鐘檢查一次）
// setInterval(monitorPolymarket, 5 * 60 * 1000);
```

## 性能指標

### 響應時間

正常情況下的預期響應時間：

| 端點類型  | 平均響應時間   |
| ----- | -------- |
| 健康檢查  | \< 100ms |
| 市场查询  | \< 200ms |
| 订单簿查询 | \< 300ms |
| 订单创建  | \< 500ms |
| 订单取消  | \< 400ms |

### 测量响应时间

```python theme={null}
import requests
import time

def measure_response_time(url: str) -> float:
    start = time.time()
    response = requests.get(url)
    end = time.time()
    return (end - start) * 1000  # 轉換為毫秒

# 測試 CLOB API
clob_time = measure_response_time('https://clob.polymarket.com/health')
print(f"CLOB API 響應時間: {clob_time:.2f}ms")

# 測試 Gamma API
gamma_time = measure_response_time('https://gamma-api.polymarket.com/health')
print(f"Gamma API 響應時間: {gamma_time:.2f}ms")
```

## 常見問題

### API 返回 502/503 錯誤

**可能原因**：

* 服務暫時不可用
* 正在進行維護
* 網絡問題

**解決方案**：

1. 檢查 [Polymarket 狀態頁面](https://status.polymarket.com)
2. 等待幾分鐘後重試
3. 實施指數退避重試策略

### WebSocket 連接失敗

**可能原因**：

* WebSocket 服務離線
* 網絡防火牆阻止 WebSocket

**解決方案**：

1. 檢查 WebSocket 端點狀態
2. 驗證防火牆設置
3. 使用備用 REST API 輪詢

### 訂單延遲

**可能原因**：

* 高負載期間
* 網絡延遲
* Polygon 網絡擁堵

**解決方案**：

1. 檢查 Polygon 網絡狀態
2. 增加超時時間
3. 監控訂單狀態

## 狀態通知

### 設置警報

```python theme={null}
import requests
import smtplib
from email.mime.text import MIMEText

def send_alert(subject: str, message: str):
    """發送郵件警報"""
    # 配置您的郵件設置
    sender = "your-email@example.com"
    recipient = "alert-recipient@example.com"
    
    msg = MIMEText(message)
    msg['Subject'] = subject
    msg['From'] = sender
    msg['To'] = recipient
    
    # 發送郵件（需要配置 SMTP 伺服器）
    # smtp = smtplib.SMTP('smtp.gmail.com', 587)
    # smtp.send_message(msg)
    print(f"警報: {subject} - {message}")

def monitor_with_alerts():
    """監控並在出現問題時發送警報"""
    previous_status = True
    
    while True:
        current_status = check_clob_status()
        
        # 狀態變化時發送警報
        if previous_status and not current_status:
            send_alert(
                "Polymarket CLOB 離線",
                "CLOB API 當前無法訪問"
            )
        elif not previous_status and current_status:
            send_alert(
                "Polymarket CLOB 恢復",
                "CLOB API 已恢復正常"
            )
        
        previous_status = current_status
        time.sleep(60)  # 每分鐘檢查一次
```

## 下一步

<CardGroup cols={2}>
  <Card title="CLOB 快速開始" icon="rocket" href="/api-tutorial/clob/quickstart">
    開始使用 CLOB API
  </Card>

  <Card title="速率限制" icon="gauge" href="/api-tutorial/rate-limits">
    了解 API 速率限制
  </Card>

  <Card title="錯誤處理" icon="triangle-exclamation" href="/api-tutorial/clob/rest-api">
    學習如何處理 API 錯誤
  </Card>

  <Card title="官方狀態頁" icon="chart-line" href="https://status.polymarket.com">
    查看實時系統狀態
  </Card>
</CardGroup>
