Item Types
Given a TaskType, this is the representation of the data behind it.
Every item shares a common set of fields such as its id, date, source, and type that are described below. The type field tells you which kind of record it is, and each type below (Activity, Weight, Sleep, etc.) documents the additional fields specific to that kind of data.
Common
| JSON Item | Data Type | Description |
|---|---|---|
| providerType | String | An enumeration of the Provider Type for uploading data to this API. |
| device | String | The model of the device that recorded the item, as its provider reported it, for example Forerunner 965. Absent when the provider did not say. Read-only. |
| attribution | String | This is the attribution of where the data came from in the user’s language. This should be displayed when this data is used. Read-only. |
| requiredAttribution | Boolean | True when the source of this item requires its attribution to be shown beside its data wherever it is used, including anything derived from it, as Garmin’s brand guidelines do. Read-only. |
| date | Long | Time in milliseconds since the Epoch in UTC |
| itemId | String | Id of the item |
| taskId | String | Id of the Source Data |
| apiVersion | String | The API version this item was rendered in, as a date (for example 2026-08-09). Present so that a stored .fsapi file can be told apart from one written under an earlier version; an item with no apiVersion predates the field and is the original 2014-09-12 API. |
| comment | String | Comment associated with the data. |
| tags | Array of String | User submitted tags |
| type | String | Type of the Task. Must be one of Activity, Allergy, Weight, BloodPressure, BloodPanel, Cholesterol, Condition, CycleTracking, ECG, Glucose, Medication, Nutrition, Oxygen, Sleep, Temperature |
| links | Source Item Links Item |
Source Attribution
Every item carries an attribution naming where it came from, in the user’s language, and a device naming the model that recorded it when its provider said. Show the attribution wherever you show the item, rather than providerType, which is an identifier. When requiredAttribution is true, the item’s source requires that attribution beside its data wherever it is shown, including anything derived from it.
Activity
This describes an activity. It extends Common where type equals Activity.
| JSON Item | Data Type | Description |
|---|---|---|
| activity | String | General Summary of the Activity or Exercise Type, generally in one word. |
| fitnessSyncerActivity | String | Similar to the activity, however, the activity is the raw string from the service and fitnessSyncerActivity is the FitnessSyncer normalized activity Read-only. |
| title | String | A human readable title of the activity. |
| distanceKM | Double | Distance of the Activity in KM. Use 0 if not applicable. |
| duration | Double | Duration in Seconds. Use 0 if not applicable. |
| calories | Integer | Calories Burned |
| bmr | Integer | Basal Metabolic Rate |
| endDate | Long | End Time in milliseconds since the Epoch in UTC (if not summary) Read-only. |
| steps | Integer | Number of steps for this activity. |
| avgHeartrate | Integer | Average heart rate for the activity. |
| minHeartrate | Integer | Minimum heart rate for the activity. |
| maxHeartrate | Integer | Maximum heart rate for the activity. |
| restingHeartrate | Integer | Resting heart rate for the activity. |
| avgStressLevel | Integer | Average Stress Level |
| minStressLevel | Integer | Minimum Stress Level |
| maxStressLevel | Integer | Maximum Stress Level |
| lowStressDurationSeconds | Integer | Seconds Under Low Stress |
| mediumStressDurationSeconds | Integer | Seconds Under Medium Stress |
| highStressDurationSeconds | Integer | Seconds Under High Stress |
| vo2Max | Integer | VO2Max Level |
| respiratoryRate | Double | Respiratory Rate |
| mindfulMinutes | Integer | Mindful Minutes |
| summary | Boolean | If this is a daily summary snapshot, this will be true. Generally when this is true, the date of the item will also be at midnight UTC of that date. |
| temperatureCelsius | Double | Average Temperature in Celsius |
| avgCoreTemperatureCelsius | Double | Average core body temperature in Celsius across the activity, derived from the Laps. Distinct from temperatureCelsius, which is ambient temperature. Read-only. |
| minCoreTemperatureCelsius | Double | Minimum core body temperature in Celsius across the activity, derived from the Laps. Read-only. |
| maxCoreTemperatureCelsius | Double | Maximum core body temperature in Celsius across the activity, derived from the Laps. Read-only. |
| repetitions | Integer | Number of repetitions, especially for things like Push-Ups |
| weight | Double | Weights used for the exercise in KG |
| rpe | Double | Rating of Perceived Exertion for the exercise, on the Borg CR10 scale. |
| manual | Boolean | True if this was manually entered; false if not know or was not. |
| floorsClimbed | Integer | Approximate Number of Floors Climbed |
| pace | Double | Pace in KM Read-only. |
| speed_avg | Double | Average Speed in Meters per Second Read-only. |
| speed_max | Double | Max Speed in Meters per Second Read-only. |
| elevation_min | Double | Min Elevation in Meters Read-only. |
| elevation_max | Double | Max Elevation in Meters Read-only. |
| elevation_gain | Double | Elevation Gain in Meters Read-only. |
| elevation_decent | Double | Elevation Descent in Meters Read-only. |
| gps | GPSData | Structure of the GPS and detailed information |
Fields from Common
These are the fields of Common, which every Activity also carries.
| JSON Item | Data Type | Description |
|---|---|---|
| providerType | String | An enumeration of the Provider Type for uploading data to this API. |
| device | String | The model of the device that recorded the item, as its provider reported it, for example Forerunner 965. Absent when the provider did not say. Read-only. |
| attribution | String | This is the attribution of where the data came from in the user’s language. This should be displayed when this data is used. Read-only. |
| requiredAttribution | Boolean | True when the source of this item requires its attribution to be shown beside its data wherever it is used, including anything derived from it, as Garmin’s brand guidelines do. Read-only. |
| date | Long | Time in milliseconds since the Epoch in UTC |
| itemId | String | Id of the item |
| taskId | String | Id of the Source Data |
| apiVersion | String | The API version this item was rendered in, as a date (for example 2026-08-09). Present so that a stored .fsapi file can be told apart from one written under an earlier version; an item with no apiVersion predates the field and is the original 2014-09-12 API. |
| comment | String | Comment associated with the data. |
| tags | Array of String | User submitted tags |
| type | String | Type of the Task. Must be one of Activity, Allergy, Weight, BloodPressure, BloodPanel, Cholesterol, Condition, CycleTracking, ECG, Glucose, Medication, Nutrition, Oxygen, Sleep, Temperature |
| links | Source Item Links Item |
Example
{
"date": 1791849600000,
"summary": true,
"distance": 6.4280952380952385,
"activity": "Steps",
"distanceKM": 10.345016502857144,
"calories": 2574,
"type": "Activity",
"title": "Daily Activity Tracking",
"steps": 13499,
"avgHeartrate": 0,
"providerType": "FitnessSyncer",
"duration": 6749.5,
"itemId": "8edc63af-0777-8e68-9343-c275e2bceca5",
"apiVersion": "2026-10-25",
"fitnessSyncerActivity": "Steps",
"attribution": "FitnessSyncer Notebook",
"requiredAttribution": false,
"floorsClimbed": 5,
"restingHeartrate": 56
}Example with a Track
{
"date": 1791913920000,
"elevation_max": 85,
"distance": 5.315283255097417,
"activity": "Running",
"speed_avg": 11.486161879895562,
"endDate": 1791916601000,
"type": "Activity",
"title": "Evening Run",
"elevation_gain": 88.37372399295117,
"avgHeartrate": 147,
"providerType": "FitnessSyncer",
"duration": 2681,
"apiVersion": "2026-10-25",
"elevation_decent": 89.42786682713057,
"moving": 2680,
"pace": 5.22367703218767,
"distanceKM": 8.554119214891498,
"gps": {
"date": 1791913920000,
"lap": [{
"start": 1791913920000,
"dist": 8554.119214891498,
"maxHeart": 149,
"calories": 441,
"millis": 2680000,
"avgHeart": 144.00743494423793,
"totalMovingTimeMillisCalc": 2680000,
"points": [
{
"altitude": 70,
"heartRate": 128,
"time": 1791913920000,
"point": {
"lng": -75.6972,
"lat": 45.4215
}
},
{
"altitude": 71.05414283417939,
"distance": 31.918355279445887,
"heartRate": 126,
"time": 1791913930000,
"point": {
"lng": -75.69679106707889,
"lat": 45.42150336473386
}
},
{
"altitude": 72.10307308422828,
"distance": 63.836710558891774,
"heartRate": 131,
"time": 1791913940000,
"point": {
"lng": -75.6963823589195,
"lat": 45.421513457086064
}
}
]
}],
"id": "",
"title": "",
"sport": "Running"
},
"calories": 441,
"steps": 0,
"itemId": "fa7fc879-abff-ba4b-81b4-f12d103ca7c6",
"elevation_min": 55,
"fitnessSyncerActivity": "Running",
"attribution": "FitnessSyncer Notebook",
"requiredAttribution": false
}Arrays longer than 10 entries are cut to their first 3 here. The API sends them in full.
GPSData
| JSON Item | Data Type | Description |
|---|---|---|
| id | String | Id of the GPS Event |
| title | String | Title of the Stream |
| sport | String | Sport |
| date | Long | Date of the event as a long of the number of milliseconds since the Epoch in UTC |
| lap | Array of Lap |
Lap
| JSON Item | Data Type | Description |
|---|---|---|
| start | Long | Start time of this Lap in milliseconds since the Epoch in UTC |
| millis | Integer | Duration in milliseconds |
| totalMovingTimeMillis | Integer | Moving Time in milliseconds (if specified) |
| totalMovingTimeMillisCalc | Integer | This will either be equal to totalMovingTimeMillis or be the version we have calculated. This is a read-only field. |
| dist | Double | Distance in Meters |
| calories | Integer | Calories Expended for this Lap |
| speed | Double | Speed in Meters per Second |
| maxHeart | Double | Maximum heart rate in this Lap |
| avgHeart | Double | Average heart rate in this Lap |
| cadence | Double | Cadence for this Lap |
| sport | String | Only specified if different than the GPSData sport or a multisport activity. |
| notes | String | Notes for this Lap |
| hrr | Double | Heart Rate Recovery |
| avgCoreTemperature | Double | Average core body temperature in Celsius for this Lap. Taken from the source file when it supplies one, and computed from the Lap’s points when it does not. |
| minCoreTemperature | Double | Minimum core body temperature in Celsius for this Lap. |
| maxCoreTemperature | Double | Maximum core body temperature in Celsius for this Lap. |
| avgSmo2 | Double | Average muscle oxygen saturation percentage for this Lap. |
| avgLeftRightBalance | Double | The left pedal’s average share of this Lap’s total power, as a percentage, as the device computed it. The right share is 100 minus it. |
| avgLeftTorqueEffectiveness | Double | Average left leg torque effectiveness for this Lap, as a percentage. |
| avgRightTorqueEffectiveness | Double | Average right leg torque effectiveness for this Lap, as a percentage. |
| avgLeftPedalSmoothness | Double | Average left leg pedal smoothness for this Lap, as a percentage. |
| avgRightPedalSmoothness | Double | Average right leg pedal smoothness for this Lap, as a percentage. |
| avgCombinedPedalSmoothness | Double | Average pedal smoothness across both legs for this Lap, as a percentage. |
| avgLeftPco | Double | Average left platform center offset for this Lap, in millimeters. Negative is inboard. |
| avgRightPco | Double | Average right platform center offset for this Lap, in millimeters. Negative is inboard. |
| points | Array of Point |
Point
| JSON Item | Data Type | Description |
|---|---|---|
| time | Long | Time of this event in milliseconds since the epoch in UTC |
| distance | Double | Distance in Meters |
| point | LatLng | Latitude and Longitude for this point. |
| altitude | Double | Altitude in meters |
| heartRate | Double | Heart rate in beats per minute at this time |
| speed | Double | Speed in meters per second |
| cadence | Double | Cadence |
| calories | Double | Calories Burned |
| hrv | Array of Double | |
| hrv_sdnn | Double | Heart Rate Variability in SDNN |
| power | Double | Power in Watts |
| estimatedPower | Double | Estimated Power in Watts |
| temperature | Double | Ambient or device temperature in Celsius. Replaces temp, which is still emitted alongside it for now. On input temperature takes precedence when both are supplied. |
| coreTemperature | Double | Core body temperature in Celsius, as measured by a heat-flux sensor. Distinct from temperature, which is ambient or device temperature. |
| skinTemperature | Double | Skin surface temperature in Celsius at this point. |
| coreDataQuality | Integer | Sensor-reported confidence in the core temperature reading, 0 (worst) to 4 (best). Present only when the source device supplies it. |
| smo2 | Double | Muscle oxygen saturation as a percentage (0-100). |
| thb | Double | Total haemoglobin concentration in g/dL. |
| leftRightBalance | Double | The left pedal’s share of total power at this point, as a percentage, so a 48/52 ride reads 48 here and the right share is 100 minus it. Recorded by a dual-sided power meter. |
| leftTorqueEffectiveness | Double | Left leg torque effectiveness at this point, as a percentage: the share of the pedal stroke that drove the bike forward. |
| rightTorqueEffectiveness | Double | Right leg torque effectiveness at this point, as a percentage. |
| leftPedalSmoothness | Double | Left leg pedal smoothness at this point, as a percentage: how evenly power was applied through the stroke. |
| rightPedalSmoothness | Double | Right leg pedal smoothness at this point, as a percentage. |
| combinedPedalSmoothness | Double | Pedal smoothness across both legs at this point, as a percentage, as the head unit reported it. |
| leftPco | Double | Left platform center offset at this point, in millimeters, where the foot pressed relative to the center of the pedal. Negative is inboard. |
| rightPco | Double | Right platform center offset at this point, in millimeters. Negative is inboard. |
| steps | Double | Steps moved up-to this point from the last point. |
| torque | Double | Torque |
| locationAccuracy | Double | Rating of the location accuracy |
| bearing | Double | Bearings in Radians |
| tilt | Double | Tilt in Radians |
| pedometerCadence | Double | Current Cadence |
| crankCadence | Double | Crank Cadence |
| crankRevolutionDelta | Integer | Crank Revolution Delta |
| wheelCadence | Double | Wheel Cadence |
| wheelRevolutionDelta | Integer | Wheel Revolution Delta |
| moving | Boolean | True if this is considered to be in motion. |
| stanceTime | Double | Stance Time |
| legSpringStiffness | Double | Leg Spring Stiffness |
| stress | Double | Stress |
| formPower | Double | Form Power |
| verticalOscillation | Double | Vertical Oscillation |
| vo2Max | Double | VO2 Max |
| respiratoryRate | Double | Respiratory Rate |
LatLng
| JSON Item | Data Type | Description |
|---|---|---|
| lat | Double | Latitude |
| lng | Double | Longitude |
Allergy
This describes an allergy. It extends Common where type equals Allergy.
| JSON Item | Data Type | Description |
|---|---|---|
| allergy | String | Allergy Name |
| isNegated | Boolean | True if the treatment negates the allergy |
| treatment | String | Treatment of allergy |
| endDate | Long | Time in milliseconds since the Epoch in UTC of when this medication was last used. 0 implies that it is ongoing. |
Fields from Common
These are the fields of Common, which every Allergy also carries.
| JSON Item | Data Type | Description |
|---|---|---|
| providerType | String | An enumeration of the Provider Type for uploading data to this API. |
| device | String | The model of the device that recorded the item, as its provider reported it, for example Forerunner 965. Absent when the provider did not say. Read-only. |
| attribution | String | This is the attribution of where the data came from in the user’s language. This should be displayed when this data is used. Read-only. |
| requiredAttribution | Boolean | True when the source of this item requires its attribution to be shown beside its data wherever it is used, including anything derived from it, as Garmin’s brand guidelines do. Read-only. |
| date | Long | Time in milliseconds since the Epoch in UTC |
| itemId | String | Id of the item |
| taskId | String | Id of the Source Data |
| apiVersion | String | The API version this item was rendered in, as a date (for example 2026-08-09). Present so that a stored .fsapi file can be told apart from one written under an earlier version; an item with no apiVersion predates the field and is the original 2014-09-12 API. |
| comment | String | Comment associated with the data. |
| tags | Array of String | User submitted tags |
| type | String | Type of the Task. Must be one of Activity, Allergy, Weight, BloodPressure, BloodPanel, Cholesterol, Condition, CycleTracking, ECG, Glucose, Medication, Nutrition, Oxygen, Sleep, Temperature |
| links | Source Item Links Item |
Example
{
"date": 1791882000000,
"itemId": "8f27722e-6424-2c94-5313-a8b34fe58812",
"treatment": "Avoid",
"provider": "FitnessSyncer",
"attribution": "FitnessSyncer Notebook",
"isNegated": false,
"allergy": "Penicillin",
"type": "Allergy",
"requiredAttribution": false
}Weight
This describes a body composition record. It extends Common where type equals Weight.
A weigh-in and a bone densitometry scan are both this type. What tells them apart is boneDensity: a weigh-in has none, and a scan has one BoneDensity for every skeletal site its report named.
| JSON Item | Data Type | Description |
|---|---|---|
| weight | Double | Weight in KG |
| height | Double | Height in Meters |
| fatFreeMass | Double | Fat Free Mass in KG |
| fatRatio | Double | Fat Ratio |
| boneMass | Double | Bone Mass in KG |
| bodyWaterKg | Double | Body Water in KG |
| extracellularWater | Double | Extracellular Water in KG |
| intracellularWater | Double | Intracellular Water in KG |
| visceralFat | Double | Visceral Fat in the BIA scale. |
| boneDensity | Array of BoneDensity | One entry per skeletal site a densitometry scan reported. Absent on an ordinary weigh-in, which is most items of this type. Its presence is what makes this item a scan rather than a weight. |
| scanner | String | The machine a densitometry scan was performed on, when the report named one. Kept because densities from different manufacturers are not interchangeable, so it is what decides whether two scans can be compared at all. |
| bmi | Double | Body Mass Index. May be calculated if the User Preferences has the user’s height. |
| muscleMass | Double | Muscle Mass in KG |
| fatMassWeight | Double | Fat Mass Weight in KG |
| bicep | Double | Bicep in CM |
| calf | Double | Calf in CM |
| chest | Double | Chest in CM |
| forearm | Double | Forearm in CM |
| hips | Double | Hips in CM |
| neck | Double | Neck in CM |
| thigh | Double | Thigh in CM |
| waist | Double | Waist in CM |
| caliperChest | Double | Chest Caliper in MM |
| caliperMidaxillary | Double | Midaxillary Caliper in MM |
| caliperBicep | Double | Bicep Caliper in MM |
| caliperAbdominal | Double | Abdominal Caliper in MM |
| caliperSuprailiac | Double | Suprailiac Caliper in MM |
| caliperThigh | Double | Thigh Caliper in MM |
| caliperCalf | Double | Calf Caliper in MM |
| caliperSubscapular | Double | Subscapular Caliper in MM |
| caliperTricep | Double | Tricep Caliper in MM |
| caliperLowerBack | Double | Lower Back Caliper in MM |
Fields from Common
These are the fields of Common, which every BodyComposition also carries.
| JSON Item | Data Type | Description |
|---|---|---|
| providerType | String | An enumeration of the Provider Type for uploading data to this API. |
| device | String | The model of the device that recorded the item, as its provider reported it, for example Forerunner 965. Absent when the provider did not say. Read-only. |
| attribution | String | This is the attribution of where the data came from in the user’s language. This should be displayed when this data is used. Read-only. |
| requiredAttribution | Boolean | True when the source of this item requires its attribution to be shown beside its data wherever it is used, including anything derived from it, as Garmin’s brand guidelines do. Read-only. |
| date | Long | Time in milliseconds since the Epoch in UTC |
| itemId | String | Id of the item |
| taskId | String | Id of the Source Data |
| apiVersion | String | The API version this item was rendered in, as a date (for example 2026-08-09). Present so that a stored .fsapi file can be told apart from one written under an earlier version; an item with no apiVersion predates the field and is the original 2014-09-12 API. |
| comment | String | Comment associated with the data. |
| tags | Array of String | User submitted tags |
| type | String | Type of the Task. Must be one of Activity, Allergy, Weight, BloodPressure, BloodPanel, Cholesterol, Condition, CycleTracking, ECG, Glucose, Medication, Nutrition, Oxygen, Sleep, Temperature |
| links | Source Item Links Item |
Example
{
"date": 1791873660000,
"fatFreeMass": 62.357432661318484,
"bodyWater": 55.110151791069164,
"fatRatio": 20.957863596279292,
"weight": 78.89138059580986,
"type": "Weight",
"providerType": "FitnessSyncer",
"fatMassWeight": 16.53394793449138,
"itemId": "623ba781-a69c-8e16-3940-9526876c4d66",
"apiVersion": "2026-10-25",
"bodyWaterKg": 43.4771595964209,
"boneMass": 3.2,
"attribution": "FitnessSyncer Notebook",
"requiredAttribution": false,
"muscleMass": 59.15743266131848,
"height": 1.78,
"bmi": 24.89943839029474
}BoneDensity
This describes one skeletal site’s reading inside a densitometry scan. A number here is absent rather than zero when the scan did not report it, because zero is not a plausible density and a Z-score of zero is a real reading.
FitnessSyncer relays what the scan said and never derives or interprets it, so a T-score or a Z-score is the one the machine printed.
| JSON Item | Data Type | Description |
|---|---|---|
| site | String | The canonical site, or absent for a label that did not resolve, in which case name is the only thing identifying it. Must be one of: LumbarSpine, FemoralNeck, TotalHip, Forearm, WholeBody. |
| name | String | The label exactly as the scan printed it, for example "AP Spine L1-L3" rather than "Lumbar spine". Kept verbatim because which vertebrae were included is the difference between two scans that otherwise look comparable. |
| side | String | Which side the scan named, "Left" or "Right". Absent where the report did not say, and never inferred. |
| bmd | Double | Bone mineral density in grams per square centimeter. |
| tScore | Double | Standard deviations from the young adult reference mean, as the scan reported it. FitnessSyncer relays this and never derives or interprets it. |
| zScore | Double | Standard deviations from the age matched reference mean, as the scan reported it. |
| note | String | Whatever the report said about this site in prose, verbatim, for example an explanation of why a vertebra was excluded. |
| source | String | The line this reading was read from, so a reader can check it against their own copy without opening the document. |
Blood Pressure
This describes a blood pressure record. It extends Common where type equals BloodPressure.
| JSON Item | Data Type | Description |
|---|---|---|
| diastolic | Double | Diastolic Blood Pressure |
| systolic | Double | Systolic Blood Pressure |
| pulse | Double | Pulse at the time of the reading |
| arrhythmia | Boolean | True if Arrhythmia was detected in this reading. |
Fields from Common
These are the fields of Common, which every BloodPressure also carries.
| JSON Item | Data Type | Description |
|---|---|---|
| providerType | String | An enumeration of the Provider Type for uploading data to this API. |
| device | String | The model of the device that recorded the item, as its provider reported it, for example Forerunner 965. Absent when the provider did not say. Read-only. |
| attribution | String | This is the attribution of where the data came from in the user’s language. This should be displayed when this data is used. Read-only. |
| requiredAttribution | Boolean | True when the source of this item requires its attribution to be shown beside its data wherever it is used, including anything derived from it, as Garmin’s brand guidelines do. Read-only. |
| date | Long | Time in milliseconds since the Epoch in UTC |
| itemId | String | Id of the item |
| taskId | String | Id of the Source Data |
| apiVersion | String | The API version this item was rendered in, as a date (for example 2026-08-09). Present so that a stored .fsapi file can be told apart from one written under an earlier version; an item with no apiVersion predates the field and is the original 2014-09-12 API. |
| comment | String | Comment associated with the data. |
| tags | Array of String | User submitted tags |
| type | String | Type of the Task. Must be one of Activity, Allergy, Weight, BloodPressure, BloodPanel, Cholesterol, Condition, CycleTracking, ECG, Glucose, Medication, Nutrition, Oxygen, Sleep, Temperature |
| links | Source Item Links Item |
Example
{
"date": 1791876120000,
"itemId": "d2e56211-3639-c374-be73-dc2b6969e9d1",
"diastolic": 75,
"systolic": 127,
"apiVersion": "2026-10-25",
"pulse": 63,
"attribution": "FitnessSyncer Notebook",
"type": "BloodPressure",
"requiredAttribution": false,
"providerType": "FitnessSyncer"
}Blood Panel
This describes a blood panel. It extends Common where type equals BloodPanel.
The type was called Cholesterol, and still is for any client that has not said it understands the new name, so read either and send either. They are one type and this is its one description.
The four lipids have fields of their own because they always have. Everything else a panel measured is a LabResult in results, which is where a panel of fifty analytes lives.
| JSON Item | Data Type | Description |
|---|---|---|
| ldl | Double | LDL Cholesterol in mmol per Liter |
| hdl | Double | HDL Cholesterol in mmol per Liter |
| totalCholesterol | Double | Total Cholesterol in mmol per Liter |
| triglyceride | Double | Triglyceride in mmol per Liter |
| reported | Long | When the laboratory issued the report, in milliseconds since the epoch. The item’s own date is when the blood was drawn. |
| lab | String | The laboratory that performed the panel, as it named itself. |
| results | Array of LabResult | One entry per analyte measured at this collection. |
Fields from Common
These are the fields of Common, which every BloodPanel also carries.
| JSON Item | Data Type | Description |
|---|---|---|
| providerType | String | An enumeration of the Provider Type for uploading data to this API. |
| device | String | The model of the device that recorded the item, as its provider reported it, for example Forerunner 965. Absent when the provider did not say. Read-only. |
| attribution | String | This is the attribution of where the data came from in the user’s language. This should be displayed when this data is used. Read-only. |
| requiredAttribution | Boolean | True when the source of this item requires its attribution to be shown beside its data wherever it is used, including anything derived from it, as Garmin’s brand guidelines do. Read-only. |
| date | Long | Time in milliseconds since the Epoch in UTC |
| itemId | String | Id of the item |
| taskId | String | Id of the Source Data |
| apiVersion | String | The API version this item was rendered in, as a date (for example 2026-08-09). Present so that a stored .fsapi file can be told apart from one written under an earlier version; an item with no apiVersion predates the field and is the original 2014-09-12 API. |
| comment | String | Comment associated with the data. |
| tags | Array of String | User submitted tags |
| type | String | Type of the Task. Must be one of Activity, Allergy, Weight, BloodPressure, BloodPanel, Cholesterol, Condition, CycleTracking, ECG, Glucose, Medication, Nutrition, Oxygen, Sleep, Temperature |
| links | Source Item Links Item |
Example
{
"date": 1791882900000,
"triglyceride": 1.2740000795498017,
"hdl": 1.2738413093144016,
"itemId": "27736121-6a70-78bc-1ef9-cbf2b65a38a8",
"apiVersion": "2026-10-25",
"ldl": 3.612223165813514,
"totalCholesterol": 5.180740986333854,
"attribution": "FitnessSyncer Notebook",
"type": "BloodPanel",
"requiredAttribution": false,
"results": [
{
"unit": "mmol/L",
"high": 5.2,
"low": 0,
"name": "Total Cholesterol",
"analyte": "cholesterol-total",
"range": "0.0 - 5.2",
"source": "Total Cholesterol 5.18 mmol/L 0.0 - 5.2",
"value": 5.180740986333854
},
{
"unit": "mmol/L",
"high": 3.4,
"flag": "High",
"low": 0,
"name": "LDL Cholesterol",
"analyte": "cholesterol-ldl",
"range": "0.0 - 3.4",
"source": "LDL Cholesterol 3.61 mmol/L 0.0 - 3.4",
"value": 3.612223165813514
},
{
"unit": "mmol/L",
"high": 2.2,
"low": 1,
"name": "HDL Cholesterol",
"analyte": "cholesterol-hdl",
"range": "1.0 - 2.2",
"source": "HDL Cholesterol 1.27 mmol/L 1.0 - 2.2",
"value": 1.2738413093144016
},
{
"unit": "mmol/L",
"high": 1.7,
"low": 0,
"name": "Triglycerides",
"analyte": "triglycerides",
"range": "0.0 - 1.7",
"source": "Triglycerides 1.27 mmol/L 0.0 - 1.7",
"value": 1.2740000795498017
},
{
"unit": "ng/mL",
"high": 400,
"low": 30,
"name": "Ferritin",
"analyte": "ferritin",
"range": "30.0 - 400.0",
"source": "Ferritin 72.00 ng/mL 30.0 - 400.0",
"value": 72
},
{
"unit": "uIU/mL",
"high": 4,
"low": 0.4,
"name": "TSH",
"analyte": "thyroid-stimulating-hormone",
"range": "0.4 - 4.0",
"source": "TSH 2.14 uIU/mL 0.4 - 4.0",
"value": 2.1400577530282856
},
{
"unit": "%",
"high": 5.6,
"flag": "High",
"low": 4,
"name": "Hemoglobin A1c",
"analyte": "hemoglobin-a1c",
"range": "4.0 - 5.6",
"source": "Hemoglobin A1c 5.69 % 4.0 - 5.6",
"value": 5.6904010316869735
},
{
"unit": "IU/mL",
"name": "Anti-TPO",
"source": "Anti-TPO 18 IU/mL",
"value": 18
}
],
"providerType": "FitnessSyncer"
}LabResult
This describes one analyte’s result inside a blood panel.
analyte is the canonical analyte, and it is absent when the laboratory used a name FitnessSyncer does not recognize, in which case name is the only thing identifying it. value is the result as a number, absent when the laboratory reported something that is not one, and text is always what the laboratory actually wrote, which may carry a less-than sign or a word such as NEGATIVE.
| JSON Item | Data Type | Description |
|---|---|---|
| analyte | String | The analyte this result is for. Absent when the analyte was not recognized, in which case name is the only thing identifying it. |
| name | String | The name the laboratory used for this analyte. |
| value | Double | The result as a number. Absent when the laboratory reported something that is not one. |
| text | String | The result exactly as the laboratory reported it, which may carry a less-than sign or a word such as NEGATIVE. |
| unit | String | The unit the laboratory reported, as it wrote it. |
| low | Double | The lower bound of the reference range the laboratory sent with this result. |
| high | Double | The upper bound of the reference range the laboratory sent with this result. |
| range | String | The reference range in the laboratory’s own wording, where it sent one rather than a pair of numbers. |
| flag | String | Whether the result sits inside the reference range the laboratory sent. Must be one of: InRange, Low, High |
| flagDerived | Boolean | Whether the flag was worked out from the reference range rather than sent by the laboratory. |
| corrected | Boolean | Whether the value was corrected by hand after being read from a document, in which case it is not the number that document shows. |
| source | String | The line of the source document this result was read from, kept verbatim. Present only where the result came from a document rather than from a structured record. |
Condition
This describes a condition. It extends Common where type equals Condition.
| JSON Item | Data Type | Description |
|---|---|---|
| condition | String | Condition Name |
| endDate | Long | Time in milliseconds since the Epoch in UTC of when this medication was last used. 0 implies that it is ongoing. |
Fields from Common
These are the fields of Common, which every Condition also carries.
| JSON Item | Data Type | Description |
|---|---|---|
| providerType | String | An enumeration of the Provider Type for uploading data to this API. |
| device | String | The model of the device that recorded the item, as its provider reported it, for example Forerunner 965. Absent when the provider did not say. Read-only. |
| attribution | String | This is the attribution of where the data came from in the user’s language. This should be displayed when this data is used. Read-only. |
| requiredAttribution | Boolean | True when the source of this item requires its attribution to be shown beside its data wherever it is used, including anything derived from it, as Garmin’s brand guidelines do. Read-only. |
| date | Long | Time in milliseconds since the Epoch in UTC |
| itemId | String | Id of the item |
| taskId | String | Id of the Source Data |
| apiVersion | String | The API version this item was rendered in, as a date (for example 2026-08-09). Present so that a stored .fsapi file can be told apart from one written under an earlier version; an item with no apiVersion predates the field and is the original 2014-09-12 API. |
| comment | String | Comment associated with the data. |
| tags | Array of String | User submitted tags |
| type | String | Type of the Task. Must be one of Activity, Allergy, Weight, BloodPressure, BloodPanel, Cholesterol, Condition, CycleTracking, ECG, Glucose, Medication, Nutrition, Oxygen, Sleep, Temperature |
| links | Source Item Links Item |
Example
{
"date": 1791882000000,
"itemId": "ef71eb6e-e3ca-6cc7-aefa-4bf63da01b21",
"condition": "Seasonal rhinitis",
"provider": "FitnessSyncer",
"attribution": "FitnessSyncer Notebook",
"type": "Condition",
"requiredAttribution": false
}Cycle Tracking
This describes a cycle tracking record. It extends Common where type equals CycleTracking.
| JSON Item | Data Type | Description |
|---|---|---|
| flowLevel | String | Menstrual flow level, if logged that day. Must be one of: NONE, SPOTTING, LIGHT, MEDIUM, HEAVY |
| basalBodyTempCelsius | Double | Basal body temperature in Celsius, if logged that day. Absent if not logged. |
| cervicalMucus | String | Cervical mucus quality, if logged that day. Must be one of: DRY, STICKY, CREAMY, WATERY, EGG_WHITE |
| ovulationTest | String | Ovulation predictor kit test result, if logged that day. Must be one of: NEGATIVE, HIGH, PEAK |
Fields from Common
These are the fields of Common, which every CycleTracking also carries.
| JSON Item | Data Type | Description |
|---|---|---|
| providerType | String | An enumeration of the Provider Type for uploading data to this API. |
| device | String | The model of the device that recorded the item, as its provider reported it, for example Forerunner 965. Absent when the provider did not say. Read-only. |
| attribution | String | This is the attribution of where the data came from in the user’s language. This should be displayed when this data is used. Read-only. |
| requiredAttribution | Boolean | True when the source of this item requires its attribution to be shown beside its data wherever it is used, including anything derived from it, as Garmin’s brand guidelines do. Read-only. |
| date | Long | Time in milliseconds since the Epoch in UTC |
| itemId | String | Id of the item |
| taskId | String | Id of the Source Data |
| apiVersion | String | The API version this item was rendered in, as a date (for example 2026-08-09). Present so that a stored .fsapi file can be told apart from one written under an earlier version; an item with no apiVersion predates the field and is the original 2014-09-12 API. |
| comment | String | Comment associated with the data. |
| tags | Array of String | User submitted tags |
| type | String | Type of the Task. Must be one of Activity, Allergy, Weight, BloodPressure, BloodPanel, Cholesterol, Condition, CycleTracking, ECG, Glucose, Medication, Nutrition, Oxygen, Sleep, Temperature |
| links | Source Item Links Item |
Example
{
"date": 1792627200000,
"flowLevel": "MEDIUM",
"itemId": "8b713bba-2ac6-13bb-3954-6ece81f52004",
"apiVersion": "2026-10-25",
"basalBodyTempCelsius": 36.429312482237826,
"attribution": "FitnessSyncer Notebook",
"type": "CycleTracking",
"requiredAttribution": false,
"providerType": "FitnessSyncer"
}ECG
This describes an ECG recording. It extends Common where type equals ECG.
| JSON Item | Data Type | Description |
|---|---|---|
| durationMs | Integer | Duration of the recording in milliseconds. Typically 30000. |
| sampleRateHz | Integer | Sample rate of the waveform in hertz. |
| samples | Array of Integer | Ordered raw waveform samples in microvolts. |
| leadConfig | String | Electrode lead configuration used for this recording. Must be one of: UNKNOWN, LEAD_I, SIX_LEAD, PRECORDIAL |
| classification | String | Rhythm classification as reported by the recording device. Not a diagnosis. Must be one of: UNRECOGNIZED, SINUS_RHYTHM, ATRIAL_FIBRILLATION, HIGH_HEART_RATE, LOW_HEART_RATE, INCONCLUSIVE |
| classificationRaw | String | The original, untranslated classification string as returned by the source device/vendor, kept alongside the mapped classification value. |
| inconclusiveReason | String | Reason the device reported an inconclusive classification, if applicable. Must be one of: UNKNOWN, POOR_RECORDING, HIGH_HEART_RATE, LOW_HEART_RATE, UNCLASSIFIABLE |
| avgHeartRateBpm | Integer | Average heart rate during the recording, in beats per minute, as reported by the device. |
| symptoms | Array of String | Symptoms noted at the time of recording, if supplied by the source. Each entry must be one of: UNKNOWN, CHEST_TIGHTNESS_OR_PAIN, DIZZINESS, FAINTING, RAPID_POUNDING_OR_FLUTTERING_HEARTBEAT, SHORTNESS_OF_BREATH, SKIPPED_HEARTBEAT |
Fields from Common
These are the fields of Common, which every ECG also carries.
| JSON Item | Data Type | Description |
|---|---|---|
| providerType | String | An enumeration of the Provider Type for uploading data to this API. |
| device | String | The model of the device that recorded the item, as its provider reported it, for example Forerunner 965. Absent when the provider did not say. Read-only. |
| attribution | String | This is the attribution of where the data came from in the user’s language. This should be displayed when this data is used. Read-only. |
| requiredAttribution | Boolean | True when the source of this item requires its attribution to be shown beside its data wherever it is used, including anything derived from it, as Garmin’s brand guidelines do. Read-only. |
| date | Long | Time in milliseconds since the Epoch in UTC |
| itemId | String | Id of the item |
| taskId | String | Id of the Source Data |
| apiVersion | String | The API version this item was rendered in, as a date (for example 2026-08-09). Present so that a stored .fsapi file can be told apart from one written under an earlier version; an item with no apiVersion predates the field and is the original 2014-09-12 API. |
| comment | String | Comment associated with the data. |
| tags | Array of String | User submitted tags |
| type | String | Type of the Task. Must be one of Activity, Allergy, Weight, BloodPressure, BloodPanel, Cholesterol, Condition, CycleTracking, ECG, Glucose, Medication, Nutrition, Oxygen, Sleep, Temperature |
| links | Source Item Links Item |
Example
{
"date": 1791877500000,
"sampleRateHz": 300,
"type": "ECG",
"classification": "SINUS_RHYTHM",
"classificationRaw": "sinus_rhythm",
"samples": [
1,
-2,
1
],
"providerType": "Withings",
"itemId": "9f9cd10a-cd7d-683e-279c-10414fb90781",
"apiVersion": "2026-10-25",
"avgHeartRateBpm": 61,
"attribution": "Withings",
"requiredAttribution": false,
"durationMs": 30000,
"leadConfig": "LEAD_I"
}Arrays longer than 10 entries are cut to their first 3 here. The API sends them in full.
Glucose
This describes a glucose record. It extends Common where type equals Glucose.
| JSON Item | Data Type | Description |
|---|---|---|
| value | Double | Glucose Read in mmol per Liter |
| a1c | Boolean | True if the value was derived from an A1C |
| measurementType | String | Description of the Context, such as whole blood or plasma |
| measurementContext | String | Description of the Context, such as Before Breakfast |
| entries | Array of GlucosePoint | In order to scale, we recommend grouping data per hour. These are the finer grained elements. |
Fields from Common
These are the fields of Common, which every Glucose also carries.
| JSON Item | Data Type | Description |
|---|---|---|
| providerType | String | An enumeration of the Provider Type for uploading data to this API. |
| device | String | The model of the device that recorded the item, as its provider reported it, for example Forerunner 965. Absent when the provider did not say. Read-only. |
| attribution | String | This is the attribution of where the data came from in the user’s language. This should be displayed when this data is used. Read-only. |
| requiredAttribution | Boolean | True when the source of this item requires its attribution to be shown beside its data wherever it is used, including anything derived from it, as Garmin’s brand guidelines do. Read-only. |
| date | Long | Time in milliseconds since the Epoch in UTC |
| itemId | String | Id of the item |
| taskId | String | Id of the Source Data |
| apiVersion | String | The API version this item was rendered in, as a date (for example 2026-08-09). Present so that a stored .fsapi file can be told apart from one written under an earlier version; an item with no apiVersion predates the field and is the original 2014-09-12 API. |
| comment | String | Comment associated with the data. |
| tags | Array of String | User submitted tags |
| type | String | Type of the Task. Must be one of Activity, Allergy, Weight, BloodPressure, BloodPanel, Cholesterol, Condition, CycleTracking, ECG, Glucose, Medication, Nutrition, Oxygen, Sleep, Temperature |
| links | Source Item Links Item |
Example
{
"date": 1791875940000,
"itemId": "d2258c72-efd0-59c7-b612-b2fd53beabf6",
"apiVersion": "2026-10-25",
"attribution": "FitnessSyncer Notebook",
"type": "Glucose",
"requiredAttribution": false,
"value": 5.009129011161377,
"providerType": "FitnessSyncer"
}GlucosePoint
This describes a glucose entry.
| JSON Item | Data Type | Description |
|---|---|---|
| time | Long | Time in milliseconds since the Epoch in UTC |
| value | Double | Glucose Read in mmol per Liter |
| comment | String | The note written on this one reading, if any. Readings are listed, under entries, only when the item carries more than one; a note on the whole item is the item’s own comment. |
Medication
This describes a medication record. It extends Common where type equals Medication.
| JSON Item | Data Type | Description |
|---|---|---|
| medication | String | Medication Name |
| dose | Double | The dose amount of this medication |
| doseUnit | String | The dose unit amount for this type. Must be one of: ML, MG, MCG, MGML, TABLET |
| strength | Double | The strength amount of this medication |
| strengthUnit | String | The strength unit amount for this type. Must be one of: ML, MG, MCG, MGML, TABLET |
| endDate | Long | Time in milliseconds since the Epoch in UTC of when this medication was last used. 0 implies that it is ongoing. |
Fields from Common
These are the fields of Common, which every Medication also carries.
| JSON Item | Data Type | Description |
|---|---|---|
| providerType | String | An enumeration of the Provider Type for uploading data to this API. |
| device | String | The model of the device that recorded the item, as its provider reported it, for example Forerunner 965. Absent when the provider did not say. Read-only. |
| attribution | String | This is the attribution of where the data came from in the user’s language. This should be displayed when this data is used. Read-only. |
| requiredAttribution | Boolean | True when the source of this item requires its attribution to be shown beside its data wherever it is used, including anything derived from it, as Garmin’s brand guidelines do. Read-only. |
| date | Long | Time in milliseconds since the Epoch in UTC |
| itemId | String | Id of the item |
| taskId | String | Id of the Source Data |
| apiVersion | String | The API version this item was rendered in, as a date (for example 2026-08-09). Present so that a stored .fsapi file can be told apart from one written under an earlier version; an item with no apiVersion predates the field and is the original 2014-09-12 API. |
| comment | String | Comment associated with the data. |
| tags | Array of String | User submitted tags |
| type | String | Type of the Task. Must be one of Activity, Allergy, Weight, BloodPressure, BloodPanel, Cholesterol, Condition, CycleTracking, ECG, Glucose, Medication, Nutrition, Oxygen, Sleep, Temperature |
| links | Source Item Links Item |
Example
{
"date": 1791878400000,
"itemId": "7fdf0c94-679d-f60c-90be-50a97f914061",
"dose": 1,
"strength": 500,
"endDate": 1791878460000,
"provider": "FitnessSyncer",
"attribution": "FitnessSyncer Notebook",
"medication": "Metformin",
"type": "Medication",
"strengthUnit": "MG",
"requiredAttribution": false,
"doseUnit": "TABLET"
}Nutrition
This describes a nutrition record. It extends Common where type equals Nutrition. This item may record food, water, or both; when reading, use hasNutrition and hasWater to help determine how to consume this item.
| JSON Item | Data Type | Description |
|---|---|---|
| food | String | Description of the Food Eaten |
| meal | String | Meal that this was eaten at, typically Breakfast, Lunch, Dinner, Snack, or Other |
| mealApproximation | String | Based on the time, this is FitnessSyncer’s best approximation of the meal time Read-only. |
| hasNutrition | Boolean | Indicates whether this item records nutrient quantities. Read-only. |
| hasWater | Boolean | Indicates whether this item records water. Read-only. |
| calories | Double | Number of calories in this meal. This field is required if Water is not present. |
| carbohydrates | Double | Carbohydrates in Grams |
| fat | Double | Fat in Grams |
| fiber | Double | Fiber in Grams |
| protein | Double | Protein in Grams |
| sugar | Double | Sugar in Grams |
| cholesterol | Double | Cholesterol in Grams |
| saturatedFat | Double | Saturated Fat in Grams |
| sodium | Double | Sodium in milligrams |
| iron | Double | Iron in milligrams |
| potassium | Double | Potassium in milligrams |
| vitaminA | Double | Vitamin A in IU |
| vitaminC | Double | Vitamin C in IU |
| vitaminD | Double | Vitamin D in IU |
| calcium | Double | Calcium in grams |
| glycemicLoad | Integer | Glycemic Load |
| water | Double | Number of Fluid Ounces of Water Consumed. This field is required if Calories is not present. |
Fields from Common
These are the fields of Common, which every Nutrition also carries.
| JSON Item | Data Type | Description |
|---|---|---|
| providerType | String | An enumeration of the Provider Type for uploading data to this API. |
| device | String | The model of the device that recorded the item, as its provider reported it, for example Forerunner 965. Absent when the provider did not say. Read-only. |
| attribution | String | This is the attribution of where the data came from in the user’s language. This should be displayed when this data is used. Read-only. |
| requiredAttribution | Boolean | True when the source of this item requires its attribution to be shown beside its data wherever it is used, including anything derived from it, as Garmin’s brand guidelines do. Read-only. |
| date | Long | Time in milliseconds since the Epoch in UTC |
| itemId | String | Id of the item |
| taskId | String | Id of the Source Data |
| apiVersion | String | The API version this item was rendered in, as a date (for example 2026-08-09). Present so that a stored .fsapi file can be told apart from one written under an earlier version; an item with no apiVersion predates the field and is the original 2014-09-12 API. |
| comment | String | Comment associated with the data. |
| tags | Array of String | User submitted tags |
| type | String | Type of the Task. Must be one of Activity, Allergy, Weight, BloodPressure, BloodPanel, Cholesterol, Condition, CycleTracking, ECG, Glucose, Medication, Nutrition, Oxygen, Sleep, Temperature |
| links | Source Item Links Item |
Example
{
"date": 1791877800000,
"carbohydrates": 30.955025573361695,
"fiber": 2.902033647502659,
"calories": 406.28471065037223,
"type": "Nutrition",
"water": 0,
"food": "Scrambled eggs and toast",
"providerType": "FitnessSyncer",
"meal": "Breakfast",
"sodium": 761,
"saturatedFat": 6.384474024505849,
"itemId": "1c54654c-fd11-9069-f71d-3f741bbced9c",
"apiVersion": "2026-10-25",
"hasNutrition": true,
"hasWater": false,
"protein": 23.21626918002127,
"fat": 21.281580081686165,
"attribution": "FitnessSyncer Notebook",
"cholesterol": 0.048367227458377654,
"requiredAttribution": false,
"mealApproximation": "breakfast",
"sugar": 3.869378196670212
}Oxygen
This describes an oxygen record. It extends Common where type equals Oxygen.
| JSON Item | Data Type | Description |
|---|---|---|
| spo2 | Double | SpO2 Reading in Percent |
| pulse | Double | Pulse Reading in BPM |
| entries | Array of OxygenPoint | In order to scale, we recommend grouping data per hour. These are the finer grained elements. |
Fields from Common
These are the fields of Common, which every Oxygen also carries.
| JSON Item | Data Type | Description |
|---|---|---|
| providerType | String | An enumeration of the Provider Type for uploading data to this API. |
| device | String | The model of the device that recorded the item, as its provider reported it, for example Forerunner 965. Absent when the provider did not say. Read-only. |
| attribution | String | This is the attribution of where the data came from in the user’s language. This should be displayed when this data is used. Read-only. |
| requiredAttribution | Boolean | True when the source of this item requires its attribution to be shown beside its data wherever it is used, including anything derived from it, as Garmin’s brand guidelines do. Read-only. |
| date | Long | Time in milliseconds since the Epoch in UTC |
| itemId | String | Id of the item |
| taskId | String | Id of the Source Data |
| apiVersion | String | The API version this item was rendered in, as a date (for example 2026-08-09). Present so that a stored .fsapi file can be told apart from one written under an earlier version; an item with no apiVersion predates the field and is the original 2014-09-12 API. |
| comment | String | Comment associated with the data. |
| tags | Array of String | User submitted tags |
| type | String | Type of the Task. Must be one of Activity, Allergy, Weight, BloodPressure, BloodPanel, Cholesterol, Condition, CycleTracking, ECG, Glucose, Medication, Nutrition, Oxygen, Sleep, Temperature |
| links | Source Item Links Item |
Example
{
"date": 1791876660000,
"itemId": "1b78b41d-0745-669b-4d5e-83001327d594",
"apiVersion": "2026-10-25",
"spo2": 95,
"pulse": 59,
"attribution": "FitnessSyncer Notebook",
"type": "Oxygen",
"requiredAttribution": false,
"providerType": "FitnessSyncer"
}OxygenPoint
This describes an oxygen entry.
| JSON Item | Data Type | Description |
|---|---|---|
| time | Long | Time in milliseconds since the Epoch in UTC |
| spo2 | Double | SpO2 Reading in Percent |
| pulse | Double | Pulse Reading in BPM |
| comment | String | The note written on this one reading, if any. Readings are listed, under entries, only when the item carries more than one; a note on the whole item is the item’s own comment. |
Sleep
This describes a sleep record. It extends Common where type equals Sleep.
| JSON Item | Data Type | Description |
|---|---|---|
| bedTime | Long | Bed Time in Milliseconds Since Epoch in UTC |
| awakeTime | Long | Awake Time in Milliseconds Since Epoch in UTC |
| sleepingMinutes | Double | Total number of minutes actually asleep. The per-stage fields (lightSleepMinutes, remSleepMinutes, deepSleepMinutes, sleepUnspecifiedMinutes, restlessMinutes) partition this total, so summing them alongside this value double-counts. |
| awakenings | Integer | Number of times awoken |
| efficiency | Double | Efficiency of the Sleep as a Percentage |
| sleepEvents | Array of SleepEvent | Actual Sleep Events |
| inferredSleepEvents | Array of SleepEvent | If Actual Sleep Events are not available, FitnessSyncer will provide inferred Sleep Events. This is a read-only parameter. |
| sleepPoints | Array of SleepPoint | |
| settlingMinutes | Double | Sleep latency; the number of minutes between getting into bed and falling asleep. |
| lightSleepMinutes | Double | Number of Minutes in Light Sleep. |
| deepSleepMinutes | Double | Number of Minutes in Deep Sleep. |
| remSleepMinutes | Double | Number of Minutes in REM Sleep. |
| sleepUnspecifiedMinutes | Double | Number of Minutes asleep where the source did not report which stage. |
| restlessMinutes | Double | Number of Minutes restless, meaning moving or disturbed, but not scored as awake. |
| awakeMinutes | Double | Number of Minutes awake during the sleep period. |
| avgHR | Double | Average Heart Rate during Sleep |
| minHR | Double | Minimum Heart Rate during Sleep |
| avgRR | Double | Average Respiratory Rate during Sleep |
| spo2 | Double | Average SPO2 during Sleep Read-only. |
| hrvRmssdEvening | Double | HRV RMSSD when going to Sleep |
| hrvRmssdMorning | Double | HRV RMSSD when waking up |
| nap | Boolean | True if this is a nap. |
Fields from Common
These are the fields of Common, which every Sleep also carries.
| JSON Item | Data Type | Description |
|---|---|---|
| providerType | String | An enumeration of the Provider Type for uploading data to this API. |
| device | String | The model of the device that recorded the item, as its provider reported it, for example Forerunner 965. Absent when the provider did not say. Read-only. |
| attribution | String | This is the attribution of where the data came from in the user’s language. This should be displayed when this data is used. Read-only. |
| requiredAttribution | Boolean | True when the source of this item requires its attribution to be shown beside its data wherever it is used, including anything derived from it, as Garmin’s brand guidelines do. Read-only. |
| date | Long | Time in milliseconds since the Epoch in UTC |
| itemId | String | Id of the item |
| taskId | String | Id of the Source Data |
| apiVersion | String | The API version this item was rendered in, as a date (for example 2026-08-09). Present so that a stored .fsapi file can be told apart from one written under an earlier version; an item with no apiVersion predates the field and is the original 2014-09-12 API. |
| comment | String | Comment associated with the data. |
| tags | Array of String | User submitted tags |
| type | String | Type of the Task. Must be one of Activity, Allergy, Weight, BloodPressure, BloodPanel, Cholesterol, Condition, CycleTracking, ECG, Glucose, Medication, Nutrition, Oxygen, Sleep, Temperature |
| links | Source Item Links Item |
Example
{
"date": 1791846060000,
"remSleepMinutes": 100,
"efficiency": 91.54589371980676,
"sleepEvents": [
{
"durationMinutes": 23,
"offsetMinutes": 0,
"type": "AWAKE"
},
{
"durationMinutes": 47,
"offsetMinutes": 23,
"type": "LIGHT_SLEEP"
},
{
"durationMinutes": 33,
"offsetMinutes": 70,
"type": "DEEP_SLEEP"
}
],
"bedTime": 1791846060000,
"settlingMinutes": 23,
"type": "Sleep",
"minHR": 0,
"providerType": "FitnessSyncer",
"awakeMinutes": 35,
"awakeTime": 1791870900000,
"itemId": "8f763040-7134-825f-07c1-7890a1db0589",
"avgHR": 0,
"awakenings": 1,
"apiVersion": "2026-10-25",
"deepSleepMinutes": 98,
"attribution": "FitnessSyncer Notebook",
"requiredAttribution": false,
"avgRR": 0,
"sleepingMinutes": 379,
"lightSleepMinutes": 181
}Arrays longer than 10 entries are cut to their first 3 here. The API sends them in full.
SleepEvent
| JSON Item | Data Type | Description |
|---|---|---|
| type | String | Sleep stage, ordered from most awake to most asleep: REALLY_AWAKE (out of bed), AWAKE (awake, in bed), RESTLESS (moving or disturbed, not scored awake), LIGHT_SLEEP, REM, DEEP_SLEEP, ASLEEP (asleep, stage unknown). RESTLESS and DEEP_SLEEP were introduced in API version 2026-08-09. |
| offsetMinutes | Double | Minute within the sleep this started. |
| durationMinutes | Double | Number of minutes that this event lasts for. |
SleepPoint
| JSON Item | Data Type | Description |
|---|---|---|
| time | Long | Time in milliseconds since the Epoch in UTC |
| heartRate | Double | Heart rate in beats per minute at this time |
| respiratoryRate | Double | Respiratory Rate |
| hrv_sdnn | Double | Heart Rate Variability in SDNN |
| spo2 | Double | SpO2 Reading in Percent |
Temperature
This describes a temperature record. It extends Common where type equals Temperature.
| JSON Item | Data Type | Description |
|---|---|---|
| temperature | Double | Temperature Reading in Celsius |
| entries | Array of TemperaturePoint | In order to scale, we recommend grouping data per hour. These are the finer grained elements. |
Fields from Common
These are the fields of Common, which every Temperature also carries.
| JSON Item | Data Type | Description |
|---|---|---|
| providerType | String | An enumeration of the Provider Type for uploading data to this API. |
| device | String | The model of the device that recorded the item, as its provider reported it, for example Forerunner 965. Absent when the provider did not say. Read-only. |
| attribution | String | This is the attribution of where the data came from in the user’s language. This should be displayed when this data is used. Read-only. |
| requiredAttribution | Boolean | True when the source of this item requires its attribution to be shown beside its data wherever it is used, including anything derived from it, as Garmin’s brand guidelines do. Read-only. |
| date | Long | Time in milliseconds since the Epoch in UTC |
| itemId | String | Id of the item |
| taskId | String | Id of the Source Data |
| apiVersion | String | The API version this item was rendered in, as a date (for example 2026-08-09). Present so that a stored .fsapi file can be told apart from one written under an earlier version; an item with no apiVersion predates the field and is the original 2014-09-12 API. |
| comment | String | Comment associated with the data. |
| tags | Array of String | User submitted tags |
| type | String | Type of the Task. Must be one of Activity, Allergy, Weight, BloodPressure, BloodPanel, Cholesterol, Condition, CycleTracking, ECG, Glucose, Medication, Nutrition, Oxygen, Sleep, Temperature |
| links | Source Item Links Item |
Example
{
"date": 1791876000000,
"itemId": "af1f827e-2955-9e9f-4a6f-887bfe7727ee",
"apiVersion": "2026-10-25",
"temperature": 36.48361338119312,
"attribution": "FitnessSyncer Notebook",
"type": "Temperature",
"requiredAttribution": false,
"providerType": "FitnessSyncer"
}TemperaturePoint
This describes a temperature entry.
| JSON Item | Data Type | Description |
|---|---|---|
| time | Long | Time in milliseconds since the Epoch in UTC |
| value | Double | Temperature Reading in Celsius |
| comment | String | The note written on this one reading, if any. Readings are listed, under entries, only when the item carries more than one; a note on the whole item is the item’s own comment. |