<!--
{
  "availability" : [
    "iOS: 17.0 -",
    "iPadOS: 17.0 -",
    "macCatalyst: 17.0 -",
    "watchOS: 10.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "WorkoutKit",
  "identifier" : "/documentation/WorkoutKit",
  "metadataVersion" : "0.1.0",
  "role" : "Framework",
  "symbol" : {
    "kind" : "Framework",
    "modules" : [
      "WorkoutKit"
    ],
    "preciseIdentifier" : "WorkoutKit"
  },
  "title" : "WorkoutKit"
}
-->

# WorkoutKit

Create, preview, and sync workout compositions to the Workout app.

## Overview

The WorkoutKit framework provides models and utilities for creating and previewing workouts in your iOS and watchOS apps, and for syncing scheduled workouts to the Workout app on Apple Watch. The framework supports the following types of workouts:

- term ``doc://com.apple.workoutkit/documentation/WorkoutKit/CustomWorkout``: A structured interval workout with a series of steps containing custom goals and alerts
- term ``doc://com.apple.workoutkit/documentation/WorkoutKit/SingleGoalWorkout``: A workout with a single goal, such as distance, energy, or time
- term ``doc://com.apple.workoutkit/documentation/WorkoutKit/PacerWorkout``: A workout with distance and time goals
- term ``doc://com.apple.workoutkit/documentation/WorkoutKit/SwimBikeRunWorkout``: A workout that allows triathletes to seamlessly transition between swim, bike, and run activities

You define a workout by initializing one of these workout types. Then you use the workout to create a [`WorkoutPlan`](/documentation/WorkoutKit/WorkoutPlan), which provides methods for previewing, syncing, or exporting the plan. To open the plan in Workout on Apple Watch, call [`openInWorkoutApp()`](/documentation/WorkoutKit/WorkoutPlan/openInWorkoutApp()). To export the plan, call the `dataRepresentation(as:)` method.

You can also use WorkoutKit to create and maintain a workout schedule and, with the user’s permission, sync scheduled compositions to Apple Watch. These compositions appear in a dedicated space in the Workout app and include your app’s icon and name.

Before you can schedule a workout, you must ask for permission. Get the shared [`WorkoutScheduler`](/documentation/WorkoutKit/WorkoutScheduler) instance, and call its [`requestAuthorization()`](/documentation/WorkoutKit/WorkoutScheduler/requestAuthorization()) method. Then call the [`schedule(_:at:)`](/documentation/WorkoutKit/WorkoutScheduler/schedule(_:at:)) method to schedule workouts.

To access health data for the workout, see the <doc://com.apple.documentation/documentation/HealthKit> framework.

## Topics

### Essentials

[Customizing workouts with WorkoutKit](/documentation/WorkoutKit/customizing-workouts-with-workoutkit)

Create, preview, and sync workouts for use in the Workout app on Apple Watch.

### Common workouts

[`SingleGoalWorkout`](/documentation/WorkoutKit/SingleGoalWorkout)

A workout with a single goal.

[`PacerWorkout`](/documentation/WorkoutKit/PacerWorkout)

A workout in which a person covers a specific distance in a given time.

[`SwimBikeRunWorkout`](/documentation/WorkoutKit/SwimBikeRunWorkout)

A workout for multisport activities that include running, biking, and swimming.

### Custom interval workouts

[`CustomWorkout`](/documentation/WorkoutKit/CustomWorkout)

A workout that includes a repeating series of work and recovery steps.

[`WorkoutStep`](/documentation/WorkoutKit/WorkoutStep)

A step in a workout.

[`IntervalBlock`](/documentation/WorkoutKit/IntervalBlock)

Blocks of work and recovery steps that repeat in a custom workout.

[`IntervalStep`](/documentation/WorkoutKit/IntervalStep)

An interval that represents a work or recovery step in a workout.

[`WorkoutGoal`](/documentation/WorkoutKit/WorkoutGoal)

A value that specifies the goal for a workout.

[`WorkoutAlert`](/documentation/WorkoutKit/WorkoutAlert)

An alert that notifies the user of significant events during a workout.

### Workout plans and schedules

[`WorkoutPlan`](/documentation/WorkoutKit/WorkoutPlan)

A wrapper around a workout object that your app can use to open the object in Workout or schedule it for later.

[`ScheduledWorkoutPlan`](/documentation/WorkoutKit/ScheduledWorkoutPlan)

A wrapper around a workout plan that your app can use to schedule the workout plan.

[`WorkoutScheduler`](/documentation/WorkoutKit/WorkoutScheduler)

An object for scheduling and managing workouts.

### Errors

[`StateError`](/documentation/WorkoutKit/StateError)

An error that occurs while previewing a workout composition.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)
