第三方新聞 API 文檔
版本 v1.0
概述
Foxlu 第三方新聞 API 提供歷史新聞查詢和即時新聞推送功能,適用於交易機器人、數據分析平台、自研量化策略和研究機構。
連接地址
REST API
https://api.foxlu.com/api/v1WebSocket
wss://api.foxlu.com/api/v1/ws使用方式
支援以下兩種方式:
- REST API:獲取歷史新聞數據
- WebSocket API:訂閱即時新聞推送
認證方式
所有第三方 API 介面僅支援 API Key 認證,不支援 JWT Token。
如何獲取 API Key
- 登錄 Foxlu 網頁版應用
- 進入「設定」→「API Keys」頁面
- 建立新的 API Key(或使用系統預設 Key)
- 保存 API Key(僅顯示一次,請妥善保管)
1. 獲取歷史新聞
根據時間範圍、分類、幣種等條件查詢歷史新聞數據。
GET
/api/v1/news/history請求標頭
bash
X-API-Key: fxl_your_api_key_here請求範例
bash
# 获取最近 24 小时的新闻
curl -H "X-API-Key: fxl_your_api_key_here" \
"https://api.foxlu.com/api/v1/news/history?startAt=1704672000000&endAt=1704758400000&page=1&pageSize=20"回應範例
成功回應包含新聞列表、分頁資訊和配額資訊。
json
{
"code": 200,
"message": "Success",
"data": {
"list": [
{
"itemId": "item_123456",
"category": "news",
"subCategory": "market",
"sourceName": "CoinDesk",
"title": "Bitcoin 突破 50,000 美元",
"summary": "摘要内容...",
"url": "https://coindesk.com/bitcoin-breaks-50000",
"imageUrl": "https://cdn.foxlu.com/images/btc-50000.jpg",
"coins": ["BTC", "ETH"],
"publishedAt": 1704672000000
}
],
"pagination": {
"page": 1,
"pageSize": 20,
"total": 150,
"totalPages": 8,
"hasNext": true,
"hasPrev": false
},
"meta": {
"dailyRemaining": 9856,
"dailyLimit": 10000
}
},
"timestamp": 1704672000000
}錯誤碼
| Code | 訊息 | 說明 |
|---|---|---|
| 40001 | Invalid parameters | 請求參數錯誤 |
| 40101 | API Key required | API Key 缺失或無效 |
| 40301 | No permission | 無權限存取此介面(免費用戶) |
| 42901 | Quota exceeded | 已達到每日呼叫上限 |
| 50001 | Internal server error | 伺服器內部錯誤 |
認證流程
發送 API Key 進行認證,認證成功後即可訂閱頻道。
javascript
const ws = new WebSocket('wss://api.foxlu.com/api/v1/ws');
ws.onopen = () => {
// 发送 API Key 认证
ws.send(JSON.stringify({
type: 'auth',
data: {
token: 'fxl_your_api_key_here'
}
}));
};
ws.onmessage = (event) => {
const message = JSON.parse(event.data);
if (message.type === 'authenticated') {
// 订阅实时新闻
ws.send(JSON.stringify({
type: 'subscribe',
data: {
channel: 'news.realtime'
}
}));
}
};可訂閱頻道
| 頻道 | 說明 | 訂閱等級要求 |
|---|---|---|
news.realtime | 即時新聞 | Standard/Premium |
news:announcement | 交易所公告 | 所有用戶 |
news:x | X 貼文 | Standard/Premium |
news:news | 新聞快訊 | Standard/Premium |
心跳機制
用戶端需要每 30 秒發送一次心跳訊息以保持連線活躍。
javascript
setInterval(() => {
ws.send(JSON.stringify({ type: 'ping' }));
}, 30000);伺服器會回應 pong 訊息,超時 60 秒斷開連線。
JavaScript
javascript
import { FoxluAPI } from '@foxlu/third-party-api';
// 初始化
const api = new FoxluAPI({
apiKey: 'fxl_your_api_key_here',
baseURL: 'https://api.foxlu.com'
});
// 获取历史新闻
const news = await api.getHistory({
startAt: 1704672000000,
endAt: 1704758400000,
category: 'news',
pageSize: 20
});Python
python
from foxlu_api import FoxluAPI
# 初始化
api = FoxluAPI(
api_key='fxl_your_api_key_here',
base_url='https://api.foxlu.com'
)
# 获取历史新闻
news = api.get_history(
start_at=1704672000000,
end_at=1704758400000,
category='news',
page_size=20
)API Key 安全
- ⚠️ 切勿在程式碼中硬編碼 API Key
- 🔐 使用環境變數或設定檔儲存 API Key
- 🔄 定期輪換 API Key
- 🗑️ 及時撤銷不再使用的 API Key
錯誤處理
- ✅ 檢查回應中的 code 欄位,不要僅依賴 HTTP 狀態碼
- 🔁 實作適當的重試策略(指數退避)
- 📝 記錄錯誤日誌以便排查問題
效能優化
- ⚡ 合理設定 pageSize,避免一次獲取過多資料
- 📄 使用分頁獲取大量資料
- 💾 快取查詢結果,避免重複請求
連線管理
- 💓 實作心跳機制保持連線活躍
- 🔌 實作自動重連機制處理網路中斷
- 🔢 合理控制並發連線數,避免超過限制