HypeRate API 开发者接入指南——HTTP API 与 WebSocket 实时心率数据流
HypeRate 提供什么 API
HypeRate 有两种开发者接入方式:
| 方式 | 协议 | 延迟 | 适合 |
|---|---|---|---|
| HTTP REST API | HTTPS 请求-响应 | 中等(50-200ms) | 定期轮询、获取历史数据 |
| WebSocket API | WSS 长连接 | 极低(< 50ms) | 实时心率流、自定义覆盖层、游戏插件 |
第一步:获取 API 凭证
HypeRate ID 就是 API Key
HypeRate 的 API 设计很简洁——你的 HypeRate ID 既是 API Key,也是身份标识。在任何集成方式(桌面端插件、OBS 插件、Stream Deck、第三方工具)里用的 HypeRate ID 通用。
获取方法:
- 打开 HypeRate APP 或桌面端
- 确保心率设备已连接
- 找到 Share / Embed / API 入口
- 复制 HypeRate ID(短代码或邮箱格式)
安全提示:HypeRate ID 可以公开分享(它的设计就是让覆盖层获取你的心率),但:
- 不要在 Discord / Twitter / 论坛公开贴出你的 HypeRate ID
- 任何拿到 HypeRate ID 的人都能实时读取你的心率数据
- 如果你发现有人滥用,可以在 APP 里重置 HypeRate ID
HTTP REST API
基础信息
Base URL: 见 HypeRate 官方开发者文档(HTTPS 请求)
认证方式: 查询参数 hyperate_id=<你的 HypeRate ID>
可用端点
| 端点 | 方法 | 说明 |
|---|---|---|
/heartrate | GET | 获取最新一次心率数据 |
/session/current | GET | 当前 Session 的实时数据(峰值、平均、分区) |
/session/history | GET | 历史 Session 列表 |
/devices | GET | 当前连接的设备列表 |
示例:获取实时心率
curl "<HypeRate API Base URL>/heartrate?hyperate_id=YOUR_ID"
返回:
{
"bpm": 142,
"zone": 3,
"timestamp": "2025-10-15T14:30:00Z",
"device": "Polar H10",
"source": "mobile"
}
示例:当前 Session 统计
curl "<HypeRate API Base URL>/session/current?hyperate_id=YOUR_ID"
返回:
{
"duration_seconds": 3600,
"peak_bpm": 178,
"min_bpm": 85,
"avg_bpm": 132,
"zone_distribution": {
"1": 1200,
"2": 900,
"3": 800,
"4": 500,
"5": 200
}
}
WebSocket API(实时数据流)
连接方式
WSS URL: wss://www.hyperate.io/ws?hyperate_id=<你的 HypeRate ID>
连接后,HypeRate 会以 5Hz(每秒 5 次)的频率推送 JSON 消息:
{
"type": "heart_rate",
"bpm": 142,
"zone": 3,
"timestamp": "2025-10-15T14:30:00.123Z",
"device": "Polar H10",
"session_peak": 168
}
JavaScript 示例
const ws = new WebSocket(`wss://www.hyperate.io/ws?hyperate_id=YOUR_ID`);
ws.onmessage = (event) => {
const data = JSON.parse(event.data);
if (data.type === 'heart_rate') {
console.log(`心率: ${data.bpm} BPM, 分区: Zone ${data.zone}`);
// 在这里更新你的自定义覆盖层 UI
updateHeartRateDisplay(data.bpm, data.zone);
}
};
ws.onclose = () => {
// 自动重连
setTimeout(() => connect(), 3000);
};
Python 示例
import asyncio
import websockets
import json
async def connect():
async with websockets.connect(
f"wss://www.hyperate.io/ws?hyperate_id=YOUR_ID"
) as ws:
while True:
data = json.loads(await ws.recv())
if data["type"] == "heart_rate":
print(f"心率: {data['bpm']} BPM")
asyncio.run(connect())
Unity C# 示例
using NativeWebSocket;
void Start() {
var websocket = new WebSocket($"wss://www.hyperate.io/ws?hyperate_id=YOUR_ID");
websocket.OnMessage += (bytes) => {
var message = Encoding.UTF8.GetString(bytes);
var data = JsonUtility.FromJson<HRData>(message);
if (data.type == "heart_rate") {
// 驱动游戏中的 UI 或游戏逻辑
UpdatePlayerHeartRate(data.bpm);
}
};
websocket.Connect();
}
[Serializable]
public class HRData {
public string type;
public int bpm;
public int zone;
public string device;
}
数据字段说明
| 字段 | 类型 | 说明 |
|---|---|---|
type | string | 消息类型,目前只有 "heart_rate" |
bpm | number | 当前心率,单位 BPM |
zone | number | 心率分区 1-5 |
timestamp | ISO 8601 | 数据采集时间戳(UTC) |
device | string | 数据源设备名称(如 "Polar H10") |
source | string | 数据来源("mobile" / "desktop" / "watch") |
session_peak | number | 当前 Session 的峰值心率 |
开源 SDK
HypeRate 官方在 GitHub 上维护了开源 SDK:
| SDK | 语言 | 仓库 |
|---|---|---|
| HypeRate C# SDK | C# / Unity | github.com/HypeRate/HypeRateCSharp |
| HypeRate JS SDK | JavaScript | github.com/HypeRate/HypeRateJS |
| HypeRate Godot Plugin | GDScript | Godot Asset Library |
| HypeRate UE Plugin | C++ | Unreal Engine Marketplace |
速率限制
| 接口 | 限制 | 说明 |
|---|---|---|
| HTTP REST API | 100 次/分钟 | 足够定期轮询 |
| WebSocket | 无限 | 但只允许一个活跃连接(第二个连接会把第一个踢掉) |
| HypeRate ID | 可重置 | 如果被滥用,在 APP 里重置后旧 ID 立即失效 |
常见开发场景
自定义心率覆盖层
用 WebSocket 实时流 + HTML/CSS/JS 做自己的覆盖层,比 HypeRate 官方模板自由得多——加自己的品牌色、动画、额外数据。
游戏内心率 HUD
Unity / Godot / UE 插件直接接 WebSocket,心率数据作为游戏内变量——比如恐怖游戏中心率越高环境音越紧张,健身游戏中心率决定训练强度。
数据可视化仪表盘
长期 HTTP 轮询 + 存到数据库,做个人健康追踪仪表盘。可以看每周的心率趋势、哪个游戏最让你紧张。
AI 驱动内容分析
结合 HypeRate 心率数据 + Twitch 录像 + 聊天记录,训练模型自动分析"你的直播什么时候最吸引人"——给你内容优化建议。