Entraînements - Format d'Exportation JSON
Documentation sur la structure des entraînements dans les exportations JSON
Last updated: February 6, 2026
On this page
Entraînements
Les données d'entraînement incluent toutes vos séances d'exercice enregistrées dans Apple Health, telles que la course, le cyclisme, la natation, l'entraînement en force et plus encore. Dans les exportations JSON, les entraînements sont stockés dans le tableau workouts.
Versions d'Exportation
Health Auto Export prend en charge deux versions d'exportation d'entraînements :
- Version 2 (Recommandée) : Format amélioré avec des métadonnées plus détaillées et des données structurées
- Version 1 (Legacy) : Format plus ancien maintenu pour la compatibilité avec les flux de travail existants
Entraînements Version 2
La Version 2 fournit une structure complète avec des champs optionnels qui ne sont inclus que lorsque les données sont disponibles.
Structure de Base
{
"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
}
Champs Requis
id(String) : Identifiant unique de l'entraînementname(String) : Nom du type d'entraînement (ex: "Running", "Cycling", "Swimming")start(Date) : Heure de début de l'entraînement au formatyyyy-MM-dd HH:mm:ss Zend(Date) : Heure de fin de l'entraînement au formatyyyy-MM-dd HH:mm:ss Zduration(Number) : Durée de l'entraînement en secondes
Champs Optionnels
Les champs suivants ne sont inclus que lorsque les données sont disponibles :
Informations de Localisation
{
"location": "Outdoor",
"isIndoor": false
}
location(String) : Un parmi"Indoor","Outdoor","Pool","Open Water"isIndoor(Boolean) : Si l'entraînement a été effectué en intérieur
Énergie et Intensité
{
"activeEnergyBurned": {
"qty": 350,
"units": "kcal"
},
"totalEnergy": {
"qty": 450,
"units": "kcal"
},
"intensity": {
"qty": 8.5,
"units": "MET"
}
}
activeEnergyBurned(Object) : Calories actives brûlées pendant l'entraînementtotalEnergy(Object) : Calories totales (actives + au repos) brûléesintensity(Object) : Valeur de l'équivalent métabolique de la tâche (MET)
Distance et Vitesse
{
"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) : Distance totale parcouruespeed(Object) : Vitesse actuelle ou moyenneavgSpeed(Object) : Vitesse moyenne tout au long de l'entraînementmaxSpeed(Object) : Vitesse maximale atteinte
Unités :
- Distance :
"mi"(miles) ou"km"(kilomètres) - Vitesse :
"mph"(miles par heure) ou"kmph"(kilomètres par heure)
Élévation
{
"elevationUp": {
"qty": 500,
"units": "ft"
},
"elevationDown": {
"qty": 450,
"units": "ft"
}
}
elevationUp(Object) : Élévation totale gagnéeelevationDown(Object) : Élévation totale perdue
Unités : "ft" (pieds) ou "m" (mètres)
Données Environnementales
{
"temperature": {
"qty": 72,
"units": "degF"
},
"humidity": {
"qty": 65,
"units": "%"
}
}
temperature(Object) : Température ambiante pendant l'entraînementhumidity(Object) : Pourcentage d'humidité relative
Unités de Température : "degF" (Fahrenheit) ou "degC" (Celsius)
Champs Spécifiques à la Natation
{
"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) : Longueur de chaque longueurstrokeStyle(String) : Un parmi :"Backstroke""Breaststroke""Butterfly""Freestyle""Mixed""Kickboard""Unknown"
swolfScore(Number) : Score d'efficacité de natationsalinity(String) :"Fresh Water"ou"Salt Water"totalSwimmingStrokeCount(Object) : Nombre total de mouvementsswimCadence(Object) : Mouvements par minute
Données de Pas et Cadence
{
"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) : Tableau de mesures de comptage de pas au fil du tempsstepCadence(Object) : Pas par minuteflightsClimbed(Object) : Nombre de volées d'escaliers montées
Données de Fréquence Cardiaque
{
"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) : Résumé avec fréquence cardiaque min, moyenne et maxmaxHeartRate(Object) : Fréquence cardiaque maximale pendant l'entraînementavgHeartRate(Object) : Fréquence cardiaque moyenne pendant l'entraînementheartRateData(Array) : Mesures détaillées de fréquence cardiaque tout au long de l'entraînementheartRateRecovery(Array) : Mesures de fréquence cardiaque pendant la période de récupération
Tableaux de Données de Séries Temporelles
De nombreuses métriques peuvent être incluses sous forme de tableaux de séries temporelles lorsque "Inclure les Métriques d'Entraînement" est activé :
{
"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"
}
]
}
Structure QuantityData :
date(Date) : Horodatage de la mesureqty(Number) : Valeur de la quantitéunits(String) : Unité de mesuresource(String, optionnel) : Dispositif ou application source des données
Structure HeartRateData :
date(Date) : Horodatage de la mesureMin(Number) : Fréquence cardiaque minimaleAvg(Number) : Fréquence cardiaque moyenneMax(Number) : Fréquence cardiaque maximaleunits(String) : Unité (généralement "bpm")source(String, optionnel) : Dispositif ou application source des données
Données de Route
Lorsque "Inclure les Données de Route" est activé et que l'entraînement a des données 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
}
]
}
Champs de Localisation :
latitude(Number) : Coordonnée de latitude GPSlongitude(Number) : Coordonnée de longitude GPSaltitude(Number) : Élévation en mètrescourse(Number) : Direction de déplacement en degrés (0-360)courseAccuracy(Number) : Précision de la mesure de cap en degréshorizontalAccuracy(Number) : Précision de position horizontale en mètresverticalAccuracy(Number) : Précision de position verticale en mètrestimestamp(Date) : Heure à laquelle l'emplacement a été enregistréspeed(Number) : Vitesse en mètres par secondespeedAccuracy(Number) : Précision de la mesure de vitesse en m/s
Métadonnées
{
"metadata": {
"customField": "value",
"anotherField": 123
}
}
metadata(Object) : Métadonnées personnalisées supplémentaires associées à l'entraînement
Entraînements Version 1 (Legacy)
La Version 1 utilise une structure plus simple. Pour les nouvelles exportations, la Version 2 est recommandée.
Structure Version 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"
}
]
}
Regroupement Temporel des Métriques d'Entraînement
Lors de l'utilisation de la Version 2 d'Exportation et lorsque "Inclure les Métriques d'Entraînement" est activé, vous pouvez contrôler la granularité des données de séries temporelles :
- Minutes : Regroupe les métriques d'entraînement par intervalles de minute
- Secondes : Regroupe les métriques d'entraînement par intervalles de seconde (plus détaillé, fichier plus volumineux)
Conseils
- Inclure les Données de Route : Activez cette option pour obtenir des informations de route GPS pour les entraînements en extérieur
- Inclure les Métriques d'Entraînement : Activez cela pour obtenir des données détaillées de séries temporelles pour des métriques comme la fréquence cardiaque, la puissance et la cadence
- Version d'Exportation : Utilisez la Version 2 pour la structure de données la plus complète
- Exportation GPX : Les données de route peuvent également être exportées sous forme de fichiers GPX séparés pour une utilisation dans des applications de cartographie