La API de Google Health proporciona tipos de datos para hacer un seguimiento de la nutrición y la hidratación de un usuario. Estos tipos te permiten registrar comidas, consultar alimentos de la base de datos de alimentos, hacer un seguimiento de las cantidades de nutrientes y registrar la ingesta de líquidos.
Tipos de datos admitidos
| Tipo de datos | Operaciones de disponibles |
Alcance |
|---|---|---|
|
Comida
|
list, get | .nutrition.readonly.nutrition.writeonly |
|
Unidad de medida de alimentos
dataType:
food-measurement-unitfilter parameter: food_measurement_unit
Tipo de registro: Alimentos
Dispositivos compatibles
|
list, get | .nutrition.readonly.nutrition.writeonly |
|
Registro de hidratación
dataType:
hydration-logfilter parameter: hydration_log
Tipo de registro: Sesión
|
list, get, reconcile, rollup, dailyRollup, create, update, batchDelete | .nutrition.readonly.nutrition.writeonly |
|
Registro de nutrición
dataType:
nutrition-logfilter parameter: nutrition_log
Tipo de registro: Sesión
Dispositivos compatibles
|
list, get, reconcile, rollup, dailyRollup, create, update, batchDelete | .nutrition.readonly.nutrition.writeonly |
Registro de nutrición
Un registro de nutrición representa la comida que registra un usuario. Existen dos maneras de crear un registro de nutrición, según el tipo de alimento:
Comida identificada: Configura el campo
foodpara que haga referencia a un recurso Food existente. Los camposnutrients,energy,energyFromFat,totalCarbohydrate,totalFatyfoodDisplayNamese completan automáticamente a partir del alimento al que se hace referencia. Este es el método preferido.Alimento anónimo: Configura el campo
foodDisplayNamede forma manual y proporciona valores paranutrients,energy,energyFromFat,totalCarbohydrateytotalFat. Los registros de nutrición creados a partir de alimentos anónimos no se pueden editar después de su creación.
Crea un registro de nutrición con alimentos anónimos
Para crear una entrada de registro de nutrición, envía una solicitud POST al extremo nutrition-log
dataPoints.
Solicitud
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
}
}
}Respuesta
{
"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"
}
}
}Crea un registro de nutrición con los alimentos identificados
Para registrar un alimento de la base de datos de alimentos, configura el campo food para que haga referencia a un recurso de alimento. La API completa los campos nutricionales automáticamente.
Solicitud
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,
"foodMeasurementUnit": "users/me/dataTypes/food-measurement-unit/dataPoints/food-measurement-unit-id"
}
}
}Respuesta
{
"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-16T12:00:00Z",
"startUtcOffset": "0s",
"endTime": "2026-06-16T12:30:00Z",
"endUtcOffset": "0s",
"civilStartTime": {
"date": {
"year": 2026,
"month": 6,
"day": 16
},
"time": {
"hours": 12
}
},
"civilEndTime": {
"date": {
"year": 2026,
"month": 6,
"day": 16
},
"time": {
"hours": 12,
"minutes": 30
}
}
},
"energy": {
"kcal": 95
},
"energyFromFat": {
"kcal": 3
},
"totalCarbohydrate": {
"grams": 25
},
"totalFat": {
"grams": 0.3
},
"nutrients": [
{
"quantity": {
"grams": 4.4,
"userProvidedUnit": "GRAM"
},
"nutrient": "DIETARY_FIBER"
},
{
"quantity": {
"grams": 19,
"userProvidedUnit": "GRAM"
},
"nutrient": "SUGAR"
},
{
"quantity": {
"grams": 0.5,
"userProvidedUnit": "GRAM"
},
"nutrient": "PROTEIN"
}
],
"mealType": "LUNCH",
"serving": {
"amount": 1,
"foodMeasurementUnit": "users/me/dataTypes/food-measurement-unit/dataPoints/food-measurement-unit-id"
},
"food": "users/user-id/dataTypes/food/dataPoints/food-id",
"foodDisplayName": "Apple"
}
}
}Borra registros de nutrición
Para borrar una o más entradas del registro de nutrición, envía una solicitud POST al método batchDelete con los nombres de los recursos de las entradas que se quitarán.
Solicitud:
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"
]
}Campos de registro de nutrición
Para obtener una lista completa de campos y descripciones, consulta
NutritionLog.
Cantidad de energía
Representa una medición de energía, medida en kilocalorías (kcal). Para obtener más detalles, consulta EnergyQuantity.
{
"kcal": 165
}
Cantidad de peso
Representa una medición de peso, medida en gramos. Para obtener más información,
consulta WeightQuantity.
{
"grams": 27.3
}
Cantidad de nutrientes
Representa un nutriente específico y su cantidad medida. Para obtener más información, consulta NutrientQuantity.
{
"nutrient": "PROTEIN",
"quantity": {
"grams": 31
}
}
Valores de nutrientes
Para obtener una lista completa de los tipos de nutrientes admitidos, consulta Nutrient.
Entrega
Representa la información de la porción de una entrada de registro de nutrición. Para obtener más información, consulta Serving.
{
"amount": 1.5
}
Valores de tipos de comidas
Para obtener una lista completa de los tipos de comidas admitidos, consulta
MealType.
Comida
Food es un tipo de datos de solo lectura que representa un alimento en la base de datos de alimentos.
Usa las operaciones list y get para explorar los alimentos disponibles y recuperar su información nutricional.
Enumera alimentos
Para enumerar los alimentos, envía una solicitud GET al extremo food dataPoints:
GET https://health.googleapis.com/v4/users/me/dataTypes/food/dataPoints Authorization: Bearer access-token Accept: application/json
Unidad de medida de alimentos
La unidad de medida de alimentos es un tipo de datos de solo lectura que representa las unidades de medida que se usan para las porciones de alimentos (por ejemplo, "taza", "cucharada" o "pieza").
Enumera las unidades de medición disponibles
Para enumerar las unidades de medición disponibles, haz lo siguiente:
GET https://health.googleapis.com/v4/users/me/dataTypes/food-measurement-unit/dataPoints Authorization: Bearer access-token Accept: application/json
Registro de hidratación
Un registro de hidratación representa el líquido que registra un usuario. A diferencia de los alimentos, que hacen referencia a una base de datos de alimentos y miden la ingesta de nutrientes o energía, las entradas de hidratación hacen un seguimiento del volumen específico de líquido consumido durante un intervalo de tiempo determinado.
Crea un registro de hidratación
Para crear una entrada de registro de hidratación, envía una solicitud POST al extremo hydration-log
dataPoints. Todas las cantidades de volumen se convierten en mililitros en el formato de la API.
Solicitud
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"
}
}
}Respuesta
{
"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"
}
}
}
}Actualiza un registro de hidratación
Para actualizar una entrada de registro de hidratación, envía una solicitud PATCH al extremo hydration-log
dataPoints con el ID del dato.
Solicitud
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
}
}
}Respuesta
{
"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
}
}
}
}Borra los registros de hidratación
Para borrar una o más entradas del registro de hidratación, envía una solicitud POST al método batchDelete.
Solicitud
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"
]
}Respuesta
{
"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"
}
}
}
]
}
}Campos de registro de hidratación
Para obtener una lista completa de campos y descripciones, consulta
HydrationLog.
Cantidad de volumen
Representa una medición de volumen, en mililitros. Para obtener más información,
consulta VolumeQuantity.
{
"milliliters": 250,
"userProvidedUnit": "MILLILITER"
}
Valores de unidades de volumen
Para obtener una lista completa de las unidades de volumen admitidas, consulta
VolumeUnit. Entre los valores comunes, se incluyen
MILLILITER, LITER, CUP_US y FLUID_OUNCE_US.
Lineamientos
- Usa alimentos identificados cuando sea posible. La API completa los campos nutricionales automáticamente, lo que reduce los errores y garantiza la coherencia con la base de datos de alimentos.
- Los registros de nutrición creados a partir de alimentos anónimos no se pueden actualizar después de su creación. Si necesitas corregir un registro de alimentos anónimo, bórralo y crea uno nuevo.
- A diferencia de los registros anónimos de nutrición de alimentos, las entradas de registro de hidratación son completamente mutables y se pueden actualizar después de la creación con una solicitud
PATCH. - Todas las cantidades de nutrientes en el array
nutrientsusan gramos como unidad de medida. - Los campos
energyyenergyFromFatusan kilocalorías (kcal) como unidad de medida. - La API convierte y almacena todas las cantidades de hidratación en mililitros. El campo opcional
userProvidedUnitenVolumeQuantitysolo se usa para la visualización para el usuario del cliente. - Las solicitudes HTTP
DELETEdirectas a puntos de datoshydration-logindividuales devuelven404 Not Found. Usa el métodobatchDeletepara quitar estas entradas de recursos. - Los registros de hidratación usan un intervalo corto en el que
startTimeyendTimerepresentan el período en el que se consumió el líquido.