Разрабатывайте приложения для управления питанием и гидратацией с помощью Google Health API.

API Google Health предоставляет типы данных для отслеживания питания и потребления жидкости пользователем. Эти типы позволяют регистрировать приемы пищи, ссылаться на продукты из базы данных продуктов, отслеживать количество питательных веществ и регистрировать потребление жидкости.

Поддерживаемые типы данных

Таблица: Типы данных о питании в Google Health API
Тип данных
dataType
параметр filter
Доступный
операции
Объем
Еда
food
food
Тип записи: Еда
список, получить .nutrition.readonly
.nutrition.writeonly
Измерительный прибор для пищевых продуктов
food-measurement-unit
food_measurement_unit
Тип записи: Еда

Совместимые устройства

список, получить .nutrition.readonly
.nutrition.writeonly
Журнал учета потребления жидкости
hydration-log
hydration_log
Тип записи: Сессия
список, получить, согласовать, свернуть, ежедневный свертывание, создать, обновить, пакетное удаление .nutrition.readonly
.nutrition.writeonly
Журнал учета пищевых продуктов
nutrition-log
nutrition_log
Тип записи: Образец

Совместимые устройства

список, получить, согласовать, свернуть, ежедневный свертывание, создать, обновить, пакетное удаление .nutrition.readonly
.nutrition.writeonly

Журнал учета пищевых продуктов

Журнал пищевой ценности — это список продуктов, которые пользователь зарегистрировал. Существует два способа создания журнала пищевой ценности, в зависимости от типа продукта:

  1. Идентифицированный продукт : Укажите в поле food ссылку на существующий ресурс «Продукт питания» . Поля nutrients , « energy , energyFromFat , totalCarbohydrate , totalFat и foodDisplayName заполняются автоматически на основе указанного продукта. Это предпочтительный метод.

  2. Анонимные продукты : Задайте поле foodDisplayName вручную и укажите значения для nutrients , energy , energyFromFat , totalCarbohydrate и totalFat . Журналы пищевой ценности, созданные на основе анонимных продуктов, нельзя редактировать после создания.

Создайте дневник питания с анонимными продуктами.

Для создания записи в журнале питания отправьте POST запрос на конечную точку nutrition-log dataPoints .

Запрос

POST https://health.googleapis.com/v4/users/me/dataTypes/nutrition-log/dataPoints
Authorization: Bearer access-token
Content-Type: application/json

{
  "nutritionLog": {
    "interval": {
      "startTime": "2026-06-16T18:00:00Z",
      "endTime": "2026-06-16T18:30:00Z"
    },
    "foodDisplayName": "Grilled Chicken Breast",
    "mealType": "DINNER",
    "energy": {
      "kcal": 165
    },
    "totalCarbohydrate": {
      "grams": 0
    },
    "totalFat": {
      "grams": 3.6
    },
    "nutrients": [
      {
        "nutrient": "PROTEIN",
        "quantity": {
          "grams": 31
        }
      },
      {
        "nutrient": "SODIUM",
        "quantity": {
          "grams": 0.074
        }
      }
    ],
    "serving": {
      "amount": 1.0
    }
  }
}

Ответ

{
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.devicesandservices.health.v4.DataPoint",
    "name": "users/user-id/dataTypes/nutrition-log/dataPoints/data-point-id",
    "dataSource": {
      "recordingMethod": "UNKNOWN",
      "application": {
        "googleWebClientId": "google-web-client-id"
      },
      "platform": "GOOGLE_WEB_API"
    },
    "nutritionLog": {
      "interval": {
        "startTime": "2026-06-16T18:00:00Z",
        "startUtcOffset": "0s",
        "endTime": "2026-06-16T18:30:00Z",
        "endUtcOffset": "0s",
        "civilStartTime": {
          "date": {
            "year": 2026,
            "month": 6,
            "day": 16
          },
          "time": {
            "hours": 18
          }
        },
        "civilEndTime": {
          "date": {
            "year": 2026,
            "month": 6,
            "day": 16
          },
          "time": {
            "hours": 18,
            "minutes": 30
          }
        }
      },
      "energy": {
        "kcal": 165
      },
      "totalCarbohydrate": {
        "grams": 0
      },
      "totalFat": {
        "grams": 3.6
      },
      "nutrients": [
        {
          "quantity": {
            "grams": 31
          },
          "nutrient": "PROTEIN"
        },
        {
          "quantity": {
            "grams": 0.074
          },
          "nutrient": "SODIUM"
        }
      ],
      "mealType": "DINNER",
      "serving": {
        "amount": 1
      },
      "foodDisplayName": "Grilled Chicken Breast"
    }
  }
}

Создайте дневник питания с указанием конкретных продуктов.

Чтобы добавить продукт питания в базу данных продуктов, укажите в поле food ссылку на ресурс «Продукт питания». API автоматически заполняет поля с информацией о пищевой ценности.

Запрос:

POST https://health.googleapis.com/v4/users/me/dataTypes/nutrition-log/dataPoints
Authorization: Bearer access-token
Content-Type: application/json

{
  "nutritionLog": {
    "interval": {
      "startTime": "2026-06-16T12:00:00Z",
      "endTime": "2026-06-16T12:30:00Z"
    },
    "food": "users/me/dataTypes/food/dataPoints/food-id",
    "mealType": "LUNCH",
    "serving": {
      "amount": 1.0
    }
  }
}

Удалить журналы учета питания

Для удаления одной или нескольких записей в журнале питания отправьте POST запрос методу batchDelete , указав имена ресурсов удаляемых записей.

Запрос:

POST https://health.googleapis.com/v4/users/me/dataTypes/nutrition-log/dataPoints:batchDelete
Authorization: Bearer access-token
Content-Type: application/json

{
  "names": [
    "users/me/dataTypes/nutrition-log/dataPoints/data-point-id"
  ]
}

Поля журнала питания

Полный список полей и их описаний см. в справочной документации .

EnergyQuantity

Представляет собой показатель энергетической ценности, измеряемый в килокалориях ( kcal ). Подробнее см. EnergyQuantity .

{
  "kcal": 165
}

ВесКоличество

Обозначает величину веса, измеренную в граммах. Подробнее см. WeightQuantity .

{
  "grams": 27.3
}

Количество питательных веществ

Обозначает конкретное питательное вещество и его измеренное количество. Подробнее см. в разделе «Количество питательных веществ» .

{
  "nutrient": "PROTEIN",
  "quantity": {
    "grams": 31
  }
}

Пищевая ценность

Полный список поддерживаемых типов питательных веществ см. в разделе «Питательные вещества» .

Подача

Представляет собой информацию о порции для записи в журнале учета пищевой ценности. Подробнее см. раздел «Порция» .

{
  "amount": 1.5
}

Значения MealType

Полный список поддерживаемых типов блюд см. в разделе MealType .

Еда

Тип данных «Еда» — это тип данных только для чтения, представляющий собой продукт питания в базе данных продуктов питания. Используйте операции list и get данных, чтобы просматривать доступные продукты и получать информацию об их пищевой ценности.

Список продуктов

Чтобы получить список продуктов, отправьте GET запрос к конечной точке данных food dataPoints :

GET https://health.googleapis.com/v4/users/me/dataTypes/food/dataPoints
Authorization: Bearer access-token
Accept: application/json

Измерительный прибор для пищевых продуктов

Единица измерения пищевых продуктов — это тип данных только для чтения, представляющий единицы измерения, используемые для порций продуктов питания (например, «чашка», «столовая ложка» или «кусок»).

Список доступных единиц измерения

Чтобы отобразить список доступных единиц измерения:

GET https://health.googleapis.com/v4/users/me/dataTypes/food-measurement-unit/dataPoints
Authorization: Bearer access-token
Accept: application/json

Журнал учета потребления жидкости

Журнал учета потребления жидкости представляет собой данные о количестве жидкости, потребленной пользователем. В отличие от продуктов питания, которые ссылаются на базу данных продуктов и измеряют потребление питательных веществ или энергии, записи о потреблении жидкости отслеживают конкретный объем жидкости, потребленной за определенный интервал времени.

Заведите дневник потребления воды.

Для создания записи в журнале потребления воды отправьте POST запрос на конечную точку dataPoints hydration-log . Все объемы преобразуются в миллилитры в формате API.

Запрос

POST https://health.googleapis.com/v4/users/me/dataTypes/hydration-log/dataPoints
Authorization: Bearer access-token
Content-Type: application/json

{
  "hydrationLog": {
    "interval": {
      "startTime": "2026-06-16T14:00:00Z",
      "endTime": "2026-06-16T14:00:01Z"
    },
    "amountConsumed": {
      "milliliters": 500,
      "userProvidedUnit": "FLUID_OUNCE_US"
    }
  }
}

Ответ

{
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.devicesandservices.health.v4.DataPoint",
    "name": "users/user-id/dataTypes/hydration-log/dataPoints/data-point-id",
    "dataSource": {
      "recordingMethod": "UNKNOWN",
      "application": {
        "googleWebClientId": "google-web-client-id"
      },
      "platform": "GOOGLE_WEB_API"
    },
    "hydrationLog": {
      "interval": {
        "startTime": "2026-06-16T14:00:00Z",
        "startUtcOffset": "0s",
        "endTime": "2026-06-16T14:00:01Z",
        "endUtcOffset": "0s",
        "civilStartTime": {
          "date": {
            "year": 2026,
            "month": 6,
            "day": 16
          },
          "time": {
            "hours": 14
          }
        },
        "civilEndTime": {
          "date": {
            "year": 2026,
            "month": 6,
            "day": 16
          },
          "time": {
            "hours": 14,
            "seconds": 1
          }
        }
      },
      "amountConsumed": {
        "milliliters": 500,
        "userProvidedUnit": "FLUID_OUNCE_US"
      }
    }
  }
}

Обновите журнал учета потребления воды.

Для обновления записи в журнале гидратации отправьте PATCH запрос на конечную точку hydration-log dataPoints , указав идентификатор точки данных.

Запрос

PATCH https://health.googleapis.com/v4/users/me/dataTypes/hydration-log/dataPoints/data-point-id
Authorization: Bearer access-token
Content-Type: application/json

{
  "hydrationLog": {
    "interval": {
      "startTime": "2026-06-16T10:00:00Z",
      "endTime": "2026-06-16T10:00:01Z"
    },
    "amountConsumed": {
      "milliliters": 500
    }
  }
}

Ответ

{
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.devicesandservices.health.v4.DataPoint",
    "name": "users/user-id/dataTypes/hydration-log/dataPoints/data-point-id",
    "dataSource": {
      "recordingMethod": "UNKNOWN",
      "application": {
        "googleWebClientId": "google-web-client-id"
      },
      "platform": "GOOGLE_WEB_API"
    },
    "hydrationLog": {
      "interval": {
        "startTime": "2026-06-16T10:00:00Z",
        "startUtcOffset": "0s",
        "endTime": "2026-06-16T10:00:01Z",
        "endUtcOffset": "0s",
        "civilStartTime": {
          "date": {
            "year": 2026,
            "month": 6,
            "day": 16
          },
          "time": {
            "hours": 10
          }
        },
        "civilEndTime": {
          "date": {
            "year": 2026,
            "month": 6,
            "day": 16
          },
          "time": {
            "hours": 10,
            "seconds": 1
          }
        }
      },
      "amountConsumed": {
        "milliliters": 500
      }
    }
  }
}

Удалить записи о потреблении воды

Для удаления одной или нескольких записей в журнале гидратации отправьте POST запрос методу batchDelete .

Запрос

POST https://health.googleapis.com/v4/users/me/dataTypes/hydration-log/dataPoints:batchDelete
Authorization: Bearer access-token
Content-Type: application/json

{
  "names": [
    "users/me/dataTypes/hydration-log/dataPoints/data-point-id"
  ]
}

Ответ

{
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.devicesandservices.health.v4.BatchDeleteDataPointsResponse",
    "dataPoints": [
      {
        "name": "users/user-id/dataTypes/hydration-log/dataPoints/data-point-id",
        "dataSource": {
          "recordingMethod": "UNKNOWN",
          "application": {
            "googleWebClientId": "google-web-client-id"
          },
          "platform": "GOOGLE_WEB_API"
        },
        "hydrationLog": {
          "interval": {
            "startTime": "2026-06-16T14:00:00Z",
            "startUtcOffset": "0s",
            "endTime": "2026-06-16T14:00:01Z",
            "endUtcOffset": "0s",
            "civilStartTime": {
              "date": {
                "year": 2026,
                "month": 6,
                "day": 16
              },
              "time": {
                "hours": 14
              }
            },
            "civilEndTime": {
              "date": {
                "year": 2026,
                "month": 6,
                "day": 16
              },
              "time": {
                "hours": 14,
                "seconds": 1
              }
            }
          },
          "amountConsumed": {
            "milliliters": 500,
            "userProvidedUnit": "FLUID_OUNCE_US"
          }
        }
      }
    ]
  }
}

Поля HydrationLog

Полный список полей и их описаний см. в справочной документации .

VolumeQuantity

Обозначает объем в миллилитрах. Подробнее см. VolumeQuantity .

{
  "milliliters": 250,
  "userProvidedUnit": "MILLILITER"
}

Значения VolumeUnit

Полный список поддерживаемых единиц измерения объема см. в разделе VolumeUnit . К распространенным значениям относятся MILLILITER , LITER , CUP_US и FLUID_OUNCE_US .

Руководящие принципы

  • По возможности используйте идентифицированные продукты. API автоматически заполняет поля с информацией о пищевой ценности, что снижает количество ошибок и обеспечивает согласованность с базой данных продуктов питания.
  • Журналы учета питания, созданные на основе анонимных данных о продуктах, нельзя обновить после создания. Если вам нужно исправить анонимный журнал учета питания, удалите его и создайте новый.
  • В отличие от анонимных журналов учета пищевой ценности продуктов, записи об уровне гидратации полностью изменяемы и могут быть обновлены после создания с помощью запроса PATCH .
  • В таблице nutrients все значения указаны в граммах.
  • В полях energy и energyFromFat в качестве единицы измерения используются килокалории ( kcal ).
  • API преобразует и сохраняет все объемы гидратации в миллилитрах. Необязательное поле userProvidedUnit в VolumeQuantity используется только для отображения информации на стороне клиента.
  • Прямые HTTP-запросы DELETE к отдельным точкам данных hydration-log возвращают ошибку 404 Not Found . Используйте метод batchDelete для удаления этих записей ресурсов.
  • В журналах учета потребления жидкости используется короткий интервал, где startTime и endTime обозначают период времени, в течение которого была потреблена жидкость.