Desenvolver experiências de métricas de saúde e sinais vitais com a API Google Health

A API Google Health rastreia sinais vitais e métricas de saúde fisiológica do usuário, como frequência cardíaca, saturação de oxigênio, glicemia, temperatura corporal e derivações diárias de temperatura do sono.

Entenda como ler e solicitar autorização do usuário para dados de métricas vitais no seu aplicativo e oferecer a melhor experiência possível.

Tipos de dados compatíveis

A API é compatível com os seguintes tipos de dados para rastrear sinais vitais e métricas de saúde:

Tabela: tipos de dados de sinais vitais da API Google Health
Tipo de dados
  dataType Parâmetro
  filter
Operações
disponíveis
Escopo
Glicose no sangue
blood-glucose
blood_glucose
Tipo de registro : Exemplo
list, get, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Temperatura corporal central
core-body-temperature
core_body_temperature
Tipo de registro : Exemplo
list, get, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Variabilidade da frequência cardíaca diária
daily-heart-rate-variability
daily_heart_rate_variability
Tipo de registro : diário

Dispositivos compatíveis

list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Zonas de frequência cardíaca diárias
daily-heart-rate-zones
daily_heart_rate_zones
Tipo de registro : diário
list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Saturação de oxigênio diária
daily-oxygen-saturation
daily_oxygen_saturation
Tipo de registro : diário

Dispositivos compatíveis

list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Frequência respiratória diária
daily-respiratory-rate
daily_respiratory_rate
Tipo de registro : diário

Dispositivos compatíveis

list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Frequência cardíaca em repouso diária
daily-resting-heart-rate
daily_resting_heart_rate
Tipo de registro : diário

Dispositivos compatíveis

list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Derivações diárias da temperatura do sono
daily-sleep-temperature-derivations
daily_sleep_temperature_derivations
Tipo de registro : diário

Dispositivos compatíveis

list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Eletrocardiograma (ECG)
electrocardiogram
electrocardiogram
Tipo de registro : sessão

Dispositivos compatíveis

list .ecg.readonly
Frequência cardíaca
heart-rate
heart_rate
Tipo de registro : Exemplo

Dispositivos compatíveis

list, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Variabilidade da frequência cardíaca
heart-rate-variability
heart_rate_variability
Tipo de registro : Exemplo

Dispositivos compatíveis

list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Notificação de ritmo irregular
irregular-rhythm-notification
irregular_rhythm_notification
Tipo de registro : sessão
list .irn.readonly
Saturação de oxigênio
oxygen-saturation
oxygen_saturation
Tipo de registro : Exemplo

Dispositivos compatíveis

list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Resumo do sono com ritmo respiratório
respiratory-rate-sleep-summary
respiratory_rate_sleep_summary
Tipo de registro : Exemplo

Dispositivos compatíveis

list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly

Requisitos somente leitura

Os tipos de dados fisiológicos de sinais vitais são preenchidos pela sincronização de dispositivos ou por entradas de registro manual no app Fitbit para dispositivos móveis ou na Web e são somente leitura pela API REST. Não é possível gravar ou modificar esses dados diretamente pelos endpoints da API Google Health.

As seções a seguir fornecem detalhes técnicos e formatos de representação REST para dados de sinais vitais.

Frequência cardíaca e saúde do coração

A API fornece medições intradiárias detalhadas e resumos diários de métricas de frequência cardíaca:

  • Frequência cardíaca (heart-rate): medições de frequência cardíaca em um determinado momento que contêm uma contagem de beatsPerMinute, além do motionContext do usuário (como SEDENTARY ou ACTIVE) e sensorLocation (como WRIST ou CHEST).
  • Frequência cardíaca em repouso diária (daily-resting-heart-rate): um valor diário de frequência cardíaca em repouso basal.
  • Variabilidade da frequência cardíaca (heart-rate-variability e daily-heart-rate-variability): registra a raiz quadrada média das diferenças sucessivas (rmssd) em milissegundos para representar a VFC.

Exemplo de representação REST

Para consultar medições de frequência cardíaca, envie uma solicitação GET ao endpoint list.

.

O exemplo a seguir mostra um único ponto de dados heart-rate da lista retornada:

Solicitação

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

Resposta

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

Glicemia

O tipo de dados blood-glucose representa os níveis de açúcar no sangue do usuário. Os pontos de glicose no sangue contêm a concentração em miligramas por decilitro (mg/dL), o contexto da refeição ou do horário e informações da amostra.

Exemplo de representação REST

Para consultar medições de glicemia, envie uma solicitação GET ao endpoint list. O exemplo a seguir mostra um único ponto de dados blood-glucose da lista retornada:

Solicitação

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

Resposta

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

Saturação de oxigênio (SpO₂)

A API rastreia os níveis de oxigênio usando oxygen-saturation (valores de amostra intradiários) e daily-oxygen-saturation (estatísticas de resumo diário). A concentração percentual é expressa como um número de 0 a 100.

Exemplo de representação REST

Para consultar medições de saturação de oxigênio, envie uma solicitação GET ao endpoint list. O exemplo a seguir mostra um único ponto de dados oxygen-saturation da lista retornada:

Solicitação

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

Resposta

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

Temperatura

O monitoramento de temperatura inclui métricas de temperatura corporal interna e tendências de temperatura da pele durante o sono noturno:

  • Temperatura corporal central (core-body-temperature): registra a temperatura dos órgãos internos em graus Celsius, com o local específico de medição (como ARMPIT, EAR ou FOREHEAD).
  • Derivações de temperatura do sono (daily-sleep-temperature-derivations): variações de alta frequência na temperatura da pele registradas durante a noite.

Exemplo de representação REST

Para consultar as medições de temperatura corporal, envie uma solicitação GET ao endpoint list. O exemplo a seguir mostra um único ponto de dados core-body-temperature da lista retornada:

Solicitação

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

Resposta

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

Eletrocardiograma e notificações

Para dispositivos com sensores de nível médico, a API expõe tipos de dados avançados de saúde cardíaca:

  • Eletrocardiograma (electrocardiogram): resultados de uma sessão de eletrocardiograma de uma derivação, contendo uma classificação (SINUS_RHYTHM, ATRIAL_FIBRILLATION, INCONCLUSIVE), frequência cardíaca média, frequência de amostragem e amostras de tensão de forma de onda bruta.
  • Notificação de ritmo irregular (irregular-rhythm-notification): eventos de alerta contextual que indicam sinais de possível FA detectados durante o monitoramento passivo.

Exemplo de representação REST

Para consultar dados de sessões de eletrocardiograma, envie uma solicitação GET ao endpoint list. O exemplo a seguir mostra um único ponto de dados electrocardiogram da lista retornada:

Solicitação

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

Resposta

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

Escopos e autorização

Para usar o recurso dados de sinais vitais e saúde cardíaca, seu app precisa solicitar os seguintes escopos do OAuth:

  • Leia: https://www.googleapis.com/auth/googlehealth.ecg.readonly
  • Leia: https://www.googleapis.com/auth/googlehealth.health_metrics_and_measurements.readonly
  • Escrever: https://www.googleapis.com/auth/googlehealth.health_metrics_and_measurements.writeonly
  • Leia: https://www.googleapis.com/auth/googlehealth.irn.readonly

Diretrizes

Use estas diretrizes ao criar recursos com métricas de saúde e sinais vitais:

  • Processar conversões de unidades: os valores de temperatura são fornecidos em Celsius. Converta para Fahrenheit no código do front-end com base nas preferências localizadas do usuário.
  • Gerenciar notificações de webhook: inscreva-se em alertas de webhook para métricas vitais e acionar a análise de back-end imediatamente após a sincronização de novas leituras pelo usuário (como frequência cardíaca ou glicemia).
  • Respeite a sensibilidade dos dados: verifique se o produto explica claramente aos usuários os contextos clínicos ou de bem-estar para leitura de sinais vitais fisiológicos de alta frequência. Explique por que escopos como health_metrics_and_measurements ou ecg são necessários antes de chamar solicitações de autorização.