Entrenamientos - Formato de Exportación JSON
Documentación sobre la estructura de entrenamientos en exportaciones JSON
Last updated: February 6, 2026
On this page
Entrenamientos
Los datos de entrenamiento incluyen todas tus sesiones de ejercicio registradas en Apple Health, como correr, ciclismo, natación, entrenamiento de fuerza y más. En las exportaciones JSON, los entrenamientos se almacenan en el arreglo workouts.
Versiones de Exportación
Health Auto Export admite dos versiones de exportación de entrenamientos:
- Versión 2 (Recomendada): Formato mejorado con metadatos más detallados y datos estructurados
- Versión 1 (Legacy): Formato antiguo mantenido para compatibilidad con flujos de trabajo existentes
Entrenamientos Versión 2
La Versión 2 proporciona una estructura completa con campos opcionales que solo se incluyen cuando hay datos disponibles.
Estructura 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 Requeridos
id(String): Identificador único del entrenamientoname(String): Nombre del tipo de entrenamiento (ej: "Running", "Cycling", "Swimming")start(Date): Hora de inicio del entrenamiento en formatoyyyy-MM-dd HH:mm:ss Zend(Date): Hora de finalización del entrenamiento en formatoyyyy-MM-dd HH:mm:ss Zduration(Number): Duración del entrenamiento en segundos
Campos Opcionales
Los siguientes campos solo se incluyen cuando hay datos disponibles:
Información de Ubicación
{
"location": "Outdoor",
"isIndoor": false
}
location(String): Uno de"Indoor","Outdoor","Pool","Open Water"isIndoor(Boolean): Si el entrenamiento se realizó en interiores
Energía e Intensidad
{
"activeEnergyBurned": {
"qty": 350,
"units": "kcal"
},
"totalEnergy": {
"qty": 450,
"units": "kcal"
},
"intensity": {
"qty": 8.5,
"units": "MET"
}
}
activeEnergyBurned(Object): Calorías activas quemadas durante el entrenamientototalEnergy(Object): Calorías totales (activas + en reposo) quemadasintensity(Object): Valor del equivalente metabólico de la tarea (MET)
Distancia y Velocidad
{
"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): Distancia total recorridaspeed(Object): Velocidad actual o promedioavgSpeed(Object): Velocidad promedio durante todo el entrenamientomaxSpeed(Object): Velocidad máxima alcanzada
Unidades:
- Distancia:
"mi"(millas) o"km"(kilómetros) - Velocidad:
"mph"(millas por hora) o"kmph"(kilómetros por hora)
Elevación
{
"elevationUp": {
"qty": 500,
"units": "ft"
},
"elevationDown": {
"qty": 450,
"units": "ft"
}
}
elevationUp(Object): Elevación total ganadaelevationDown(Object): Elevación total perdida
Unidades: "ft" (pies) o "m" (metros)
Datos Ambientales
{
"temperature": {
"qty": 72,
"units": "degF"
},
"humidity": {
"qty": 65,
"units": "%"
}
}
temperature(Object): Temperatura ambiente durante el entrenamientohumidity(Object): Porcentaje de humedad relativa
Unidades de Temperatura: "degF" (Fahrenheit) o "degC" (Celsius)
Campos Específicos de Natación
{
"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): Longitud de cada vueltastrokeStyle(String): Uno de:"Backstroke""Breaststroke""Butterfly""Freestyle""Mixed""Kickboard""Unknown"
swolfScore(Number): Puntuación de eficiencia de nataciónsalinity(String):"Fresh Water"o"Salt Water"totalSwimmingStrokeCount(Object): Número total de brazadasswimCadence(Object): Brazadas por minuto
Datos de Pasos y Cadencia
{
"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): Arreglo de mediciones de conteo de pasos a lo largo del tiempostepCadence(Object): Pasos por minutoflightsClimbed(Object): Número de tramos de escaleras subidos
Datos de Frecuencia 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): Resumen con frecuencia cardíaca mínima, promedio y máximamaxHeartRate(Object): Frecuencia cardíaca máxima durante el entrenamientoavgHeartRate(Object): Frecuencia cardíaca promedio durante el entrenamientoheartRateData(Array): Mediciones detalladas de frecuencia cardíaca durante todo el entrenamientoheartRateRecovery(Array): Mediciones de frecuencia cardíaca durante el período de recuperación
Arreglos de Datos de Series Temporales
Muchas métricas pueden incluirse como arreglos de series temporales cuando "Incluir Métricas de Entrenamiento" 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"
}
]
}
Estructura QuantityData:
date(Date): Marca de tiempo de la mediciónqty(Number): Valor de la cantidadunits(String): Unidad de medidasource(String, opcional): Dispositivo o aplicación fuente de datos
Estructura HeartRateData:
date(Date): Marca de tiempo de la mediciónMin(Number): Frecuencia cardíaca mínimaAvg(Number): Frecuencia cardíaca promedioMax(Number): Frecuencia cardíaca máximaunits(String): Unidad (típicamente "bpm")source(String, opcional): Dispositivo o aplicación fuente de datos
Datos de Ruta
Cuando "Incluir Datos de Ruta" está habilitado y el entrenamiento tiene datos 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 Ubicación:
latitude(Number): Coordenada de latitud GPSlongitude(Number): Coordenada de longitud GPSaltitude(Number): Elevación en metroscourse(Number): Dirección de viaje en grados (0-360)courseAccuracy(Number): Precisión de la medición de curso en gradoshorizontalAccuracy(Number): Precisión de posición horizontal en metrosverticalAccuracy(Number): Precisión de posición vertical en metrostimestamp(Date): Hora en que se registró la ubicaciónspeed(Number): Velocidad en metros por segundospeedAccuracy(Number): Precisión de la medición de velocidad en m/s
Metadatos
{
"metadata": {
"customField": "value",
"anotherField": 123
}
}
metadata(Object): Metadatos personalizados adicionales asociados con el entrenamiento
Entrenamientos Versión 1 (Legacy)
La Versión 1 usa una estructura más simple. Para nuevas exportaciones, se recomienda la Versión 2.
Estructura Versión 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"
}
]
}
Agrupación Temporal de Métricas de Entrenamiento
Cuando se usa la Versión 2 de Exportación y "Incluir Métricas de Entrenamiento" está habilitado, puedes controlar la granularidad de los datos de series temporales:
- Minutos: Agrupa las métricas de entrenamiento por intervalos de minuto
- Segundos: Agrupa las métricas de entrenamiento por intervalos de segundo (más detallado, archivo más grande)
Consejos
- Incluir Datos de Ruta: Habilita esta opción para obtener información de ruta GPS para entrenamientos al aire libre
- Incluir Métricas de Entrenamiento: Habilita esto para obtener datos detallados de series temporales para métricas como frecuencia cardíaca, potencia y cadencia
- Versión de Exportación: Usa la Versión 2 para la estructura de datos más completa
- Exportación GPX: Los datos de ruta también se pueden exportar como archivos GPX separados para usar en aplicaciones de mapas