---
title: "Get Recovery Summary"
method: GET
path: "/api/v1/users/{user_id}/summaries/recovery"
tags: ["External: Summaries"]
---

# Get Recovery Summary

`GET /api/v1/users/{user_id}/summaries/recovery`

Returns daily recovery metrics (recovery score, HRV, resting HR, SpO2).

**Warning - known limitation:** this endpoint currently returns data **only for WHOOP**.
Metrics are read from stored recovery-score records, which today are produced solely by
WHOOP, so users connected only to other providers (e.g. Apple Health) receive an empty
result even when the underlying resting HR, HRV and SpO2 are available. This is a bug.

These values will soon be computed from the timeseries we already store in the database
rather than from what a single provider reports, at which point recovery metrics will be
returned for all providers that supply the underlying data.

## Path parameters

- `user_id` string, uuid, required

## Query parameters

- `start_date` string, date-time, required — ISO 8601 datetime (e.g. `2023-11-07T05:31:56Z`) or Unix timestamp in seconds. Date-only strings (e.g. `2023-11-07`) are also accepted and normalized to midnight UTC.
- `end_date` string, date-time, required — ISO 8601 datetime (e.g. `2023-11-07T05:31:56Z`) or Unix timestamp in seconds. Date-only strings (e.g. `2023-11-07`) are also accepted and normalized to midnight UTC.
- `cursor` string, nullable
- `limit` integer

## Headers

- `X-Open-Wearables-API-Key` string, nullable

## Response `200`

Successful Response

- PaginatedResponseRecoverySummary
  - `data` RecoverySummary[], required
    - `date` string, date, required
    - `source` SourceMetadata, required
      - `provider` string, required
      - `source` string, nullable
      - `device` string, nullable
      - `device_type` 'watch' | 'band' | 'phone' | 'scale' | 'ring' | 'other' | 'unknown' — Type of device that collected health data.
      - `device_name` string, nullable, required — Marketing name for ``device``, derived so it cannot drift from the raw model.
    - `sleep_duration_seconds` integer, nullable
    - `sleep_efficiency_percent` number, nullable
    - `resting_heart_rate_bpm` integer, nullable
    - `avg_hrv_sdnn_ms` number, nullable — Average HRV (SDNN). Currently always null: every record this endpoint returns today comes from WHOOP - a recovery-score record is required for a row to be returned, and only WHOOP produces one - and WHOOP reports HRV as RMSSD, which is exposed in avg_hrv_rmssd_ms. Once recovery metrics are computed from stored timeseries (and returned for all providers, not just WHOOP), this will carry SDNN for providers that report it (e.g. Apple Health).
    - `avg_hrv_rmssd_ms` number, nullable — Average HRV (RMSSD)
    - `avg_spo2_percent` number, nullable
    - `recovery_score` integer, nullable — Deprecated and scheduled for removal in an upcoming release: 0-100 recovery score. Among the supported providers only WHOOP reports a recovery score, and Open Wearables does not compute its own, so this is null for every other provider. Migrate to the health scores endpoint (GET /api/v1/users/{user_id}/health-scores), whose `components` array exposes the underlying metrics the score is derived from.
  - `pagination` Pagination, required
    - `next_cursor` string, nullable — Cursor to fetch next page, null if no more data
    - `previous_cursor` string, nullable — Cursor to fetch previous page
    - `has_more` boolean, required — Whether more data is available
    - `total_count` integer, nullable — Total number of records matching the query
  - `metadata` TimeseriesMetadata, required
    - `resolution` 'raw' | '1min' | '5min' | '15min' | '1hour', nullable
    - `sample_count` integer, nullable
    - `start_time` string, date-time, nullable
    - `end_time` string, date-time, nullable

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/openwearables/apis/open-wearables-api.md) · [All operations](https://skmtc.net/openwearables/apis/open-wearables-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/openwearables/open-wearables-api/revisions/d52fb9b4319d/schema)
