L'API Google Health fournit des types de données permettant de suivre la nutrition et l'hydratation d'un utilisateur. Ces types vous permettent d'enregistrer des repas, de référencer des aliments de la base de données d'aliments, de suivre les quantités de nutriments et d'enregistrer l'apport en liquides.
Types de données acceptés
| Type de données | Opérations disponibles |
Champ d'application |
|---|---|---|
|
Nourriture
|
list, get | .nutrition.readonly.nutrition.writeonly |
|
Unité de mesure des aliments
dataType :
food-measurement-unitfilter parameter : food_measurement_unit
Type d'enregistrement : Alimentation
Appareils compatibles
|
list, get | .nutrition.readonly.nutrition.writeonly |
|
Journal d'hydratation
dataType :
hydration-logfilter parameter : hydration_log
Type d'enregistrement : Session
|
list, get, reconcile, rollup, dailyRollup, create, update, batchDelete | .nutrition.readonly.nutrition.writeonly |
|
Journal de nutrition
dataType :
nutrition-logfilter parameter : nutrition_log
Type d'enregistrement : Session
Appareils compatibles
|
list, get, reconcile, rollup, dailyRollup, create, update, batchDelete | .nutrition.readonly.nutrition.writeonly |
Journal de nutrition
Un journal de nutrition représente les aliments enregistrés par un utilisateur. Il existe deux façons de créer un journal de nutrition, selon le type d'aliment :
Aliment identifié : définissez le champ
foodpour référencer une ressource Food existante. Les champsnutrients,energy,energyFromFat,totalCarbohydrate,totalFatetfoodDisplayNamesont renseignés automatiquement à partir de l'aliment référencé. (méthode recommandée)Aliment anonyme : définissez manuellement le champ
foodDisplayNameet fournissez des valeurs pournutrients,energy,energyFromFat,totalCarbohydrateettotalFat. Les journaux de nutrition créés à partir d'aliments anonymes ne sont pas modifiables après leur création.
Créer un journal de nutrition avec un aliment anonyme
Pour créer une entrée de journal de nutrition, envoyez une requête POST au point de terminaison nutrition-log
dataPoints.
Requête
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
}
}
}Réponse
{
"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"
}
}
}Créer un journal de nutrition avec des aliments identifiés
Pour consigner un aliment à partir de la base de données d'aliments, définissez le champ food de sorte qu'il référence une ressource Food. L'API remplit automatiquement les champs nutritionnels.
Requête
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"
}
}
}Réponse
{
"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"
}
}
}Supprimer des aliments enregistrés
Pour supprimer une ou plusieurs entrées du journal de nutrition, envoyez une requête POST à la méthode batchDelete avec les noms de ressources des entrées à supprimer.
Requête :
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"
]
}Champs du journal de nutrition
Pour obtenir la liste complète des champs et des descriptions, consultez NutritionLog.
Quantité d'énergie
Représente une mesure d'énergie, mesurée en kilocalories (kcal). Pour en savoir plus, consultez EnergyQuantity.
{
"kcal": 165
}
Quantité de poids
Représente une mesure de poids, exprimée en grammes. Pour en savoir plus, consultez WeightQuantity.
{
"grams": 27.3
}
Quantité de nutriments
Représente un nutriment spécifique et sa quantité mesurée. Pour plus d'informations, consultez NutrientQuantity.
{
"nutrient": "PROTEIN",
"quantity": {
"grams": 31
}
}
Valeurs nutritionnelles
Pour obtenir la liste complète des types de nutriments compatibles, consultez Nutrient.
Mise en service
Représente les informations sur la portion pour une entrée de journal de nutrition. Pour plus d'informations, consultez Serving.
{
"amount": 1.5
}
Valeurs du type de repas
Pour obtenir la liste complète des types de repas acceptés, consultez MealType.
Nourriture
"Alimentation" est un type de données en lecture seule qui représente un aliment dans la base de données d'aliments.
Utilisez les opérations list et get pour parcourir les aliments disponibles et récupérer leurs informations nutritionnelles.
Lister les aliments
Pour lister les aliments, envoyez une requête GET au point de terminaison food dataPoints :
GET https://health.googleapis.com/v4/users/me/dataTypes/food/dataPoints Authorization: Bearer access-token Accept: application/json
Unité de mesure des aliments
L'unité de mesure des aliments est un type de données en lecture seule qui représente les unités de mesure utilisées pour les portions d'aliments (par exemple, "tasse", "cuillère à soupe" ou "morceau").
Lister les unités de mesure disponibles
Pour lister les unités de mesure disponibles :
GET https://health.googleapis.com/v4/users/me/dataTypes/food-measurement-unit/dataPoints Authorization: Bearer access-token Accept: application/json
Journal d'hydratation
Un journal d'hydratation représente les liquides enregistrés par un utilisateur. Contrairement aux aliments, qui font référence à une base de données d'aliments et mesurent l'apport en nutriments ou en énergie, les entrées d'hydratation suivent le volume spécifique de liquide consommé sur un intervalle de temps donné.
Créer un journal d'hydratation
Pour créer une entrée de journal d'hydratation, envoyez une requête POST au point de terminaison hydration-log
dataPoints. Toutes les quantités de volume sont converties en millilitres au format de l'API.
Requête
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"
}
}
}Réponse
{
"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"
}
}
}
}Mettre à jour un journal d'hydratation
Pour mettre à jour une entrée de journal d'hydratation, envoyez une requête PATCH au point de terminaison hydration-log
dataPoints avec l'ID du point de données.
Requête
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
}
}
}Réponse
{
"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
}
}
}
}Supprimer les enregistrements d'hydratation
Pour supprimer une ou plusieurs entrées de journal d'hydratation, envoyez une requête POST à la méthode batchDelete.
Requête
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"
]
}Réponse
{
"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"
}
}
}
]
}
}Champs du journal d'hydratation
Pour obtenir la liste complète des champs et des descriptions, consultez HydrationLog.
Quantité de volume
Représente une mesure de volume, en millilitres. Pour en savoir plus, consultez VolumeQuantity.
{
"milliliters": 250,
"userProvidedUnit": "MILLILITER"
}
Valeurs des unités de volume
Pour obtenir la liste complète des unités de volume acceptées, consultez VolumeUnit. Les valeurs courantes incluent MILLILITER, LITER, CUP_US et FLUID_OUNCE_US.
Consignes
- Utilisez des aliments identifiés lorsque cela est possible. L'API remplit automatiquement les champs nutritionnels, ce qui réduit les erreurs et garantit la cohérence avec la base de données des aliments.
- Les journaux de nutrition créés à partir d'aliments anonymes ne peuvent pas être mis à jour après leur création. Si vous devez corriger un aliment enregistré de manière anonyme, supprimez-le et créez-en un autre.
- Contrairement aux entrées de journal anonymes sur la nutrition, les entrées de journal sur l'hydratation sont entièrement modifiables et peuvent être mises à jour après leur création à l'aide d'une requête
PATCH. - Toutes les quantités de nutriments du tableau
nutrientssont exprimées en grammes. - Les champs
energyetenergyFromFatutilisent les kilocalories (kcal) comme unité de mesure. - L'API convertit et stocke toutes les quantités d'hydratation en millilitres. Le champ facultatif
userProvidedUnitdansVolumeQuantityn'est utilisé que pour l'affichage côté client visible par l'utilisateur. - Les requêtes HTTP
DELETEdirectes vers des points de donnéeshydration-logindividuels renvoient404 Not Found. Utilisez la méthodebatchDeletepour supprimer ces entrées de ressources. - Les journaux d'hydratation utilisent un intervalle court où
startTimeetendTimereprésentent la période pendant laquelle le liquide a été consommé.