BeaconRequest access

Sleep signal & research API

Consumer sleep tech reports the dial. The literature has the signal.

Total sleep time and stage percentages are a summary of a summary. Thirty years of sleep research describes far richer structure in the same night of data — regularity, depth, spindles, homeostatic decay, the statistics of waking up. Beacon computes those metrics from raw recordings and serves them over an API, each one implementing a named, citable paper.

Five peer-reviewed metricsEDF, hypnogram, or wearable inputCitation travels with the value

Method

Three steps, no black box.

A metric you cannot audit is a metric you cannot build on. The pipeline is deliberately short and each stage is inspectable.

  1. 01

    Ingest

    EDF polysomnography, epoch-scored hypnograms, or minute-level wearable actigraphy and heart rate. Every source is resampled onto a common epoch grid and quality-flagged before anything is derived from it.

  2. 02

    Derive

    Each metric is an implementation of a named, citable paper. The equation, the epoch resolution it requires, and the population it was validated in travel with the result — so you can tell what a number means and where it stops meaning it.

  3. 03

    Serve

    One call returns the metric set for a night. Every value carries its coverage, its confidence, and the algorithm version that produced it, so results stay comparable across recordings and across releases.

Signals

Five metrics. Five papers.

This is the whole catalogue — not a teaser for one. Each entry names the primary source it implements and the input resolution it needs.

API

One call. One night. Everything it can support.

Post a recording, get the metric set back. The response is designed so a downstream reader can tell exactly how much to trust each number.

Response shapeillustrative — types, not results
POST /v1/nights
Content-Type: application/edf

{
  "night_id":  string,
  "source":    "psg" | "hypnogram" | "wearable",
  "epoch_sec": number,
  "metrics": {
    "sleep_regularity_index": {
      "value":      number,          // 0-100
      "coverage":   number,          // fraction of required epochs present
      "confidence": string,
      "algorithm":  string,          // versioned implementation id
      "citation":   string           // Phillips et al., Sci Rep 2017;7:3216
    },
    "odds_ratio_product":     { ... },
    "spindle_density":        { ... },
    "slow_wave_decay":        { ... },
    "transition_dynamics":    { ... }
  },
  "quality_flags": string[]
}
Coverage before value
A metric computed over a partial recording says so. Coverage is a first-class field, not a footnote.
Versioned algorithms
Every value names the implementation that produced it, so a re-run months later is comparable or explicitly is not.
Citations in the payload
The reference for each metric ships in the response. Whatever you build on top can show its work.
Input-aware
EEG-derived metrics are simply absent when you send actigraphy. Nothing is silently approximated to fill the object.

Provenance

No simulated nights.

The reference implementation runs on PhysioNet’s Sleep-EDF Expanded corpus: real full-night polysomnography with hypnograms scored by human technicians.

Nothing on this site is computed from synthetic recordings. If a metric can be shown, it was derived from a real night that a person actually slept and a technician actually scored — and the same code path serves the API.