hyperate 中文文档 下载 App

HypeRate API 开发者接入指南——HTTP API 与 WebSocket 实时心率数据流

HypeRate 提供什么 API

HypeRate 有两种开发者接入方式:

方式协议延迟适合
HTTP REST APIHTTPS 请求-响应中等(50-200ms)定期轮询、获取历史数据
WebSocket APIWSS 长连接极低(< 50ms)实时心率流、自定义覆盖层、游戏插件

第一步:获取 API 凭证

HypeRate ID 就是 API Key

HypeRate 的 API 设计很简洁——你的 HypeRate ID 既是 API Key,也是身份标识。在任何集成方式(桌面端插件、OBS 插件、Stream Deck、第三方工具)里用的 HypeRate ID 通用。

获取方法:

  1. 打开 HypeRate APP 或桌面端
  2. 确保心率设备已连接
  3. 找到 Share / Embed / API 入口
  4. 复制 HypeRate ID(短代码或邮箱格式)

安全提示:HypeRate ID 可以公开分享(它的设计就是让覆盖层获取你的心率),但:

HTTP REST API

基础信息

Base URL: 见 HypeRate 官方开发者文档(HTTPS 请求)
认证方式: 查询参数 hyperate_id=<你的 HypeRate ID>

可用端点

端点方法说明
/heartrateGET获取最新一次心率数据
/session/currentGET当前 Session 的实时数据(峰值、平均、分区)
/session/historyGET历史 Session 列表
/devicesGET当前连接的设备列表

示例:获取实时心率

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;
}

数据字段说明

字段类型说明
typestring消息类型,目前只有 "heart_rate"
bpmnumber当前心率,单位 BPM
zonenumber心率分区 1-5
timestampISO 8601数据采集时间戳(UTC)
devicestring数据源设备名称(如 "Polar H10")
sourcestring数据来源("mobile" / "desktop" / "watch")
session_peaknumber当前 Session 的峰值心率

开源 SDK

HypeRate 官方在 GitHub 上维护了开源 SDK:

SDK语言仓库
HypeRate C# SDKC# / Unitygithub.com/HypeRate/HypeRateCSharp
HypeRate JS SDKJavaScriptgithub.com/HypeRate/HypeRateJS
HypeRate Godot PluginGDScriptGodot Asset Library
HypeRate UE PluginC++Unreal Engine Marketplace

速率限制

接口限制说明
HTTP REST API100 次/分钟足够定期轮询
WebSocket无限但只允许一个活跃连接(第二个连接会把第一个踢掉)
HypeRate ID可重置如果被滥用,在 APP 里重置后旧 ID 立即失效

常见开发场景

自定义心率覆盖层

用 WebSocket 实时流 + HTML/CSS/JS 做自己的覆盖层,比 HypeRate 官方模板自由得多——加自己的品牌色、动画、额外数据。

游戏内心率 HUD

Unity / Godot / UE 插件直接接 WebSocket,心率数据作为游戏内变量——比如恐怖游戏中心率越高环境音越紧张,健身游戏中心率决定训练强度。

数据可视化仪表盘

长期 HTTP 轮询 + 存到数据库,做个人健康追踪仪表盘。可以看每周的心率趋势、哪个游戏最让你紧张。

AI 驱动内容分析

结合 HypeRate 心率数据 + Twitch 录像 + 聊天记录,训练模型自动分析"你的直播什么时候最吸引人"——给你内容优化建议。