---
title: "GET /v2/cycle/{cycleId}/recovery"
method: GET
path: "/v2/cycle/{cycleId}/recovery"
tags: ["Recovery"]
---

# GET /v2/cycle/{cycleId}/recovery

`GET /v2/cycle/{cycleId}/recovery`

## Request

- Base URL: `https://api.prod.whoop.com/developer`
- URL: `https://api.prod.whoop.com/developer/v2/cycle/{cycleId}/recovery`
- Auth: OAuth 2
  - Authorization code: `https://api.prod.whoop.com/oauth/oauth2/auth`
  - Token URL: `https://api.prod.whoop.com/oauth/oauth2/token` scopes: `read:recovery`
- TypeScript: <https://skmtc.dev/whoop/apis/whoop-api/docs/v2/cycle/:cycleId/recovery/get.ts> (a function with typed inputs; its response is checked against the schema)

Get the recovery for a cycle

## Path parameters

- `cycleId` integer, required

## Response `200`

Successful request

- Recovery
  - `cycle_id` integer, required: The Recovery represents how recovered the user is for this physiological cycle
  - `sleep_id` string, uuid, required: ID of the Sleep associated with the Recovery
  - `user_id` integer, required: The WHOOP User for the recovery
  - `created_at` string, date-time, required: The time the recovery was recorded in WHOOP
  - `updated_at` string, date-time, required: The time the recovery was last updated in WHOOP
  - `score_state` 'SCORED' | 'PENDING_SCORE' | 'UNSCORABLE', required: `SCORED` means the recovery was scored and the measurement values will be present. `PENDING_SCORE` means WHOOP is currently evaluating the cycle. `UNSCORABLE` means this activity could not be scored for some reason - commonly because there is not enough user metric data for the time range.
  - `score` RecoveryScore: WHOOP's measurements and evaluation of the recovery. Only present if the Recovery State is `SCORED`
    - `user_calibrating` boolean, required: True if the user is still calibrating and not enough data is available in WHOOP to provide an accurate recovery.
    - `recovery_score` number, float, required: Percentage (0-100%) that reflects how well prepared the user's body is to take on Strain. The Recovery score is a measure of the user body's "return to baseline" after a stressor.
    - `resting_heart_rate` number, float, required: The user's resting heart rate.
    - `hrv_rmssd_milli` number, float, required: The user's Heart Rate Variability measured using Root Mean Square of Successive Differences (RMSSD), in milliseconds.
    - `spo2_percentage` number, float: The percentage of oxygen in the user's blood. Only present if the user is on 4.0 or greater.
    - `skin_temp_celsius` number, float: The user's skin temperature, in Celsius. Only present if the user is on 4.0 or greater.

## Other responses

- `400`: Client error constructing the request
- `401`: Invalid authorization
- `404`: No resource found
- `429`: Request rejected due to rate limiting
- `500`: Server error occurred while making request

## Changes

- **2025-11-09** `62a1fac08a6c`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/whoop/apis/whoop-api/changes/v2/cycle/:cycleId/recovery/get.md)

---

[API](https://skmtc.dev/whoop/apis/whoop-api.md) - [All operations](https://skmtc.dev/whoop/apis/whoop-api/llms.txt) - [OpenAPI document](https://skmtc.dev/whoop/apis/whoop-api/revisions/2add8c1207db?raw)
