Google Health API는 심박수, 산소 포화도, 혈당, 심부 온도, 일일 수면 온도 파생과 같은 사용자 vitals 및 생리적 건강 측정항목을 추적합니다.
애플리케이션에서 vitals 데이터를 읽고 사용자 승인을 요청하여 사용자에게 최상의 환경을 제공하는 방법을 알아보세요.
지원되는 데이터 유형
API는 활력 징후 및 건강 수치를 추적하기 위해 다음 데이터 유형을 지원합니다.
데이터 유형dataType
filter 매개변수 |
사용 가능한 작업 |
범위 |
|---|---|---|
|
혈당
|
list, get, reconcile, rollup, dailyRollup | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
핵심 체온
|
list, get, reconcile, rollup, dailyRollup | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
일일 심박 변이도
daily-heart-rate-variabilitydaily_heart_rate_variability
기록 유형: 일일
호환 기기
|
목록, 조정 | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
일일 심박수 구간
|
목록, 조정 | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
일일 산소 포화도
daily-oxygen-saturationdaily_oxygen_saturation
기록 유형: 일일
호환 기기
|
목록, 조정 | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
일일 호흡수
daily-respiratory-ratedaily_respiratory_rate
기록 유형: 일일
호환 기기
|
목록, 조정 | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
일일 안정 시 심박수
daily-resting-heart-ratedaily_resting_heart_rate
기록 유형: 일일
호환 기기
|
목록, 조정 | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
일일 수면 온도 파생
daily-sleep-temperature-derivationsdaily_sleep_temperature_derivations
기록 유형: 일일
호환 기기
|
목록, 조정 | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
심전도 (ECG)
electrocardiogramelectrocardiogram
레코드 유형: 세션
호환 기기
|
list | .ecg.readonly |
심박수
heart-rateheart_rate
레코드 유형: 샘플
호환 기기
|
list, reconcile, rollup, dailyRollup | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
심박 변이도
heart-rate-variabilityheart_rate_variability
레코드 유형: 샘플
호환 기기
|
목록, 조정 | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
불규칙한 심장 리듬 알림
|
list | .irn.readonly |
산소 포화도
oxygen-saturationoxygen_saturation
레코드 유형: 샘플
호환 기기
|
목록, 조정 | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
호흡수 수면 요약
respiratory-rate-sleep-summaryrespiratory_rate_sleep_summary
레코드 유형: 샘플
호환 기기
|
목록, 조정 | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
읽기 전용 요구사항
생리적 활력 징후 데이터 유형은 Fitbit 모바일 또는 웹 앱의 기기 동기화 또는 수동 로그 항목으로 채워지며 REST API를 통해 읽기 전용입니다 (Google Health API 엔드포인트를 통해 직접 작성하거나 수정할 수 없음).
다음 섹션에서는 활력 징후 데이터의 기술 세부정보와 REST 표현 형식을 제공합니다.
심박수 및 심장 건강
이 API는 심박수 측정항목에 대한 자세한 일중 측정값과 일일 요약 롤업을 제공합니다.
- 심박수 (
heart-rate):beatsPerMinute개수와 사용자의motionContext(예:SEDENTARY또는ACTIVE),sensorLocation(예:WRIST또는CHEST)이 포함된 특정 시점의 심박수 측정값입니다. - 일일 안정 시 심박수 (
daily-resting-heart-rate): 일일 기준 안정 시 심박수 값입니다. - 심박 변이도 (
heart-rate-variability및daily-heart-rate-variability): HRV를 나타내기 위해 연속된 차이의 제곱근 평균 (rmssd)을 밀리초 단위로 기록합니다.
REST 표현 예시
심박수 측정을 쿼리하려면 list 엔드포인트에 GET 요청을 보냅니다.
다음 예시에서는 반환된 목록의 단일 heart-rate 데이터 포인트를 보여줍니다.
요청
GET https://health.googleapis.com/v4/users/me/dataTypes/heart-rate/dataPoints?startTime=2026-04-20T08:00:00Z&endTime=2026-04-20T08:05:00Z Authorization: Bearer access-token Accept: application/json
응답
{
"dataPoints": [
{
"name": "users/me/dataTypes/heart-rate/dataPoints/hr-123456789",
"dataSource": {
"recordingMethod": "ACTIVELY_MEASURED"
},
"heartRate": {
"sampleTime": {
"physicalTime": "2026-04-20T08:00:00Z",
"utcOffset": "0s"
},
"beatsPerMinute": "72",
"metadata": {
"motionContext": "SEDENTARY",
"sensorLocation": "WRIST"
}
}
}
]
}혈당
blood-glucose 데이터 유형은 사용자의 혈당 수치를 나타냅니다. 혈당 포인트는 밀리그램/데시리터 (mg/dL), 식사 또는 타이밍 컨텍스트, 검체 정보를 보유합니다.
REST 표현 예시
혈당 측정을 쿼리하려면 list 엔드포인트에 GET 요청을 보냅니다. 다음 예시에서는 반환된 목록의 단일 blood-glucose 데이터 포인트를 보여줍니다.
요청
GET https://health.googleapis.com/v4/users/me/dataTypes/blood-glucose/dataPoints?startTime=2026-04-20T08:00:00Z&endTime=2026-04-20T09:00:00Z Authorization: Bearer access-token Accept: application/json
응답
{
"dataPoints": [
{
"name": "users/me/dataTypes/blood-glucose/dataPoints/bg-987654321",
"dataSource": {
"recordingMethod": "MANUALLY_ENTERED"
},
"bloodGlucose": {
"sampleTime": {
"physicalTime": "2026-04-20T08:30:00Z",
"utcOffset": "-25200s"
},
"bloodGlucoseMilligramsPerDeciliter": 95.0,
"measurementSource": "SELF_MONITORING_BLOOD_GLUCOSE",
"mealType": "BREAKFAST",
"measurementTiming": "AFTER_MEAL",
"specimen": "CAPILLARY_BLOOD",
"notes": "Post-breakfast fingerstick reading"
}
}
]
}혈중 산소 포화도(SpO2)
API는 oxygen-saturation (일중 샘플 값) 및 daily-oxygen-saturation (일일 요약 통계)을 사용하여 산소 수치를 추적합니다. 농도(%)는 0~100 사이의 숫자로 표현됩니다.
REST 표현 예시
산소 포화도 측정을 쿼리하려면 list 엔드포인트에 GET 요청을 보냅니다. 다음 예시에서는 반환된 목록의 단일 oxygen-saturation 데이터 포인트를 보여줍니다.
요청
GET https://health.googleapis.com/v4/users/me/dataTypes/oxygen-saturation/dataPoints?startTime=2026-04-20T03:00:00Z&endTime=2026-04-20T03:05:00Z Authorization: Bearer access-token Accept: application/json
응답
{
"dataPoints": [
{
"name": "users/me/dataTypes/oxygen-saturation/dataPoints/spo2-555555",
"dataSource": {
"recordingMethod": "ACTIVELY_MEASURED"
},
"oxygenSaturation": {
"sampleTime": {
"physicalTime": "2026-04-20T03:00:00Z",
"utcOffset": "0s"
},
"percentage": 98.2
}
}
]
}온도
온도 모니터링에는 심부 체온 측정항목과 밤사이 수면 피부 온도 추세가 포함됩니다.
- 심부 체온 (
core-body-temperature): 특정 측정 부위 (예:ARMPIT,EAR,FOREHEAD)와 함께 내부 장기 온도를 섭씨로 기록합니다. - 수면 온도 파생 (
daily-sleep-temperature-derivations): 밤새 기록된 고주파 피부 온도 변화입니다.
REST 표현 예시
핵심 체온 측정을 쿼리하려면 list 엔드포인트에 GET 요청을 보냅니다. 다음 예시에서는 반환된 목록의 단일 core-body-temperature 데이터 포인트를 보여줍니다.
요청
GET https://health.googleapis.com/v4/users/me/dataTypes/core-body-temperature/dataPoints?startTime=2026-04-20T22:00:00Z&endTime=2026-04-20T23:00:00Z Authorization: Bearer access-token Accept: application/json
응답
{
"dataPoints": [
{
"name": "users/me/dataTypes/core-body-temperature/dataPoints/cbt-666666",
"dataSource": {
"recordingMethod": "ACTIVELY_MEASURED"
},
"coreBodyTemperature": {
"sampleTime": {
"physicalTime": "2026-04-20T22:30:00Z",
"utcOffset": "-18000s"
},
"temperatureCelsius": 36.8,
"measurementLocation": "FOREHEAD"
}
}
]
}심전도 (ECG) 및 알림
의료 등급 센서가 있는 기기의 경우 API는 다음과 같은 고급 심장 건강 데이터 유형을 노출합니다.
- 심전도 (
electrocardiogram): 분류 (SINUS_RHYTHM,ATRIAL_FIBRILLATION,INCONCLUSIVE), 평균 심박수, 샘플링 빈도, 원시 파형 전압 샘플이 포함된 단일 리드 심전도 세션 결과입니다. - 불규칙한 심장 리듬 알림 (
irregular-rhythm-notification): 수동 모니터링 중에 감지된 잠재적 심방세동의 징후를 나타내는 컨텍스트 알림 이벤트입니다.
REST 표현 예시
심전도 세션 데이터를 쿼리하려면 GET 요청을 list 엔드포인트로 전송합니다. 다음 예시에서는 반환된 목록의 단일 electrocardiogram 데이터 포인트를 보여줍니다.
요청
GET https://health.googleapis.com/v4/users/me/dataTypes/electrocardiogram/dataPoints?startTime=2026-04-20T10:00:00Z&endTime=2026-04-20T10:05:00Z Authorization: Bearer access-token Accept: application/json
응답
{
"dataPoints": [
{
"name": "users/me/dataTypes/electrocardiogram/dataPoints/ecg-777777",
"dataSource": {
"recordingMethod": "ACTIVELY_MEASURED"
},
"electrocardiogram": {
"interval": {
"startTime": "2026-04-20T10:00:00Z",
"startUtcOffset": "0s",
"endTime": "2026-04-20T10:00:30Z",
"endUtcOffset": "0s"
},
"resultClassification": "SINUS_RHYTHM",
"beatsPerMinuteAvg": "70",
"samplingFrequencyHertz": 250,
"millivoltsScalingFactor": 1000,
"leadNumber": 1,
"waveformSamples": [
-12, -8, 4, 18, 30, 42, 50, 48, 32, 10
]
}
}
]
}범위 및 승인
활력 징후 및 심장 건강 데이터 기능을 사용하려면 앱에서 다음 OAuth 범위를 요청해야 합니다.
- 읽기:
https://www.googleapis.com/auth/googlehealth.ecg.readonly - 읽기:
https://www.googleapis.com/auth/googlehealth.health_metrics_and_measurements.readonly - 작성:
https://www.googleapis.com/auth/googlehealth.health_metrics_and_measurements.writeonly - 읽기:
https://www.googleapis.com/auth/googlehealth.irn.readonly
가이드라인
바이탈 및 건강 측정항목을 사용하여 기능을 설계할 때는 다음 가이드라인을 사용하세요.
- 단위 변환 처리: 온도 값은 섭씨로 제공됩니다. 사용자의 현지화된 환경설정을 기반으로 프런트엔드 코드에서 화씨로 변환합니다.
- 웹훅 알림 관리: 활력 징후에 대한 웹훅 알림을 구독하여 사용자가 심박수나 혈당과 같은 새로운 수치를 동기화한 직후 백엔드 분석을 트리거합니다.
- 데이터 민감도 준수: 제품에서 사용자에게 고빈도 생체 신호를 읽는 임상 또는 웰니스 맥락을 명확하게 설명해야 합니다. 인증 프롬프트를 호출하기 전에
health_metrics_and_measurements또는ecg와 같은 범위가 필요한 이유를 설명합니다.