Ernährungs- und Flüssigkeitszufuhr-Funktionen mit der Google Health API entwickeln

Die Google Health API bietet Datentypen zum Erfassen der Ernährung und Flüssigkeitszufuhr eines Nutzers. Mit diesen Typen kannst du Mahlzeiten protokollieren, Lebensmittel aus der Lebensmitteldatenbank referenzieren, Nährstoffmengen im Blick behalten und die Flüssigkeitsaufnahme protokollieren.

Unterstützte Datentypen

Tabelle: Google Health API-Datentypen für Ernährung
Datentyp Verfügbare
-Vorgänge
Bereich
Essen
dataType: food
filter parameter: food
Eintragstyp : Lebensmittel
list, get .nutrition.readonly
.nutrition.writeonly
Maßeinheit für Lebensmittel
dataType: food-measurement-unit
filter parameter: food_measurement_unit
Eintragstyp : Lebensmittel

Kompatible Geräte

list, get .nutrition.readonly
.nutrition.writeonly
Protokoll deiner Flüssigkeitszufuhr
dataType: hydration-log
filter parameter: hydration_log
Eintragstyp: Sitzung
list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .nutrition.readonly
.nutrition.writeonly
Ernährungsprotokoll
dataType: nutrition-log
filter parameter: nutrition_log
Eintragstyp: Sitzung

Kompatible Geräte

list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .nutrition.readonly
.nutrition.writeonly

Ernährungsprotokoll

Ein Ernährungsprotokoll stellt die von einem Nutzer protokollierten Lebensmittel dar. Es gibt zwei Möglichkeiten, ein Ernährungsprotokoll zu erstellen, je nach Art des Lebensmittels:

  1. Identifiziertes Lebensmittel: Setzen Sie das Feld food so, dass es auf eine vorhandene Food-Ressource verweist. Die Felder nutrients, energy, energyFromFat, totalCarbohydrate, totalFat und foodDisplayName werden automatisch aus dem referenzierten Lebensmittel ausgefüllt. Dies ist die bevorzugte Methode.

  2. Anonymes Lebensmittel: Legen Sie das Feld foodDisplayName manuell fest und geben Sie Werte für nutrients, energy, energyFromFat, totalCarbohydrate und totalFat an. Ernährungsprotokolle, die aus anonymen Lebensmitteln erstellt wurden, können nach dem Erstellen nicht mehr bearbeitet werden.

Erstelle ein Ernährungstagebuch mit anonymen Lebensmitteln

Wenn du einen Ernährungsprotokolleintrag erstellen möchtest, sende eine POST-Anfrage an den nutrition-log-Endpunkt dataPoints.

Anfrage

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
    }
  }
}

Antwort

{
  "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"
    }
  }
}

Ernährungstagebuch mit erkannten Lebensmitteln erstellen

Wenn du ein Lebensmittel aus der Lebensmitteldatenbank protokollieren möchtest, lege im Feld food einen Verweis auf eine Lebensmittelressource fest. Die API füllt die Felder für Nährwerte automatisch aus.

Anfrage

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"
    }
  }
}

Antwort

{
  "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"
    }
  }
}

Ernährungsprotokolle löschen

Wenn du einen oder mehrere Ernährungsprotokolleinträge löschen möchtest, sende eine POST-Anfrage an die Methode batchDelete mit den Ressourcennamen der zu entfernenden Einträge.

Anfrage

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"
  ]
}

Felder im Ernährungsprotokoll

Eine vollständige Liste der Felder und Beschreibungen finden Sie unter NutritionLog.

Energiemenge

Stellt eine Energiemessung in Kilokalorien (kcal) dar. Weitere Informationen finden Sie unter EnergyQuantity.

{
  "kcal": 165
}

Gewichtsmenge

Stellt eine Gewichtsmessung in Gramm dar. Weitere Informationen finden Sie unter WeightQuantity.

{
  "grams": 27.3
}

Nährstoffmenge

Stellt einen bestimmten Nährstoff und seine gemessene Menge dar. Weitere Informationen finden Sie unter NutrientQuantity.

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

Nährstoffwerte

Eine vollständige Liste der unterstützten Nährstofftypen findest du unter Nutrient.

Wird ausgeliefert

Stellt die Portionsinformationen für einen Ernährungsprotokoll-Logeintrag dar. Weitere Informationen finden Sie unter Serving.

{
  "amount": 1.5
}

Werte für Art der Mahlzeit

Eine vollständige Liste der unterstützten Mahlzeitentypen finden Sie unter MealType.

Essen

„Food“ ist ein schreibgeschützter Datentyp, der ein Nahrungsmittel in der Nahrungsmitteldatenbank darstellt. Verwenden Sie die Vorgänge list und get, um verfügbare Lebensmittel zu durchsuchen und ihre Nährwertinformationen abzurufen.

Lebensmittel auflisten

Wenn Sie Lebensmittel auflisten möchten, senden Sie eine GET-Anfrage an den food-Endpunkt dataPoints:

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

Maßeinheit für Lebensmittel

„Maßeinheit für Lebensmittel“ ist ein schreibgeschützter Datentyp, der Maßeinheiten für Lebensmittelportionen darstellt (z. B. „Tasse“, „Esslöffel“ oder „Stück“).

Verfügbare Maßeinheiten auflisten

So rufen Sie eine Liste der verfügbaren Maßeinheiten auf:

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

Flüssigkeitszufuhr-Protokoll

Ein Flüssigkeitszufuhr-Protokoll stellt die von einem Nutzer protokollierte Flüssigkeitszufuhr dar. Im Gegensatz zu Lebensmitteln, die auf eine Lebensmitteldatenbank verweisen und die Nährstoff- oder Energieaufnahme messen, wird bei Einträgen zur Flüssigkeitszufuhr die genaue Menge an Flüssigkeit erfasst, die in einem bestimmten Zeitraum konsumiert wurde.

Flüssigkeitszufuhr-Protokoll erstellen

Wenn du einen Logeintrag für die Flüssigkeitsaufnahme erstellen möchtest, sende eine POST-Anfrage an den hydration-log-Endpunkt dataPoints. Alle Volumenmengen werden im API-Format in Milliliter umgerechnet.

Anfrage

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"
    }
  }
}

Antwort

{
  "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"
      }
    }
  }
}

Eintrag zur Flüssigkeitszufuhr aktualisieren

Wenn du einen Eintrag im Flüssigkeitszufuhrprotokoll aktualisieren möchtest, sende eine PATCH-Anfrage an den hydration-log-Endpunkt dataPoints mit der ID des Datenpunkts.

Anfrage

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
    }
  }
}

Antwort

{
  "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
      }
    }
  }
}

Protokolle zur Flüssigkeitszufuhr löschen

Wenn du einen oder mehrere Einträge im Flüssigkeitszufuhrprotokoll löschen möchtest, sende eine POST-Anfrage an die Methode batchDelete.

Anfrage

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"
  ]
}

Antwort

{
  "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"
          }
        }
      }
    ]
  }
}

Felder für das Protokoll der Flüssigkeitszufuhr

Eine vollständige Liste der Felder und Beschreibungen finden Sie unter HydrationLog.

Anzahl der Volumes

Stellt eine Volumenmessung in Millilitern dar. Weitere Informationen finden Sie unter VolumeQuantity.

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

Volumeneinheitenwerte

Eine vollständige Liste der unterstützten Volume-Einheiten finden Sie unter VolumeUnit. Gängige Werte sind MILLILITER, LITER, CUP_US und FLUID_OUNCE_US.

Richtlinien

  • Verwende nach Möglichkeit erkannte Lebensmittel. Die API füllt die Nährwertfelder automatisch aus, wodurch Fehler reduziert und die Konsistenz mit der Lebensmitteldatenbank gewährleistet wird.
  • Ernährungsprotokolle, die aus anonymen Lebensmitteln erstellt wurden, können nach dem Erstellen nicht mehr aktualisiert werden. Wenn du ein anonymes Ernährungsprotokoll korrigieren musst, lösche es und erstelle ein neues.
  • Im Gegensatz zu anonymen Ernährungsprotokollen sind Einträge im Flüssigkeitsprotokoll vollständig veränderbar und können nach dem Erstellen mit einer PATCH-Anfrage aktualisiert werden.
  • Alle Nährstoffmengen im Array nutrients werden in Gramm angegeben.
  • In den Feldern energy und energyFromFat wird die Maßeinheit Kilokalorien (kcal) verwendet.
  • Die API konvertiert und speichert alle Flüssigkeitsmengen in Millilitern. Das optionale Feld userProvidedUnit in VolumeQuantity wird nur für die clientseitige Anzeige für Nutzer verwendet.
  • Direkte HTTP-DELETE-Anfragen an einzelne hydration-log-Datenpunkte geben 404 Not Found zurück. Verwenden Sie die Methode batchDelete, um diese Ressourceneinträge zu entfernen.
  • Für Flüssigkeitsaufnahmeprotokolle wird ein kurzes Intervall verwendet, wobei startTime und endTime den Zeitraum darstellen, in dem die Flüssigkeit aufgenommen wurde.