Trainingseinheiten - JSON-Exportformat

Dokumentation zur Struktur von Trainingseinheiten in JSON-Exporten

Last updated: February 6, 2026

On this page

Trainingseinheiten

Trainingsdaten umfassen alle Ihre in Apple Health aufgezeichneten Trainingssitzungen, wie Laufen, Radfahren, Schwimmen, Krafttraining und mehr. In JSON-Exporten werden Trainingseinheiten im Array workouts gespeichert.

Exportversionen

Health Auto Export unterstützt zwei Workout-Exportversionen:

  • Version 2 (Empfohlen): Erweitertes Format mit detaillierteren Metadaten und strukturierten Daten
  • Version 1 (Legacy): Älteres Format, das für die Kompatibilität mit bestehenden Workflows beibehalten wird

Trainingseinheiten Version 2

Version 2 bietet eine umfassende Struktur mit optionalen Feldern, die nur enthalten sind, wenn Daten verfügbar sind.

Grundstruktur

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

Erforderliche Felder

  • id (String): Eindeutiger Bezeichner für die Trainingseinheit
  • name (String): Name des Trainingstyps (z.B. "Running", "Cycling", "Swimming")
  • start (Date): Startzeit der Trainingseinheit im Format yyyy-MM-dd HH:mm:ss Z
  • end (Date): Endzeit der Trainingseinheit im Format yyyy-MM-dd HH:mm:ss Z
  • duration (Number): Dauer der Trainingseinheit in Sekunden

Optionale Felder

Die folgenden Felder werden nur enthalten, wenn Daten verfügbar sind:

Standortinformationen

{
  "location": "Outdoor",
  "isIndoor": false
}
  • location (String): Eines von "Indoor", "Outdoor", "Pool", "Open Water"
  • isIndoor (Boolean): Ob das Training in Innenräumen durchgeführt wurde

Energie und Intensität

{
  "activeEnergyBurned": {
    "qty": 350,
    "units": "kcal"
  },
  "totalEnergy": {
    "qty": 450,
    "units": "kcal"
  },
  "intensity": {
    "qty": 8.5,
    "units": "MET"
  }
}
  • activeEnergyBurned (Object): Während des Trainings verbrannte aktive Kalorien
  • totalEnergy (Object): Verbrannte Gesamtkalorien (aktiv + Ruhe)
  • intensity (Object): Metabolisches Äquivalent der Aufgabe (MET)-Wert

Distanz und Geschwindigkeit

{
  "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): Zurückgelegte Gesamtdistanz
  • speed (Object): Aktuelle oder durchschnittliche Geschwindigkeit
  • avgSpeed (Object): Durchschnittliche Geschwindigkeit während des gesamten Trainings
  • maxSpeed (Object): Erreichte maximale Geschwindigkeit

Einheiten:

  • Distanz: "mi" (Meilen) oder "km" (Kilometer)
  • Geschwindigkeit: "mph" (Meilen pro Stunde) oder "kmph" (Kilometer pro Stunde)

Höhe

{
  "elevationUp": {
    "qty": 500,
    "units": "ft"
  },
  "elevationDown": {
    "qty": 450,
    "units": "ft"
  }
}
  • elevationUp (Object): Gesamter Höhengewinn
  • elevationDown (Object): Gesamter Höhenverlust

Einheiten: "ft" (Fuß) oder "m" (Meter)

Umgebungsdaten

{
  "temperature": {
    "qty": 72,
    "units": "degF"
  },
  "humidity": {
    "qty": 65,
    "units": "%"
  }
}
  • temperature (Object): Umgebungstemperatur während des Trainings
  • humidity (Object): Relative Luftfeuchtigkeit in Prozent

Temperatureinheiten: "degF" (Fahrenheit) oder "degC" (Celsius)

Schwimmspezifische Felder

{
  "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): Länge jeder Runde
  • strokeStyle (String): Eines von:
    • "Backstroke"
    • "Breaststroke"
    • "Butterfly"
    • "Freestyle"
    • "Mixed"
    • "Kickboard"
    • "Unknown"
  • swolfScore (Number): Schwimmeffizienz-Score
  • salinity (String): "Fresh Water" oder "Salt Water"
  • totalSwimmingStrokeCount (Object): Gesamtzahl der Schwimmschläge
  • swimCadence (Object): Schwimmschläge pro Minute

Schritt- und Kadenzdaten

{
  "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 von Schrittzählmessungen über die Zeit
  • stepCadence (Object): Schritte pro Minute
  • flightsClimbed (Object): Anzahl der gestiegenen Treppenabsätze

Herzfrequenzdaten

{
  "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): Zusammenfassung mit min, avg und max Herzfrequenz
  • maxHeartRate (Object): Maximale Herzfrequenz während des Trainings
  • avgHeartRate (Object): Durchschnittliche Herzfrequenz während des Trainings
  • heartRateData (Array): Detaillierte Herzfrequenzmessungen während des gesamten Trainings
  • heartRateRecovery (Array): Herzfrequenzmessungen während der Erholungsphase

Zeitreihen-Datenarrays

Viele Metriken können als Zeitreihen-Arrays enthalten sein, wenn "Trainingsmetriken einschließen" aktiviert ist:

{
  "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-Struktur:

  • date (Date): Zeitstempel der Messung
  • qty (Number): Mengenwert
  • units (String): Maßeinheit
  • source (String, optional): Datenquellengerät oder -app

HeartRateData-Struktur:

  • date (Date): Zeitstempel der Messung
  • Min (Number): Minimale Herzfrequenz
  • Avg (Number): Durchschnittliche Herzfrequenz
  • Max (Number): Maximale Herzfrequenz
  • units (String): Einheit (typischerweise "bpm")
  • source (String, optional): Datenquellengerät oder -app

Routendaten

Wenn "Routendaten einschließen" aktiviert ist und das Training GPS-Daten hat:

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

Standortfelder:

  • latitude (Number): GPS-Breitengradkoordinate
  • longitude (Number): GPS-Längengradkoordinate
  • altitude (Number): Höhe in Metern
  • course (Number): Fahrtrichtung in Grad (0-360)
  • courseAccuracy (Number): Genauigkeit der Kursmessung in Grad
  • horizontalAccuracy (Number): Horizontale Positionsgenauigkeit in Metern
  • verticalAccuracy (Number): Vertikale Positionsgenauigkeit in Metern
  • timestamp (Date): Zeitpunkt, zu dem der Standort aufgezeichnet wurde
  • speed (Number): Geschwindigkeit in Metern pro Sekunde
  • speedAccuracy (Number): Genauigkeit der Geschwindigkeitsmessung in m/s

Metadaten

{
  "metadata": {
    "customField": "value",
    "anotherField": 123
  }
}
  • metadata (Object): Zusätzliche benutzerdefinierte Metadaten, die dem Training zugeordnet sind

Trainingseinheiten Version 1 (Legacy)

Version 1 verwendet eine einfachere Struktur. Für neue Exporte wird Version 2 empfohlen.

Version 1 Struktur

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

Zeitgruppierung von Trainingsmetriken

Bei Verwendung von Exportversion 2 und wenn "Trainingsmetriken einschließen" aktiviert ist, können Sie die Granularität der Zeitreihendaten steuern:

  • Minuten: Gruppiert Trainingsmetriken nach Minutenintervallen
  • Sekunden: Gruppiert Trainingsmetriken nach Sekundenintervallen (detaillierter, größere Dateigröße)

Tipps

  • Routendaten einschließen: Aktivieren Sie diese Option, um GPS-Routeninformationen für Outdoor-Trainings zu erhalten
  • Trainingsmetriken einschließen: Aktivieren Sie dies, um detaillierte Zeitreihendaten für Metriken wie Herzfrequenz, Leistung und Kadenz zu erhalten
  • Exportversion: Verwenden Sie Version 2 für die umfassendste Datenstruktur
  • GPX-Export: Routendaten können auch als separate GPX-Dateien für die Verwendung in Kartierungsanwendungen exportiert werden

Verwandte Dokumentation