Trainingen - JSON Exportformaat

Documentatie over de structuur van trainingen in JSON-exporten

Last updated: February 6, 2026

On this page

Trainingen

Trainingsgegevens omvatten al je trainingssessies die zijn vastgelegd in Apple Health, zoals hardlopen, fietsen, zwemmen, krachttraining en meer. In JSON-exporten worden trainingen opgeslagen in de array workouts.

Exportversies

Health Auto Export ondersteunt twee trainingsexportversies:

  • Versie 2 (Aanbevolen): Verbeterd formaat met meer gedetailleerde metadata en gestructureerde gegevens
  • Versie 1 (Legacy): Ouder formaat dat wordt onderhouden voor compatibiliteit met bestaande workflows

Trainingen Versie 2

Versie 2 biedt een uitgebreide structuur met optionele velden die alleen worden opgenomen wanneer gegevens beschikbaar zijn.

Basisstructuur

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

Verplichte Velden

  • id (String): Unieke identifier voor de training
  • name (String): Naam van het trainingstype (bijv. "Running", "Cycling", "Swimming")
  • start (Date): Starttijd van de training in formaat yyyy-MM-dd HH:mm:ss Z
  • end (Date): Eindtijd van de training in formaat yyyy-MM-dd HH:mm:ss Z
  • duration (Number): Duur van de training in seconden

Optionele Velden

De volgende velden worden alleen opgenomen wanneer gegevens beschikbaar zijn:

Locatie-informatie

{
  "location": "Outdoor",
  "isIndoor": false
}
  • location (String): Een van "Indoor", "Outdoor", "Pool", "Open Water"
  • isIndoor (Boolean): Of de training binnen is uitgevoerd

Energie en Intensiteit

{
  "activeEnergyBurned": {
    "qty": 350,
    "units": "kcal"
  },
  "totalEnergy": {
    "qty": 450,
    "units": "kcal"
  },
  "intensity": {
    "qty": 8.5,
    "units": "MET"
  }
}
  • activeEnergyBurned (Object): Actieve calorieën verbrand tijdens de training
  • totalEnergy (Object): Totale calorieën (actief + rustend) verbrand
  • intensity (Object): Metabool equivalent van de taak (MET)-waarde

Afstand en Snelheid

{
  "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): Totale afstand afgelegd
  • speed (Object): Huidige of gemiddelde snelheid
  • avgSpeed (Object): Gemiddelde snelheid gedurende de hele training
  • maxSpeed (Object): Maximale snelheid bereikt

Eenheden:

  • Afstand: "mi" (mijlen) of "km" (kilometers)
  • Snelheid: "mph" (mijlen per uur) of "kmph" (kilometers per uur)

Hoogte

{
  "elevationUp": {
    "qty": 500,
    "units": "ft"
  },
  "elevationDown": {
    "qty": 450,
    "units": "ft"
  }
}
  • elevationUp (Object): Totale hoogte gewonnen
  • elevationDown (Object): Totale hoogte verloren

Eenheden: "ft" (voeten) of "m" (meters)

Omgevingsgegevens

{
  "temperature": {
    "qty": 72,
    "units": "degF"
  },
  "humidity": {
    "qty": 65,
    "units": "%"
  }
}
  • temperature (Object): Omgevingstemperatuur tijdens de training
  • humidity (Object): Relatieve luchtvochtigheid percentage

Temperatuureenheden: "degF" (Fahrenheit) of "degC" (Celsius)

Zwemspecifieke Velden

{
  "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): Lengte van elke baantje
  • strokeStyle (String): Een van:
    • "Backstroke"
    • "Breaststroke"
    • "Butterfly"
    • "Freestyle"
    • "Mixed"
    • "Kickboard"
    • "Unknown"
  • swolfScore (Number): Zwemefficiëntiescore
  • salinity (String): "Fresh Water" of "Salt Water"
  • totalSwimmingStrokeCount (Object): Totaal aantal slagen
  • swimCadence (Object): Slagen per minuut

Stap- en Cadentiegegevens

{
  "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 van stapmetingen in de loop van de tijd
  • stepCadence (Object): Stappen per minuut
  • flightsClimbed (Object): Aantal trappen beklimmen

Hartslaggegevens

{
  "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): Samenvatting met min, gemiddelde en max hartslag
  • maxHeartRate (Object): Maximale hartslag tijdens de training
  • avgHeartRate (Object): Gemiddelde hartslag tijdens de training
  • heartRateData (Array): Gedetailleerde hartslagmetingen gedurende de hele training
  • heartRateRecovery (Array): Hartslagmetingen tijdens de herstelperiode

Tijdreeksgegevensarrays

Veel metrieken kunnen worden opgenomen als tijdreeksarrays wanneer "Trainingmetrieken opnemen" is ingeschakeld:

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

QuantityData-structuur:

  • date (Date): Tijdstempel van de meting
  • qty (Number): Hoeveelheidswaarde
  • units (String): Meeteenheid
  • source (String, optioneel): Gegevensbronapparaat of -app

HeartRateData-structuur:

  • date (Date): Tijdstempel van de meting
  • Min (Number): Minimale hartslag
  • Avg (Number): Gemiddelde hartslag
  • Max (Number): Maximale hartslag
  • units (String): Eenheid (meestal "bpm")
  • source (String, optioneel): Gegevensbronapparaat of -app

Routegegevens

Wanneer "Routegegevens opnemen" is ingeschakeld en de training GPS-gegevens heeft:

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

Locatievelden:

  • latitude (Number): GPS-breedtegraadcoördinaat
  • longitude (Number): GPS-lengtegraadcoördinaat
  • altitude (Number): Hoogte in meters
  • course (Number): Reisrichting in graden (0-360)
  • courseAccuracy (Number): Nauwkeurigheid van de koersmeting in graden
  • horizontalAccuracy (Number): Horizontale positienauwkeurigheid in meters
  • verticalAccuracy (Number): Verticale positienauwkeurigheid in meters
  • timestamp (Date): Tijdstip waarop de locatie is vastgelegd
  • speed (Number): Snelheid in meters per seconde
  • speedAccuracy (Number): Nauwkeurigheid van de snelheidsmeting in m/s

Metadata

{
  "metadata": {
    "customField": "value",
    "anotherField": 123
  }
}
  • metadata (Object): Aanvullende aangepaste metadata geassocieerd met de training

Trainingen Versie 1 (Legacy)

Versie 1 gebruikt een eenvoudigere structuur. Voor nieuwe exporten wordt Versie 2 aanbevolen.

Versie 1 Structuur

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

Tijdsgroepering van Trainingmetrieken

Bij gebruik van Exportversie 2 en wanneer "Trainingmetrieken opnemen" is ingeschakeld, kun je de granulariteit van tijdreeksgegevens bepalen:

  • Minuten: Groepeert trainingmetrieken per minuutintervallen
  • Seconden: Groepeert trainingmetrieken per seconde-intervallen (gedetailleerder, groter bestand)

Tips

  • Routegegevens opnemen: Schakel deze optie in om GPS-route-informatie te krijgen voor buitentrainingen
  • Trainingmetrieken opnemen: Schakel dit in om gedetailleerde tijdreeksgegevens te krijgen voor metrieken zoals hartslag, vermogen en cadans
  • Exportversie: Gebruik Versie 2 voor de meest uitgebreide gegevensstructuur
  • GPX-export: Routegegevens kunnen ook worden geëxporteerd als aparte GPX-bestanden voor gebruik in kaarttoepassingen

Gerelateerde Documentatie