We're making some changes to the Google Fit APIs. Learn about how these changes might affect your app. Read our new policy.

Add Hydration Data

You can add hydration data to Google Fit by creating a data source and using the com.google.hydration data type. Each data point represents the volume, in liters, consumed by a user as part of a single drink. Use a float to specify volume. Note: The timestamp indicates when the drink was consumed. Because com.google.hydration is an instantaneous data type, the start and end time should be the same.

Creating a data source

Android

Use DataSource.Builder to create a new data source. For example, hydrationSource.

DataSource hydrationSource = new DataSource.Builder()
        .setDataType(DataType.TYPE_HYDRATION)
        .setStreamName("hydrationSource")
        ...
        .build();

REST

Call the REST API to create a new data source. For example, HydrationSource.

HTTP method

POST

Request URL

https://www.googleapis.com/fitness/v1/users/me/dataSources

Request body

{
  "dataStreamName": "HydrationSource",
  "type": "raw",
  "application": {
    "detailsUrl": "http://example.com",
    "name": "My Example App",
    "version": "1"
  },
  "dataType": {
    "name": "com.google.hydration",
    "field": [
     {
      "name": "volume",
      "format": "floatPoint",
      "optional": false
     }
    ]
   }
}

Response

If the data source is created successfully, the response is a 200 OK status code. The response body contains a JSON representation of the data source, including a datasource.dataStreamId property that you can use as the data source ID for subsequent requests.

CURL command

$ curl --header "Authorization: Bearer ya29.yourtokenvalue" --request POST \
  --header "Content-Type: application/json;encoding=utf-8" --data @hydration-ds.json \
  https://www.googleapis.com/fitness/v1/users/me/dataSources

Adding Hydration Data

Android

This example shows you how to create a new data point, and add hydration data for a 0.3 liter drink of water, using your data source.

DataPoint hydration =
    DataPoint.builder(hydrationSource);
        .setTimestamp(now.getMillis(), TimeUnit.MILLISECONDS)
        .setField(FIELD_VOLUME, 0.3)
        .build();

REST

This example shows you how to add hydration data using your data source.

HTTP method

PATCH

Request URL

https://www.googleapis.com/fitness/v1/users/me/dataSources/raw:com.google.hydration:407408718192:HydrationSource/datasets/1275753581000000000-1275753581000000000

Request body

{
 "minStartTimeNs": 1275753581000000000,
 "maxEndTimeNs": 1275753581000000000,
 "dataSourceId": "raw:com.google.hydration:407408718192:HydrationSource",
 "point": [
  {
   "startTimeNanos": 1275753581000000000,
   "endTimeNanos": 1275753581000000000,
   "dataTypeName": "com.google.hydration",
   "value": [
    {
     "fpVal": 0.3
    }
   ]
  }
 ]
}

Response

If your data point was created successfully, you'll get a 200 OK HTTP response status code. The response body contains a JSON representation of the data set.

CURL command

$ curl --header "Authorization: Bearer ya29.yourtokenvalue" --request PATCH \
  --header "Content-Type: application/json;encoding=utf-8" --data @hydration-data.json \
  https://www.googleapis.com/fitness/v1/users/me/dataSources/raw:com.google.hydration:407408718192:HydrationSource/datasets/1275753581000000000-1275753581000000000