Treinos - Formato de Exportação JSON
Documentação sobre a estrutura de treinos em exportações JSON
Last updated: February 6, 2026
On this page
Treinos
Os dados de treino incluem todas as suas sessões de exercício registradas no Apple Health, como corrida, ciclismo, natação, treino de força e mais. Nas exportações JSON, os treinos são armazenados no array workouts.
Versões de Exportação
O Health Auto Export suporta duas versões de exportação de treinos:
- Versão 2 (Recomendada): Formato aprimorado com metadados mais detalhados e dados estruturados
- Versão 1 (Legacy): Formato mais antigo mantido para compatibilidade com fluxos de trabalho existentes
Treinos Versão 2
A Versão 2 fornece uma estrutura abrangente com campos opcionais que são incluídos apenas quando os dados estão disponíveis.
Estrutura Básica
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Running",
"start": "2024-02-06 07:00:00 -0800",
"end": "2024-02-06 07:30:00 -0800",
"duration": 1800
}
Campos Obrigatórios
id(String): Identificador único do treinoname(String): Nome do tipo de treino (ex: "Running", "Cycling", "Swimming")start(Date): Hora de início do treino no formatoyyyy-MM-dd HH:mm:ss Zend(Date): Hora de término do treino no formatoyyyy-MM-dd HH:mm:ss Zduration(Number): Duração do treino em segundos
Campos Opcionais
Os seguintes campos são incluídos apenas quando os dados estão disponíveis:
Informações de Localização
{
"location": "Outdoor",
"isIndoor": false
}
location(String): Um entre"Indoor","Outdoor","Pool","Open Water"isIndoor(Boolean): Se o treino foi realizado em ambiente fechado
Energia e Intensidade
{
"activeEnergyBurned": {
"qty": 350,
"units": "kcal"
},
"totalEnergy": {
"qty": 450,
"units": "kcal"
},
"intensity": {
"qty": 8.5,
"units": "MET"
}
}
activeEnergyBurned(Object): Calorias ativas queimadas durante o treinototalEnergy(Object): Calorias totais (ativas + em repouso) queimadasintensity(Object): Valor do equivalente metabólico da tarefa (MET)
Distância e Velocidade
{
"distance": {
"qty": 3.5,
"units": "mi"
},
"speed": {
"qty": 7.0,
"units": "mph"
},
"avgSpeed": {
"qty": 7.0,
"units": "mph"
},
"maxSpeed": {
"qty": 8.5,
"units": "mph"
}
}
distance(Object): Distância total percorridaspeed(Object): Velocidade atual ou médiaavgSpeed(Object): Velocidade média durante todo o treinomaxSpeed(Object): Velocidade máxima atingida
Unidades:
- Distância:
"mi"(milhas) ou"km"(quilômetros) - Velocidade:
"mph"(milhas por hora) ou"kmph"(quilômetros por hora)
Elevação
{
"elevationUp": {
"qty": 500,
"units": "ft"
},
"elevationDown": {
"qty": 450,
"units": "ft"
}
}
elevationUp(Object): Elevação total ganhaelevationDown(Object): Elevação total perdida
Unidades: "ft" (pés) ou "m" (metros)
Dados Ambientais
{
"temperature": {
"qty": 72,
"units": "degF"
},
"humidity": {
"qty": 65,
"units": "%"
}
}
temperature(Object): Temperatura ambiente durante o treinohumidity(Object): Porcentagem de umidade relativa
Unidades de Temperatura: "degF" (Fahrenheit) ou "degC" (Celsius)
Campos Específicos de Natação
{
"lapLength": {
"qty": 0.025,
"units": "mi"
},
"strokeStyle": "Freestyle",
"swolfScore": 45,
"salinity": "Fresh Water",
"totalSwimmingStrokeCount": {
"qty": 1200,
"units": "count"
},
"swimCadence": {
"qty": 30,
"units": "spm"
}
}
lapLength(Object): Comprimento de cada voltastrokeStyle(String): Um entre:"Backstroke""Breaststroke""Butterfly""Freestyle""Mixed""Kickboard""Unknown"
swolfScore(Number): Pontuação de eficiência de nataçãosalinity(String):"Fresh Water"ou"Salt Water"totalSwimmingStrokeCount(Object): Número total de braçadasswimCadence(Object): Braçadas por minuto
Dados de Passos e Cadência
{
"stepCount": [
{
"date": "2024-02-06 07:00:00 -0800",
"qty": 5000,
"units": "count",
"source": "Apple Watch"
}
],
"stepCadence": {
"qty": 180,
"units": "spm"
},
"flightsClimbed": {
"qty": 10,
"units": "count"
}
}
stepCount(Array): Array de medições de contagem de passos ao longo do tempostepCadence(Object): Passos por minutoflightsClimbed(Object): Número de lances de escadas subidos
Dados de Frequência Cardíaca
{
"heartRate": {
"min": {
"qty": 120,
"units": "bpm"
},
"avg": {
"qty": 150,
"units": "bpm"
},
"max": {
"qty": 175,
"units": "bpm"
}
},
"maxHeartRate": {
"qty": 175,
"units": "bpm"
},
"avgHeartRate": {
"qty": 150,
"units": "bpm"
},
"heartRateData": [
{
"date": "2024-02-06 07:00:00 -0800",
"Min": 120,
"Avg": 150,
"Max": 175,
"units": "bpm",
"source": "Apple Watch"
}
],
"heartRateRecovery": [
{
"date": "2024-02-06 07:30:00 -0800",
"Min": 140,
"Avg": 145,
"Max": 150,
"units": "bpm",
"source": "Apple Watch"
}
]
}
heartRate(Object): Resumo com frequência cardíaca mínima, média e máximamaxHeartRate(Object): Frequência cardíaca máxima durante o treinoavgHeartRate(Object): Frequência cardíaca média durante o treinoheartRateData(Array): Medições detalhadas de frequência cardíaca durante todo o treinoheartRateRecovery(Array): Medições de frequência cardíaca durante o período de recuperação
Arrays de Dados de Séries Temporais
Muitas métricas podem ser incluídas como arrays de séries temporais quando "Incluir Métricas de Treino" está habilitado:
{
"activeEnergy": [
{
"date": "2024-02-06 07:00:00 -0800",
"qty": 50,
"units": "kcal",
"source": "Apple Watch"
}
],
"basalEnergy": [
{
"date": "2024-02-06 07:00:00 -0800",
"qty": 20,
"units": "kcal",
"source": "Apple Watch"
}
],
"cyclingCadence": [
{
"date": "2024-02-06 07:00:00 -0800",
"qty": 90,
"units": "rpm",
"source": "Apple Watch"
}
],
"cyclingDistance": [
{
"date": "2024-02-06 07:00:00 -0800",
"qty": 0.5,
"units": "mi",
"source": "Apple Watch"
}
],
"cyclingPower": [
{
"date": "2024-02-06 07:00:00 -0800",
"qty": 200,
"units": "W",
"source": "Power Meter"
}
],
"cyclingSpeed": [
{
"date": "2024-02-06 07:00:00 -0800",
"qty": 18,
"units": "mph",
"source": "Apple Watch"
}
],
"swimDistance": [
{
"date": "2024-02-06 07:00:00 -0800",
"qty": 25,
"units": "yd",
"source": "Apple Watch"
}
],
"swimStroke": [
{
"date": "2024-02-06 07:00:00 -0800",
"qty": 20,
"units": "count",
"source": "Apple Watch"
}
],
"walkingAndRunningDistance": [
{
"date": "2024-02-06 07:00:00 -0800",
"qty": 0.25,
"units": "mi",
"source": "Apple Watch"
}
]
}
Estrutura QuantityData:
date(Date): Timestamp da mediçãoqty(Number): Valor da quantidadeunits(String): Unidade de medidasource(String, opcional): Dispositivo ou aplicativo fonte dos dados
Estrutura HeartRateData:
date(Date): Timestamp da mediçãoMin(Number): Frequência cardíaca mínimaAvg(Number): Frequência cardíaca médiaMax(Number): Frequência cardíaca máximaunits(String): Unidade (tipicamente "bpm")source(String, opcional): Dispositivo ou aplicativo fonte dos dados
Dados de Rota
Quando "Incluir Dados de Rota" está habilitado e o treino tem dados GPS:
{
"route": [
{
"latitude": 37.7749,
"longitude": -122.4194,
"altitude": 50.5,
"course": 45.0,
"courseAccuracy": 5.0,
"horizontalAccuracy": 10.0,
"verticalAccuracy": 15.0,
"timestamp": "2024-02-06 07:00:00 -0800",
"speed": 7.0,
"speedAccuracy": 0.5
}
]
}
Campos de Localização:
latitude(Number): Coordenada de latitude GPSlongitude(Number): Coordenada de longitude GPSaltitude(Number): Elevação em metroscourse(Number): Direção de viagem em graus (0-360)courseAccuracy(Number): Precisão da medição de curso em graushorizontalAccuracy(Number): Precisão da posição horizontal em metrosverticalAccuracy(Number): Precisão da posição vertical em metrostimestamp(Date): Hora em que a localização foi registradaspeed(Number): Velocidade em metros por segundospeedAccuracy(Number): Precisão da medição de velocidade em m/s
Metadados
{
"metadata": {
"customField": "value",
"anotherField": 123
}
}
metadata(Object): Metadados personalizados adicionais associados ao treino
Treinos Versão 1 (Legacy)
A Versão 1 usa uma estrutura mais simples. Para novas exportações, a Versão 2 é recomendada.
Estrutura Versão 1
{
"name": "Running",
"start": "2024-02-06 07:00:00 -0800",
"end": "2024-02-06 07:30:00 -0800",
"totalEnergy": {
"qty": 450,
"units": "kcal"
},
"activeEnergy": {
"qty": 350,
"units": "kcal"
},
"distance": {
"qty": 3.5,
"units": "mi"
},
"heartRateData": [
{
"date": "2024-02-06 07:00:00 -0800",
"qty": 150,
"units": "count"
}
],
"route": [
{
"lat": 37.7749,
"lon": -122.4194,
"altitude": 50.5,
"timestamp": "2024-02-06 07:00:00 -0800"
}
]
}
Agrupamento Temporal de Métricas de Treino
Ao usar a Versão 2 de Exportação e quando "Incluir Métricas de Treino" está habilitado, você pode controlar a granularidade dos dados de séries temporais:
- Minutos: Agrupa as métricas de treino por intervalos de minuto
- Segundos: Agrupa as métricas de treino por intervalos de segundo (mais detalhado, arquivo maior)
Dicas
- Incluir Dados de Rota: Habilite esta opção para obter informações de rota GPS para treinos ao ar livre
- Incluir Métricas de Treino: Habilite isso para obter dados detalhados de séries temporais para métricas como frequência cardíaca, potência e cadência
- Versão de Exportação: Use a Versão 2 para a estrutura de dados mais abrangente
- Exportação GPX: Os dados de rota também podem ser exportados como arquivos GPX separados para uso em aplicativos de mapeamento