The Google Fit APIs, including the Google Fit REST API, will no longer be available after June 30, 2025. As of May 1, 2024, developers cannot sign up to use these APIs.
Google Fit has health data types for measurements related to managing
general health (as opposed to fitness).
Data types list
You can learn more about the health data types, and their fields, from the
Android reference documentation. Fields with the unit enum have a
list of accepted values to choose from. Only use one of the allowed values to
successfully read and write data.
Blood glucose
This data type captures the concentration of glucose in the blood. Each data
point represents a single instantaneous blood glucose reading. Learn more about
writing blood glucose data.
The blood glucose level or concentration in mmol/L where 1 mmol/L is 18 mg/dL.
temporal relation to meal (int—enum) (optional field)
When the reading was taken compared to when the user ate.
Accepted values
"intVal": 1 // Reading wasn't taken before or after a meal
"intVal": 2 // Reading was taken during a fasting period
"intVal": 3 // Reading was taken before a meal
"intVal": 4 // Reading was taken after a meal
meal type (int—enum) (optional field)
What type of meal the user ate around when the reading was taken.
temporal relation to sleep (int—enum) (optional field)
When the reading was taken compared to when the user slept.
Accepted values
"intVal": 1 // User was fully awake
"intVal": 2 // Before the user fell asleep
"intVal": 3 // After the user woke up
"intVal": 4 // While the user was still sleeping
specimen source (int—enum) (optional field)
Type of body fluid used to measure the blood glucose.
When the reading was taken compared to when the user ate.
Accepted values
FIELD_TEMPORAL_RELATION_TO_MEAL_GENERAL // Reading wasn't taken before or after a meal
FIELD_TEMPORAL_RELATION_TO_MEAL_FASTING // Reading was taken during a fasting period
FIELD_TEMPORAL_RELATION_TO_MEAL_BEFORE_MEAL // Reading was taken before a meal
FIELD_TEMPORAL_RELATION_TO_MEAL_AFTER_MEAL // Reading was taken after a meal
FIELD_MEAL_TYPE (int—enum) (optional field)
What type of meal the user ate around when the reading was taken.
When the reading was taken compared to when the user slept.
Accepted values
TEMPORAL_RELATION_TO_SLEEP_FULLY_AWAKE // User was fully awake.
TEMPORAL_RELATION_TO_SLEEP_BEFORE_SLEEP // Before the user fell asleep.
TEMPORAL_RELATION_TO_SLEEP_ON_WAKING // After the user woke up.
TEMPORAL_RELATION_TO_SLEEP_DURING_SLEEP // While the user was still sleeping.
This data type captures the blood pressure of a user. Each data point represents
a single instantaneous blood pressure reading. Learn more about writing blood
pressure data.
The user's body position when the measurement was taken.
Accepted values
"intVal": 1 // Standing up
"intVal": 2 // Sitting down
"intVal": 3 // Lying down
"intVal": 4 // Reclining
measurement location (int—enum) (optional field)
Which arm and part of the arm the measurement was taken.
Accepted values
"intVal": 1 // Left wrist
"intVal": 2 // Right wrist
"intVal": 3 // Left upper arm
"intVal": 4 // Right upper arm
Android
Name
com.google.blood_pressure
Data type object
TYPE_BLOOD_PRESSURE
Fields (format—units)
FIELD_BLOOD_PRESSURE_SYSTOLIC (float—mmHg)
The systolic blood pressure measurement.
FIELD_BLOOD_PRESSURE_DIASTOLIC (float—mmHg)
The diastolic blood pressure measurement.
FIELD_BODY_POSITION (int—enum) (optional field)
The user's body position when the measurement was taken.
Accepted values
BODY_POSITION_STANDING // Standing up
BODY_POSITION_SITTING // Sitting down
BODY_POSITION_LYING_DOWN // Lying down
BODY_POSITION_SEMI_RECUMBENT // Reclining
Which arm and part of the arm the measurement was taken.
Accepted values
BLOOD_PRESSURE_MEASUREMENT_LOCATION_LEFT_WRIST // Left wrist
BLOOD_PRESSURE_MEASUREMENT_LOCATION_RIGHT_WRIST // Right wrist
BLOOD_PRESSURE_MEASUREMENT_LOCATION_LEFT_UPPER_ARM // Left upper arm
BLOOD_PRESSURE_MEASUREMENT_LOCATION_RIGHT_UPPER_ARM // Right upper arm
Body fat percentage
This data type captures the body fat percentage of a user. Each data point
represents a person's total body fat as a percentage of their total body mass.
This data type captures the description of cervical mucus. Each data point
represents a self-assessed description of cervical mucus for a user. All fields
are optional and can be used to describe the look and feel of cervical mucus,
and the amount.
The consistency or texture of the user's cervical mucus.
Accepted values
"intVal": 1 // Dry, little or no mucus
"intVal": 2 // Sticky
"intVal": 3 // Creamy
"intVal": 4 // Watery
"intVal": 5 // Clear and stretchy like egg white
cervical mucus amount (int—enum) (optional field)
How much cervical mucus the user observes.
Accepted values
"intVal": 1 // Light
"intVal": 2 // Medium
"intVal": 3 // Heavy
In this data type, each data point represents a report of the user's cervix. All
fields are optional, and can be used to add descriptions of the position,
dilation and firmness of the cervix.
This data type captures the user's heart rate in beats per minute. Because each
data point represents an instantaneous measure of heart rate, only the end time
should be set. This will be used as the timestamp for the reading.
This data type captures that user's height in meters. Because each data point
represents the height of the user at the time of the reading, only the end time
should be set. This will be used as the timestamp for the reading.
This data type captures a description of how heavy a user's menstrual flow was
(spotting, light, medium, or heavy). Each data point represents a description of
how heavy the user's menstrual bleeding was.
This data type captures the amount of oxygen circulating in the blood, measured
as a percentage of oxygen-saturated hemoglobin. Each data point represents a
single blood oxygen saturation reading at the time of measurement.
The optional fields also let you add details about any supplemental oxygen if
administered.
The blood oxygen saturation reading as a percentage.
Valid range: 0—100%
supplemental oxygen flow rate (float—L/min)
The rate additional oxygen is supplied to a user in liters per minute.
Set to zero if no supplemental oxygen is provided, and the user is
breathing room air only.
The blood oxygen saturation reading as a percentage.
FIELD_SUPPLEMENTAL_OXYGEN_FLOW_RATE (float—L/min)
The rate additional oxygen is supplied to a user in liters per minute.
Zero indicates no supplemental oxygen is provided, and the user is
breathing room air only.
This data type captures the user's length and type of sleep. Each data point
represents a time interval for a stage of sleep.
The start time of the data point represents the start of the sleep stage and
always needs to be included. The timestamp represents the end of the sleep
stage. Time intervals don't need to be continuous but shouldn't overlap.
Values representing different sleep stages and types.
Accepted values
"intVal": 0 // Unspecified or unknown if user is sleeping.
"intVal": 1 // Awake; user is awake.
"intVal": 2 // Sleeping; generic or non-granular sleep description.
"intVal": 3 // Out of bed; user gets out of bed in the middle of a sleep session.
"intVal": 4 // Light sleep; user is in a light sleep cycle.
"intVal": 5 // Deep sleep; user is in a deep sleep cycle.
"intVal": 6 // REM sleep; user is in a REM sleep cyle.
Android
Name
com.google.sleep.segment
Data type object
TYPE_SLEEP_SEGMENT
Fields (format—units)
FIELD_SLEEP_SEGMENT_TYPE (int—enum)
Values representing different sleep stages and types.
Accepted values
SLEEP_SEGMENT_TYPE_UNSPECIFIED // Unspecified or unknown if user is sleeping.
AWAKE // Awake; user is awake.
SLEEP // Sleeping; generic or non-granular sleep description.
OUT_OF_BED // Out of bed; user gets out of bed in the middle of a sleep session.
SLEEP_LIGHT // Light sleep; user is in a light sleep cycle.
SLEEP_DEEP // Deep sleep; user is in a deep sleep cycle.
SLEEP_REM // REM sleep; user is in a REM sleep cyle.
Vaginal spotting
This data type captures if a user experiences spotting (bleeding in between their
period). Each data point represents one instance of spotting, so each point
should have a timestamp and the occurrences field should be set to
one.
This data type captures that user's weight in kilograms. Because each data point
represents the weight of the user at the time of the reading, only the end time
should be set. This will be used as the timestamp for the reading.
[null,null,["Last updated 2023-11-20 UTC."],[[["This document details various health data types and their respective fields within Google Fit, including Blood Glucose, Blood Pressure, Body Temperature, and more."],["Each data type is presented with its REST API details and Android equivalent, along with a description of each field's format, units, and accepted values."],["Google Fit allows recording a variety of health metrics like heart rate, height, menstruation details, sleep stages, weight, and more."],["Data is accessible through the Google Fit API, but writing to health data types is currently unavailable pending policy changes."],["Apps accessing health data need to comply with Google's policies and have a verified consent screen to avoid limitations."]]],[]]