Google Health API menyediakan jenis data yang melacak pola tidur pengguna, termasuk durasi, kualitas, dan metrik fisiologis selama istirahat. Metrik ini membantu aplikasi memberikan insight tentang pemulihan, kebersihan tidur, dan tren kesehatan jangka panjang.
Metrik fisiologis seperti Variabilitas Detak Jantung (HRV), Saturasi Oksigen (SpO2), dan laju pernapasan direkam secara khusus selama tidur karena tubuh berada dalam kondisi istirahat yang stabil. Hal ini memungkinkan API mencatat data dasar kesehatan otonom dan pernapasan pengguna tanpa gangguan dari pemicu stres siang hari, aktivitas fisik, atau kondisi lingkungan yang bervariasi.
Pahami perbedaan antara jenis data ini untuk menentukan metrik mana yang sesuai dengan aplikasi Anda.
Jenis data yang didukung
API ini mendukung jenis data berikut untuk mengukur tidur:
| Jenis data | Operasi yang tersedia |
Cakupan |
|---|---|---|
|
Variabilitas Detak Jantung Harian
dataType:
daily-heart-rate-variabilityparameter filter: daily_heart_rate_variability
Jenis data: Harian
Perangkat yang kompatibel
|
list, reconcile | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
Saturasi Oksigen Harian
dataType:
daily-oxygen-saturationparameter filter: daily_oxygen_saturation
Jenis data: Harian
Perangkat yang kompatibel
|
list, reconcile | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
Laju Pernapasan Harian
dataType:
daily-respiratory-rateparameter filter: daily_respiratory_rate
Jenis data: Harian
Perangkat yang kompatibel
|
list, reconcile | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
Turunan Suhu Tidur Harian
dataType:
daily-sleep-temperature-derivationsparameter filter: daily_sleep_temperature_derivations
Jenis data: Harian
Perangkat yang kompatibel
|
list, reconcile | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
Variabilitas Detak Jantung
dataType:
heart-rate-variabilityparameter filter: heart_rate_variability
Jenis data: Contoh
Perangkat yang kompatibel
|
list, reconcile | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
Saturasi Oksigen
dataType:
oxygen-saturationparameter filter: oxygen_saturation
Jenis data: Contoh
Perangkat yang kompatibel
|
list, reconcile | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
Ringkasan Tidur Laju Pernapasan
dataType:
respiratory-rate-sleep-summaryparameter filter: respiratory_rate_sleep_summary
Jenis data: Contoh
Perangkat yang kompatibel
|
list, reconcile | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
Tidur
dataType:
sleepfilter parameter: sleep
Jenis data: Sesi
Perangkat yang kompatibel
|
list, get, reconcile, create, update, batchDelete | .sleep.readonly.sleep.writeonly |
Sesi tidur dan bangun singkat
Sesi Tidur (Sleep) mewakili peristiwa tidur yang terpisah, seperti tidur malam tunggal atau tidur siang. Fitur ini mencakup perincian mendetail tentang fase tidur yang tidak tumpang-tindih bersama dengan interval transisi bangun singkat yang dikenal sebagai bangun singkat.
- Sesi Tidur (
Sleep): Merepresentasikan peristiwa tidur diskrit (interval tahapLIGHT,DEEP,REM,AWAKE) yang mempartisi linimasa berurutan istirahat utama. - Bangun Singkat (
shortAwakenings): Transisi bangun atau bangun singkat yang terjadi selama istirahat. Tidak seperti interval faseAWAKEstandar (yang membagi progres fase tidur yang berdekatan dan tidak tumpang-tindih), bangun singkat adalah segmen berbeda yang dapat tumpang-tindih dengan fase tidur di sekitarnya. Fitur ini memberikan visibilitas terperinci ke dalam kegelisahan dan bangun singkat tanpa mengganggu struktur tahap tidur utama. - Bangun di Malam Hari: Bangun di tengah malam (seperti bangun untuk minum air) diidentifikasi oleh penggabungan sensor di perangkat (akselerometer, giroskop, dan jumlah langkah). Di Web API, aplikasi dapat mendeteksi bangun di malam hari
dengan memfilter interval yang ditandai dengan level
"wake"(tidur klasik) atau"awake"(tidur berdasarkan tahap).
Contoh
{
"name": "sleeps/12345",
"startTime": "2026-04-20T22:30:00Z",
"endTime": "2026-04-21T06:30:00Z",
"sleepType": "STAGES",
"minutesToFallAsleep": 15,
"minutesAfterWakeup": 10,
"sleepStages": [
{
"startTime": "2026-04-20T22:30:00Z",
"endTime": "2026-04-20T23:45:00Z",
"type": "LIGHT"
},
{
"startTime": "2026-04-20T23:45:00Z",
"endTime": "2026-04-21T01:15:00Z",
"type": "DEEP"
}
],
"shortAwakenings": [
{
"startTime": "2026-04-20T23:10:00Z",
"endTime": "2026-04-20T23:11:30Z",
"type": "AWAKE"
}
]
}
Membuat sesi tidur
Untuk membuat entri sesi tidur, kirim permintaan POST ke endpoint titik data sleep. Respons mencakup kolom name yang berisi
data-point-id, yang dapat digunakan dalam permintaan
Perbarui (Patch) atau
Hapus.
Permintaan
POST https://health.googleapis.com/v4/users/me/dataTypes/sleep/dataPoints
Authorization: Bearer access-token
Content-Type: application/json
{
"sleep": {
"interval": {
"startTime": "2026-06-07T22:00:00Z",
"startUtcOffset": "-14400s",
"endTime": "2026-06-08T06:00:00Z",
"endUtcOffset": "-14400s"
},
"type": "STAGES",
"stages": [
{
"startTime": "2026-06-07T22:00:00Z",
"startUtcOffset": "-14400s",
"endTime": "2026-06-07T22:30:00Z",
"endUtcOffset": "-14400s",
"type": "LIGHT"
},
{
"startTime": "2026-06-07T22:30:00Z",
"startUtcOffset": "-14400s",
"endTime": "2026-06-07T23:45:00Z",
"endUtcOffset": "-14400s",
"type": "DEEP"
},
{
"startTime": "2026-06-07T23:45:00Z",
"startUtcOffset": "-14400s",
"endTime": "2026-06-08T02:15:00Z",
"endUtcOffset": "-14400s",
"type": "LIGHT"
},
{
"startTime": "2026-06-08T02:15:00Z",
"startUtcOffset": "-14400s",
"endTime": "2026-06-08T02:45:00Z",
"endUtcOffset": "-14400s",
"type": "REM"
},
{
"startTime": "2026-06-08T02:45:00Z",
"startUtcOffset": "-14400s",
"endTime": "2026-06-08T05:15:00Z",
"endUtcOffset": "-14400s",
"type": "LIGHT"
},
{
"startTime": "2026-06-08T05:15:00Z",
"startUtcOffset": "-14400s",
"endTime": "2026-06-08T06:00:00Z",
"endUtcOffset": "-14400s",
"type": "REM"
}
]
}
}Respons
{
"done": true,
"response": {
"@type": "type.googleapis.com/google.devicesandservices.health.v4.DataPoint",
"name": "users/user-id/dataTypes/sleep/dataPoints/data-point-id",
"sleep": {
"interval": {
"startTime": "2026-06-07T22:00:00Z",
"startUtcOffset": "-14400s",
"endTime": "2026-06-08T06:00:00Z",
"endUtcOffset": "-14400s"
},
"type": "STAGES",
"stages": [
{
"startTime": "2026-06-07T22:00:00Z",
"startUtcOffset": "-14400s",
"endTime": "2026-06-07T22:30:00Z",
"endUtcOffset": "-14400s",
"type": "LIGHT"
},
{
"startTime": "2026-06-07T22:30:00Z",
"startUtcOffset": "-14400s",
"endTime": "2026-06-07T23:45:00Z",
"endUtcOffset": "-14400s",
"type": "DEEP"
},
{
"startTime": "2026-06-07T23:45:00Z",
"startUtcOffset": "-14400s",
"endTime": "2026-06-08T02:15:00Z",
"endUtcOffset": "-14400s",
"type": "LIGHT"
},
{
"startTime": "2026-06-08T02:15:00Z",
"startUtcOffset": "-14400s",
"endTime": "2026-06-08T02:45:00Z",
"endUtcOffset": "-14400s",
"type": "REM"
},
{
"startTime": "2026-06-08T02:45:00Z",
"startUtcOffset": "-14400s",
"endTime": "2026-06-08T05:15:00Z",
"endUtcOffset": "-14400s",
"type": "LIGHT"
},
{
"startTime": "2026-06-08T05:15:00Z",
"startUtcOffset": "-14400s",
"endTime": "2026-06-08T06:00:00Z",
"endUtcOffset": "-14400s",
"type": "REM"
}
]
}
}
}Metrik efisiensi dan latensi tidur
Selain tahapan tidur dan metrik fisiologis, API ini menyediakan metrik utama yang mengukur kualitas tidur dan permulaan tidur. Efisiensi tidur dan latensi mulai tidur adalah metrik klinis standar yang menjelaskan seberapa efektif pengguna beristirahat dibandingkan dengan total waktu mereka di tempat tidur, sehingga memberikan insight tentang kebersihan tidur dan kualitas istirahat.
Skor efisiensi tidur
Efisiensi tidur adalah metrik standar yang ditentukan sebagai proporsi waktu yang dihabiskan untuk tidur dibandingkan dengan total waktu yang dihabiskan di tempat tidur. API menghitung efisiensi tidur menggunakan formula berikut:
Sleep Efficiency Score = round( (Total Minutes Asleep / Total Minutes In Bed) * 100 )
Skor efisiensi dihitung tepat sebelum partisi tingkat tidur (tahapan). Total menit tidur yang ditampilkan dalam respons API (di kolom
summary.minutesAsleep) mencerminkan hasil akhir setelah tingkat tidur dihitung.
Jika pengguna atau peneliti mengubah waktu mulai atau berakhir catatan tidur secara manual, API akan menghitung ulang skor efisiensi tidur dan menyesuaikan partisi tahap sesuai dengan data sensor yang direkam dalam batas waktu tidur dan bangun yang baru.
Latensi mulai tidur
Latensi mulai tidur mengukur waktu yang berlalu sejak pengguna berniat untuk tertidur (waktu mulai "di tempat tidur" atau "mematikan lampu") hingga mulai tertidur.
Untuk log yang dibuat secara otomatis menggunakan deteksi otomatis (auto_detect),
minutesToFallAsleep secara default ditetapkan ke 0 karena tidak ada intent eksplisit untuk tertidur
yang dicatat ke dalam log. Saat waktu mulai di tempat tidur dicatat atau diedit secara manual (mengonversi
log ke manual), API menghitung dan mengisi minutesToFallAsleep bersama
dengan minutesAfterWakeup.
Panduan untuk riset dan logging manual
Saat peserta merekam atau menyesuaikan waktu mulai dan berakhir di tempat tidur secara manual:
- Memperbarui batas dalam video akan mengubah interval
timeInBed. - Tingkat tidur dan partisi tahap akan disesuaikan secara otomatis untuk mengevaluasi data sensor dalam jangka waktu baru.
- Skor efisiensi tidur,
minutesToFallAsleep, danminutesAfterWakeupditurunkan ulang berdasarkan jangka waktu yang diperbarui.
Turunan suhu tidur harian
Turunan Suhu Tidur Harian mengukur variasi suhu kulit pengguna saat tidur dibandingkan dengan suhu dasarnya. Data ini biasanya dilaporkan sekali per hari setelah sesi tidur utama.
Laju pernapasan
Laju pernapasan mengukur napas pengguna per menit. Selama tidur, ini adalah
metrik utama untuk memantau kualitas tidur dan potensi gangguan. API ini mendukung laju pernapasan sampel (respiratory-rate), ringkasan harian (daily-respiratory-rate), dan ringkasan tidur tingkat sesi (respiratory-rate-sleep-summary).
Variabilitas detak jantung (HRV)
HRV mengukur variasi waktu antara setiap detak jantung. HRV adalah indikator utama kondisi sistem saraf otonom; HRV yang tinggi selama tidur umumnya menandakan pemulihan dan kesiapan yang lebih baik, sedangkan HRV yang rendah dapat mengindikasikan stres atau latihan berlebihan. API ini mendukung HRV sampel (heart-rate-variability)
dan ringkasan harian (daily-heart-rate-variability).
Saturasi oksigen (SpO2)
SpO2 menunjukkan persentase hemoglobin yang tersaturasi oksigen relatif terhadap total hemoglobin dalam darah. Memantau SpO2 selama tidur sangat penting untuk mendeteksi potensi gangguan pernapasan dan memastikan pengguna mempertahankan kadar oksigen yang memadai sepanjang malam. API ini mendukung sampel SpO2
(oxygen-saturation) dan ringkasan harian (daily-oxygen-saturation).
Gambaran menyeluruh tentang kesehatan dan pemulihan tidur
Meskipun setiap metrik memberikan insight tertentu, metrik tersebut sangat saling terkait dan bersama-sama menawarkan gambaran menyeluruh tentang pemulihan pengguna. Tahapan tidur (Ringan, Nyenyak, REM) memberikan dasar struktural istirahat, sementara penanda fisiologis seperti HRV dan SpO2 menunjukkan bagaimana tubuh merespons istirahat tersebut secara fisik. Misalnya, sesi tidur berkualitas tinggi dengan Tidur lelap yang optimal sering kali berkorelasi dengan HRV yang lebih tinggi, yang menandakan pemulihan yang efektif dari sistem saraf otonom.
Dengan menggabungkannya dengan turunan laju pernapasan dan suhu tidur, aplikasi dapat mengidentifikasi potensi gangguan. Peningkatan mendadak pada laju pernapasan atau perubahan suhu saat tidur dapat memberikan konteks mengapa pengguna mungkin menghabiskan lebih sedikit waktu dalam tahap pemulihan. Dengan menganalisis jenis data ini secara bersamaan, developer dapat memberikan penilaian komprehensif tentang kebiasaan tidur dan tren kesehatan jangka panjang.
Panduan
Saat mengintegrasikan metrik tidur di aplikasi Anda, gunakan panduan berikut:
- Detail Sesi: Untuk menampilkan tahapan tidur pengguna (Ringan, Nyenyak, REM, Terjaga)
dan bangun tidur singkat, kueri jenis data
sleep. - Bangun di Malam Hari: Untuk melacak peristiwa bangun di tengah malam tanpa aliran sensor mentah, periksa interval tahap
sleepdan filter item dengan jenis tahapAWAKE(atauwakeuntuk log tidur klasik). - Latensi dan Efisiensi: Gunakan
minutesToFallAsleepdan formula efisiensi tidur untuk analisis latensi tidur. Perhatikan bahwaminutesToFallAsleepdiisi saat log tidur diedit secara manual atau dicatat secara eksplisit. - Pemantauan Fisiologis: Untuk pemantauan kesehatan tingkat lanjut, gabungkan data sesi tidur dengan metrik fisiologis dan pemulihan seperti
respiratory-rate-sleep-summary,daily-sleep-temperature-derivations,daily-heart-rate-variability, dandaily-oxygen-saturation. - Rekonsiliasi: Gunakan operasi
reconcileuntuk memastikan bahwa catatan tidur yang tumpang-tindih dari perangkat yang berbeda (misalnya, perangkat wearable dan sensor kasur) digabungkan ke dalam satu catatan tidur "utama".
Menghitung total waktu dalam fase tidur lelap
Untuk menghitung total waktu yang dihabiskan pengguna dalam fase tidur dalam restoratif selama malam tertentu:
- Buat kueri tipe data
sleepuntuk rentang waktu yang ditentukan. - Lakukan iterasi pada daftar tahap dan identifikasi interval saat
typeadalahDEEP. - Hitung durasi (Waktu Berakhir - Waktu Mulai) untuk setiap interval fase tidur dalam dan jumlahkan.
Jumlah yang dihasilkan memberikan total durasi fisik tidur lelap untuk sesi tersebut.