API Google Health cung cấp các loại dữ liệu để theo dõi chế độ dinh dưỡng và lượng nước của người dùng. Các loại này cho phép bạn ghi nhật ký bữa ăn, tham khảo thực phẩm từ cơ sở dữ liệu thực phẩm, theo dõi lượng chất dinh dưỡng và ghi nhật ký lượng chất lỏng nạp vào cơ thể.
Các loại dữ liệu được hỗ trợ
| Loại dữ liệu | Các thao tác có thể thực hiện |
Phạm vi |
|---|---|---|
|
Đồ ăn
|
list, get | .nutrition.readonly.nutrition.writeonly |
|
Đơn vị đo lường thực phẩm
dataType:
food-measurement-unitfilter parameter: food_measurement_unit
Loại bản ghi: Thực phẩm
Thiết bị tương thích
|
list, get | .nutrition.readonly.nutrition.writeonly |
|
Nhật ký về lượng nước uống
|
list, get, reconcile, rollup, dailyRollup, create, update, batchDelete | .nutrition.readonly.nutrition.writeonly |
|
Nhật ký dinh dưỡng
dataType:
nutrition-logfilter parameter: nutrition_log
Loại bản ghi: Phiên
Thiết bị tương thích
|
list, get, reconcile, rollup, dailyRollup, create, update, batchDelete | .nutrition.readonly.nutrition.writeonly |
Nhật ký dinh dưỡng
Nhật ký dinh dưỡng thể hiện thực phẩm mà người dùng đã ghi lại. Có hai cách để tạo nhật ký dinh dưỡng, tuỳ thuộc vào loại thực phẩm:
Thực phẩm đã xác định: Đặt trường
foodđể tham chiếu đến tài nguyên Thực phẩm hiện có. Các trườngnutrients,energy,energyFromFat,totalCarbohydrate,totalFatvàfoodDisplayNameđược điền tự động từ thực phẩm được tham chiếu. Đây là phương thức được ưu tiên.Thực phẩm không xác định: Đặt trường
foodDisplayNametheo cách thủ công và cung cấp giá trị chonutrients,energy,energyFromFat,totalCarbohydratevàtotalFat. Bạn không thể chỉnh sửa nhật ký dinh dưỡng được tạo từ thực phẩm ẩn danh sau khi tạo.
Tạo nhật ký dinh dưỡng với món ăn ẩn danh
Để tạo một mục nhập nhật ký dinh dưỡng, hãy gửi yêu cầu POST đến điểm cuối nutrition-log
dataPoints.
Yêu cầu
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
}
}
}Phản hồi
{
"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"
}
}
}Tạo nhật ký dinh dưỡng với món ăn đã xác định
Để ghi nhật ký một món ăn trong cơ sở dữ liệu thực phẩm, hãy đặt trường food để tham chiếu đến một tài nguyên Thực phẩm. API này tự động điền các trường thông tin dinh dưỡng.
Yêu cầu
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"
}
}
}Phản hồi
{
"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"
}
}
}Xoá nhật ký dinh dưỡng
Để xoá một hoặc nhiều mục nhập nhật ký dinh dưỡng, hãy gửi yêu cầu POST đến phương thức batchDelete kèm theo tên tài nguyên của các mục nhập cần xoá.
Yêu cầu:
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"
]
}Các trường trong nhật ký dinh dưỡng
Để xem danh sách đầy đủ các trường và nội dung mô tả, hãy xem NutritionLog.
Lượng năng lượng
Biểu thị số đo năng lượng, tính bằng kilocalories (kcal). Để biết thông tin chi tiết, hãy xem EnergyQuantity.
{
"kcal": 165
}
Số lượng trọng lượng
Biểu thị số đo trọng lượng, tính bằng gam. Để biết thông tin chi tiết, hãy xem WeightQuantity.
{
"grams": 27.3
}
Hàm lượng chất dinh dưỡng
Đại diện cho một chất dinh dưỡng cụ thể và lượng đo được của chất đó. Để biết thông tin chi tiết, hãy xem NutrientQuantity.
{
"nutrient": "PROTEIN",
"quantity": {
"grams": 31
}
}
Giá trị dinh dưỡng
Để biết danh sách đầy đủ các loại chất dinh dưỡng được hỗ trợ, hãy xem Nutrient.
Đang phân phối
Biểu thị thông tin về khẩu phần cho một mục nhập nhật ký dinh dưỡng. Để biết thông tin chi tiết, hãy xem Serving.
{
"amount": 1.5
}
Giá trị loại bữa ăn
Để biết danh sách đầy đủ các loại bữa ăn được hỗ trợ, hãy xem MealType.
Thực phẩm
Thực phẩm là một loại dữ liệu chỉ có thể đọc, đại diện cho một món ăn trong cơ sở dữ liệu về thực phẩm.
Sử dụng các thao tác list và get để duyệt xem các loại thực phẩm có sẵn và truy xuất thông tin dinh dưỡng của các loại thực phẩm đó.
Liệt kê thực phẩm
Để liệt kê các loại thực phẩm, hãy gửi yêu cầu GET đến điểm cuối food dataPoints:
GET https://health.googleapis.com/v4/users/me/dataTypes/food/dataPoints Authorization: Bearer access-token Accept: application/json
Đơn vị đo lường thực phẩm
Đơn vị đo lường thực phẩm là một loại dữ liệu chỉ có thể đọc, đại diện cho các đơn vị đo lường dùng cho khẩu phần ăn (ví dụ: "cốc", "thìa canh" hoặc "miếng").
Liệt kê các đơn vị đo lường hiện có
Cách liệt kê các đơn vị đo lường hiện có:
GET https://health.googleapis.com/v4/users/me/dataTypes/food-measurement-unit/dataPoints Authorization: Bearer access-token Accept: application/json
Nhật ký về lượng nước uống
Nhật ký về lượng nước uống thể hiện lượng chất lỏng mà người dùng đã ghi lại. Không giống như thực phẩm (tham chiếu đến cơ sở dữ liệu Thực phẩm và đo lường lượng chất dinh dưỡng hoặc năng lượng nạp vào), các mục về lượng nước theo dõi thể tích chất lỏng cụ thể được tiêu thụ trong một khoảng thời gian nhất định.
Tạo nhật ký về lượng nước uống
Để tạo một mục nhập nhật ký về lượng nước nạp vào cơ thể, hãy gửi yêu cầu POST đến điểm cuối hydration-log
dataPoints. Tất cả số lượng thể tích đều được chuyển đổi thành mililit ở định dạng API.
Yêu cầu
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"
}
}
}Phản hồi
{
"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"
}
}
}
}Cập nhật nhật ký về lượng nước uống
Để cập nhật mục nhập nhật ký về lượng nước uống, hãy gửi yêu cầu PATCH đến điểm cuối hydration-log
dataPoints kèm theo mã nhận dạng của điểm dữ liệu.
Yêu cầu
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
}
}
}Phản hồi
{
"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
}
}
}
}Xoá nhật ký về lượng nước
Để xoá một hoặc nhiều mục nhập nhật ký về lượng nước nạp vào cơ thể, hãy gửi yêu cầu POST đến phương thức batchDelete.
Yêu cầu
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"
]
}Phản hồi
{
"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"
}
}
}
]
}
}Các trường trong nhật ký về lượng nước uống
Để xem danh sách đầy đủ các trường và nội dung mô tả, hãy xem HydrationLog.
Số lượng
Biểu thị số đo thể tích, tính bằng mililit. Để biết thông tin chi tiết, hãy xem VolumeQuantity.
{
"milliliters": 250,
"userProvidedUnit": "MILLILITER"
}
Giá trị đơn vị thể tích
Để xem danh sách đầy đủ các đơn vị thể tích được hỗ trợ, hãy xem VolumeUnit. Các giá trị phổ biến bao gồm MILLILITER, LITER, CUP_US và FLUID_OUNCE_US.
Nguyên tắc
- Sử dụng món ăn đã xác định nếu có thể. API này tự động điền các trường thông tin dinh dưỡng, giúp giảm thiểu lỗi và đảm bảo tính nhất quán với cơ sở dữ liệu thực phẩm.
- Bạn không thể cập nhật nhật ký dinh dưỡng được tạo từ thực phẩm ẩn danh sau khi tạo. Nếu bạn cần chỉnh sửa nhật ký thực phẩm ẩn danh, hãy xoá nhật ký đó rồi tạo một nhật ký mới.
- Không giống như nhật ký dinh dưỡng thực phẩm ẩn danh, các mục nhập nhật ký cấp nước hoàn toàn có thể thay đổi và có thể được cập nhật sau khi tạo bằng yêu cầu
PATCH. - Tất cả lượng chất dinh dưỡng trong mảng
nutrientsđều sử dụng gam làm đơn vị đo lường. - Trường
energyvàenergyFromFatsử dụng kilocalories (kcal) làm đơn vị đo lường. - API này chuyển đổi và lưu trữ tất cả lượng nước uống vào theo đơn vị mililit. Trường
userProvidedUnitkhông bắt buộc trongVolumeQuantitychỉ được dùng để hiển thị dành cho người dùng phía máy khách. - Yêu cầu HTTP
DELETEtrực tiếp đến các điểm dữ liệuhydration-logriêng lẻ sẽ trả về404 Not Found. Sử dụng phương thứcbatchDeleteđể xoá các mục tài nguyên này. - Nhật ký về lượng nước uống sử dụng một khoảng thời gian ngắn, trong đó
startTimevàendTimethể hiện khoảng thời gian mà người dùng uống nước.