Restricted health data types

Google Fit has health data types for measurements related to managing general health (as opposed to fitness). Because health data can be sensitive, these data types have sensitive scopes. This means you need to apply for OAuth API verification for sensitive scopes on top of the standard authorization permissions for Android and REST to read and write to these data types.

Google will review your application and grant or deny verification. Users will review the scope requests and grant or deny access to these.

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.

REST

Namecom.google.blood_glucose
OAuth permission scopes
https://www.googleapis.com/auth/fitness.blood_glucose.read
https://www.googleapis.com/auth/fitness.blood_glucose.write
Fields (format—units)
blood glucose level (float—mmol/L)
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.
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.
specimen source (int—enum) (optional field)
Type of body fluid used to measure the blood glucose.

Android

Namecom.google.blood_glucose
Data type objectTYPE_BLOOD_GLUCOSE
Fields (format—units)
FIELD_BLOOD_GLUCOSE_LEVEL (float—mmol/L)
The blood glucose level or concentration in mmol/L where 1 mmol/L is 18 mg/dL.
FIELD_TEMPORAL_RELATION_TO_MEAL (int—enum) (optional field)
When the reading was taken compared to when the user ate.
FIELD_MEAL_TYPE (int—enum) (optional field)
What type of meal the user ate around when the reading was taken.
FIELD_TEMPORAL_RELATION_TO_SLEEP (int—enum) (optional field)
When the reading was taken compared to when the user slept.
FIELD_BLOOD_GLUCOSE_SPECIMEN_SOURCE (int—enum) (optional field)
Type of body fluid used to measure the blood glucose.

Blood pressure

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.

REST

Namecom.google.blood_pressure
OAuth permission scopes
https://www.googleapis.com/auth/fitness.blood_pressure.read
https://www.googleapis.com/auth/fitness.blood_pressure.write
Fields (format—units)
systolic (float—mmHg)
The systolic blood pressure measurement.
diastolic (float—mmHg)
The diastolic blood pressure measurement.
body position (int—enum) (optional field)
The user's body position when the measurement was taken.
measurement location (int—enum) (optional field)
Which arm and part of the arm the measurement was taken.

Android

Namecom.google.blood_pressure
Data type objectTYPE_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.
FIELD_BLOOD_PRESSURE_MEASUREMENT_LOCATION (int—enum) (optional field)
Which arm and part of the arm the measurement was taken.

Oxygen saturation

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.

REST

Namecom.google.oxygen_saturation
OAuth permission scopes
https://www.googleapis.com/auth/fitness.oxygen_saturation.read
https://www.googleapis.com/auth/fitness.oxygen_saturation.write
Fields (format—units)
oxygen saturation (float—percentage)
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.
oxygen therapy administration mode (int—enum) (optional field)
How oxygen therapy is administered.
Can be absent or 1 if administered by nasal canula.
oxygen saturation system (int—enum) (optional field)
Where oxygen saturation is measured.
Can be absent or 1 if measured in peripheral capillaries.
oxygen saturation measurement method (int—enum) (optional field)
How oxygen saturation is measured.
Can be absent or 1 if measured by pulse oximetry.

Android

Namecom.google.oxygen_saturation
Data type objectTYPE_OXYGEN_SATURATION
Fields (format—units)
FIELD_OXYGEN_SATURATION (float—percentage)
The blood oxygen saturation reading as a percentage.
FIELD_SUPPLEMENTAL_OXYGEN_FLOW_RATE (float—L/min) (optional field)
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.
FIELD_OXYGEN_THERAPY_ADMINISTRATION_MODE (int—enum) (optional field)
How oxygen therapy is administered.
Can be absent or 1 if administered by nasal canula.
FIELD_OXYGEN_SATURATION_SYSTEM (int—enum) (optional field)
Where oxygen saturation is measured.
Can be absent or 1 if measured in peripheral capillaries.
FIELD_OXYGEN_SATURATION_MEASUREMENT_METHOD (int—enum) (optional field)
How oxygen saturation is measured.
Can be absent or 1 if measured by pulse oximetry.

Body temperature

This data type captures the body temperature of a user. Each data point represents a single instantaneous body temperature measurement.

REST

Namecom.google.body.temperature
OAuth permission scopes
https://www.googleapis.com/auth/fitness.body_temperature.read
https://www.googleapis.com/auth/fitness.body_temperature.write
Fields (format—units)
body temperature (float—celsius)
Body temperature in degrees celsius.
measurement location (int—enum) (optional field)
Where on the user's body the temperature measurement was taken from.

Android

Namecom.google.body.temperature
Data type objectTYPE_BODY_TEMPERATURE
Fields (format—units)
FIELD_BODY_TEMPERATURE (float—celsius)
Body temperature in degrees celsius.
FIELD_BODY_TEMPERATURE_MEASUREMENT_LOCATION (int—enum) (optional field)
Where on the user's body the temperature measurement was taken from.

Menstruation

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.

REST

Namecom.google.menstruation
OAuth permission scopes
https://www.googleapis.com/auth/fitness.reproductive_health.read
https://www.googleapis.com/auth/fitness.reproductive_health.write
Fields (format—units)
menstrual flow (int—enum)
How heavy the user's period was.

Android

Namecom.google.menstruation
Data type objectTYPE_MENSTRUATION
Fields (format—units)
FIELD_MENSTRUAL_FLOW (int—enum)
How heavy the user's period was.

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.

REST

Namecom.google.vaginal_spotting
OAuth permission scopes
https://www.googleapis.com/auth/fitness.reproductive_health.read
https://www.googleapis.com/auth/fitness.reproductive_health.write
Fields (format—units)
occurrences (int—count)
Each instance of spotting. Set this field to 1.

Android

Namecom.google.vaginal_spotting
Data type objectTYPE_VAGINAL_SPOTTING
Fields (format—units)
FIELD_OCCURRENCES (int—count)
Each instance of spotting. Set this field to 1.

Getting permission to read and write health data

To read health data, follow these steps:

  1. Make sure your app complies with Google's API User Data Policy.
  2. Apply for your consent screen to be verified by Google.

If your app gets verified, it can read health data users have consented to being read.