Create saved workout
create_custom_workoutSaves a new workout to the user's own workouts ("My workouts" in the app) without putting it on the calendar — a reusable routine such as "Chest day". To also schedule it, pass the returned workout_id to create_planned_workout; to put a one-off session on a date, use create_planned_workout with an exercise list instead. Every exercise_id must come from search_exercises or create_custom_exercise — never invented. Propose the workout and get the user's agreement before calling. Not safe to blindly retry, though an identical call within two minutes returns the workout already saved instead of a second copy. Supersets and circuits are set with the superset_group label on each exercise — see that field for the rule it requires. Each exercise is measured by its own exercise_type (from search_exercises) — send the targets that type accepts. Free accounts can save a limited number of workouts from chat; a refusal for that reason says so and must not be retried.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Optional note for the whole workout, shown in the app. Max 500 characters. | |
| title | Yes | Workout name shown in the app, e.g. "Chest day". Max 60 characters. | |
| exercises | Yes | The exercises in the order they are performed — at least one. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| total | Yes | Total workouts matching the filter, which can exceed the returned list — narrow with query or type if it does. | |
| locale | Yes | ||
| warnings | No | ||
| workouts | Yes | ||
| total_sets | Yes | ||
| workout_id | Yes | The saved workout — pass it to create_planned_workout to schedule it. | |
| display_warnings | No | ||
| upcoming_sessions | Yes | How many upcoming scheduled sessions use this workout — they show any change made to it. |