第三方新闻 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 | 推文消息 | 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,避免一次性获取过多数据
- 📄 使用分页获取大量数据
- 💾 缓存查询结果,避免重复请求
连接管理
- 💓 实现心跳机制保持连接活跃
- 🔌 实现自动重连机制处理网络中断
- 🔢 合理控制并发连接数,避免超过限制