Overview (pre-release)
⚠️ Pre-Release / Under Construction
This page is currently under active development and is provided in a pre-release state.
Content may be incomplete, outdated, or inaccurate, and details may change without notice as the implementation evolves.
Please use this documentation for early reference only, and avoid relying on it for production-critical decisions until the page is marked as stable.
Planned Workouts API
The Planned Workouts API enables you to create structured workout templates and push them directly to platforms including Garmin, Wahoo, Coros and more.
What You Can Do
Create Workout Templates: Design reusable workouts with detailed steps, intervals, and targets
Push to Devices: Send workouts directly to user devices through their connected fitness platforms
Manage Schedules: Schedule workouts for specific dates and manage user training calendars
Fetch User Workouts: Retrieve both Terra-created and provider-native workouts
Core Concepts
Workout Templates
Reusable workout definitions stored in your Terra account. Templates define:
Sport type (running, cycling, swimming, etc.)
Workout structure (warmup, intervals, cooldown)
Step durations (time, distance, lap-button, open)
Intensity targets (pace zones, heart rate zones, power zones, etc.)
Planned Workouts
Scheduled instances of workout templates pushed to user devices. When you create a planned workout:
You reference a workout template ID
Specify a user's connection ID
Set a planned date
The system pushes it to the user's device via their provider (Garmin, Wahoo, etc.)
API Endpoints
Workout Templates
POST /v2/workouts- Create a workout templateGET /v2/workouts- List all your workout templatesGET /v2/workouts/{workout_id}- Get a specific workout templateDELETE /v2/workouts/{workout_id}- Delete a workout template
Planned Workouts
POST /v2/plannedWorkouts- Create and push a planned workout to a deviceGET /v2/plannedWorkouts- Get all planned workouts for a connectionGET /v2/plannedWorkouts/{planned_workout_id}- Get a specific planned workoutGET /v2/plannedWorkouts/connection/{connection_id}/provider/{provider_workout_id}- Get by provider IDPATCH /v2/plannedWorkouts/{planned_workout_id}- Update planned workout dateDELETE /v2/plannedWorkouts/{planned_workout_id}- Delete a planned workoutDELETE /v2/plannedWorkouts/connection/{connection_id}/provider/{provider_workout_id}- Delete by provider ID
Last updated
Was this helpful?