Cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

HeartRateZone mismatches between Daily Summary and Heart Rate endpoints

Hello,

 

I am looking to determine how many minutes, given a date, a user spent in each heartRateZone.

 

I've identified two endpoints that work for my use case:
- Get Daily Activity Summary (via `summary : heartRateZones : minutes`)

- Get Heart Rate By Time Series (via `activities-heart : value : HeartRateZone : minutes`)

 

Issue premise:

  • For 8/30, I had 51 Active Zone Minutes (AZM); 51 in Fat Burn, 0 in Cardio, 0 in Peak.
    • (Values from the Fitbit Android app.)
  • I did not manually start a workout or activity, I just ran on the treadmill.

Issue:

The `heartRateZone` data between these two endpoints (also validated with other users and other days) is very different, when I expected them to be the same.

  • Daily Activity Summary says I (incorrectly) had (for 8/30):
    • 127 minutes in fat burn
    • 11 minutes in cardio
    • 0 minutes in peak
  • Heart Rate says I (correctly) had (for 8/30):
    • 51 minutes in fat burn
    • 0 minutes in cardio
    • 0 minutes in peak

Is it my misunderstanding that the `heartRateZone` minutes should be the same between these two endpoints?

 

Notes:

  • In the documentation I saw a flag, `summary : useEstimation`, but that is not set in my summary JSON.
  • On 8/30, I did not start or log a specific activity, I just ran on the treadmill for a bit; does that affect the minutes reported in each heartRateZone, possibly causing the Summary to use some sort of heuristic instead of the actual heart rate values? My daily summary has no activities listed, it's an empty object.

Thanks for your time,

Mike

 

 

Here are the JSON results from both endpoints.

 

Daily Activity Summary (abbreviated):

Spoiler
{
  "activities": [],
  "summary": {
    "heartRateZones": [
      {
        "caloriesOut": 380.76492,
        "max": 114,
        "min": 30,
        "minutes": 192,
        "name": "Out of Range"
      },
      {
        "caloriesOut": 686.42038,
        "max": 139,
        "min": 114,
        "minutes": 127,
        "name": "Fat Burn"
      },
      {
        "caloriesOut": 107.26456,
        "max": 169,
        "min": 139,
        "minutes": 11,
        "name": "Cardio"
      },
      {
        "caloriesOut": 0,
        "max": 220,
        "min": 169,
        "minutes": 0,
        "name": "Peak"
      }
    ]
  }
}

Heart Rate (abbreviated):

Spoiler
{
  "activities-heart": [
    {
      "value": {
        "customHeartRateZones": [],
        "heartRateZones": [
          {
            "caloriesOut": 2131.21576,
            "max": 114,
            "min": 30,
            "minutes": 1389,
            "name": "Out of Range"
          },
          {
            "caloriesOut": 390.59346000000005,
            "max": 139,
            "min": 114,
            "minutes": 51,
            "name": "Fat Burn"
          },
          {
            "caloriesOut": 0,
            "max": 169,
            "min": 139,
            "minutes": 0,
            "name": "Cardio"
          },
          {
            "caloriesOut": 0,
            "max": 220,
            "min": 169,
            "minutes": 0,
            "name": "Peak"
          }
        ],
        "restingHeartRate": 66
      }
    }
  ]
}

 

Best Answer
0 Votes
1 REPLY 1

Hi @MikeAtPaceline 

 

Thank you for reporting this issue.   Let me see if I can get some clarity on the algorithm used for those endpoints.

 

Gordon

Gordon Crenshaw
Senior Technical Solutions Consultant
Fitbit Partner Engineering & Web API Support | Google
Best Answer
0 Votes