raehDocs

Concepts

The small vocabulary you need to integrate with Raeh.

Six terms cover 95% of what you'll see in the API, the dashboard, and these docs.

Account

Your company's tenant. Owns everything else: keys, device models, sessions, insights. Created when you sign up. You rarely interact with it directly; it's the parent of everything.

Device Model

A hardware type, e.g. "XYZ Watch v1". Defines the modality channels (PPG green, accelerometer 3-axis, etc.) and their sample rates. You register these once in the dashboard and get back a device_model_id.

Bake this ID into your firmware or SDK build config. Every unit of this hardware type carries the same device_model_id.

Device

A physical unit of a device model. Identified by a device_id string you pick: MAC address, serial number, manufacturing ID, anything stable per unit. Resolved server-side on first connection; no separate registration step.

Session

A single streaming connection. Opens when a device connects to /stream/ingest, closes when the WebSocket disconnects. All frames, features, and insights are scoped to the session they came from.

A session is short-lived (minutes to hours). A device can open many sessions over its lifetime.

Insight

One health signal value:

{
  "type": "hr",
  "value": 72.4,
  "unit": "bpm",
  "ts": 1760000000000,
  "session_id": "ad225407-...",
  "confidence": 0.87,
  "sqi_class": "excellent"
}

Currently produced: hr (heart rate), spo2 (blood oxygen), rr (respiratory rate). Emitted at node-specific intervals (HR every ~2 s, SpO₂ and RR every ~5 s).

Every insight carries a Signal Quality Index: the confidence number (0..1) and the discrete sqi_class bucket ("excellent" ≥ 0.8, "acceptable" ≥ 0.5, "unfit" < 0.5). These summarize how much of the analysis window was actually covered by in-window, low-gap data. Treat unfit values as "estimating, don't trust yet" rather than authoritative readings. See /stream/subscribe → How to read confidence.

API key

How your client authenticates. Keys are prefixed raeh_ and scoped to your account.

Mint them in the dashboard under API Keys. You decide whether to ship one key to every user of your app, or mint per-user keys on your backend and hand each user their own. Both are supported.

See Authentication for the full flow.

How they fit together

account
  ├── device model    (registered once · the hardware type)
  │     └── device    (created on first connect · the physical unit)
  │           └── session        (one per connection)
  │                 └── insights (hr, spo2, rr · published in real time)
  └── api keys        (raeh_… for clients)

On this page