Skip to content

Examples

This page showcases real-world examples of workouts represented in the Structured Workout Format.

Basic Examples

Simple Steady-State Workout

A basic 30-minute steady ride at moderate intensity:

{
  "title": "Easy 30-Minute Ride",
  "description": "Comfortable aerobic pace",
  "content": [
    {
      "type": "interval",
      "volume": {
        "type": "constant",
        "quantity": "duration",
        "value": {
          "reference": "absolute",
          "value": 1800
        }
      },
      "intensity": {
        "type": "constant",
        "quantity": "power",
        "value": {
          "reference": "parameter",
          "value": 0.65,
          "parameter": "FTP"
        }
      }
    }
  ]
}

Basic Interval Session

4x4 minute intervals with 2-minute recovery:

{
  "title": "4x4 Threshold Intervals",
  "description": "Four 4-minute efforts at threshold power",
  "content": [
    {
      "type": "section",
      "name": "warm up", 
      "content": [
        {
          "type": "interval",
          "volume": {
            "type": "constant",
            "quantity": "duration",
            "value": {
              "reference": "absolute",
              "value": 900
            }
          },
          "intensity": {
            "type": "constant",
            "quantity": "power",
            "value": {
              "reference": "parameter",
              "value": 0.6,
              "parameter": "FTP"
            }
          }
        }
      ]
    },
    {
      "type": "section",
      "name": "main set",
      "content": [
        {
          "type": "repeat",
          "count": {
            "type": "constant",
            "quantity": "number",
            "value": {
              "reference": "absolute",
              "value": 4
            }
          },
          "content": [
            {
              "type": "interval",
              "volume": {
                "type": "constant",
                "quantity": "duration",
                "value": {
                  "reference": "absolute",
                  "value": 240
                }
              },
              "intensity": {
                "type": "constant",
                "quantity": "power",
                "value": {
                  "reference": "parameter",
                  "value": 0.95,
                  "parameter": "FTP"
                }
              }
            },
            {
              "type": "interval",
              "volume": {
                "type": "constant",
                "quantity": "duration",
                "value": {
                  "reference": "absolute",
                  "value": 120
                }
              },
              "intensity": {
                "type": "constant",
                "quantity": "power",
                "value": {
                  "reference": "parameter",
                  "value": 0.5,
                  "parameter": "FTP"
                }
              }
            }
          ]
        }
      ]
    },
    {
      "type": "section",
      "name": "cool down",
      "content": [
        {
          "type": "interval",
          "volume": {
            "type": "constant",
            "quantity": "duration",
            "value": {
              "reference": "absolute",
              "value": 600
            }
          },
          "intensity": {
            "type": "constant",
            "quantity": "power",
            "value": {
              "reference": "parameter",
              "value": 0.5,
              "parameter": "FTP"
            }
          }
        }
      ]
    }
  ]
}

Intermediate Examples

Progressive Intervals with Ramps

Intervals that build in intensity:

{
  "title": "Progressive Build Intervals",
  "description": "3x8 minute intervals with progressive power",
  "content": [
    {
      "type": "section", 
      "name": "warm up",
      "content": [
        {
          "type": "interval",
          "volume": {
            "type": "constant",
            "quantity": "duration",
            "value": {
              "reference": "absolute",
              "value": 1200
            }
          },
          "intensity": {
            "type": "ramp",
            "quantity": "power",
            "start": {
              "reference": "parameter",
              "value": 0.5,
              "parameter": "FTP"
            },
            "end": {
              "reference": "parameter",
              "value": 0.7,
              "parameter": "FTP"
            }
          }
        }
      ]
    },
    {
      "type": "section",
      "name": "main set", 
      "content": [
        {
          "type": "repeat",
          "count": {
            "type": "constant",
            "quantity": "number",
            "value": {
              "reference": "absolute",
              "value": 3
            }
          },
          "content": [
            {
              "type": "interval",
              "volume": {
                "type": "constant",
                "quantity": "duration",
                "value": {
                  "reference": "absolute",
                  "value": 480
                }
              },
              "intensity": {
                "type": "ramp",
                "quantity": "power",
                "start": {
                  "reference": "parameter",
                  "value": 0.75,
                  "parameter": "FTP"
                },
                "end": {
                  "reference": "parameter",
                  "value": 1.05,
                  "parameter": "FTP"
                }
              }
            },
            {
              "type": "interval",
              "volume": {
                "type": "constant",
                "quantity": "duration",
                "value": {
                  "reference": "absolute",
                  "value": 240
                }
              },
              "intensity": {
                "type": "constant",
                "quantity": "power",
                "value": {
                  "reference": "parameter",
                  "value": 0.6,
                  "parameter": "FTP"
                }
              }
            }
          ]
        }
      ]
    }
  ]
}

Range-Based Training

Using power ranges instead of fixed targets:

{
  "title": "Sweet Spot Range Session", 
  "description": "Maintain power within sweet spot range",
  "content": [
    {
      "type": "section",
      "name": "main set",
      "content": [
        {
          "type": "repeat",
          "count": {
            "type": "constant",
            "quantity": "number",
            "value": {
              "reference": "absolute",
              "value": 3
            }
          },
          "content": [
            {
              "type": "interval", 
              "volume": {
                "type": "constant",
                "quantity": "duration",
                "value": {
                  "reference": "absolute",
                  "value": 1200
                }
              },
              "intensity": {
                "type": "range",
                "quantity": "power",
                "min": {
                  "reference": "parameter",
                  "value": 0.84,
                  "parameter": "FTP"
                },
                "max": {
                  "reference": "parameter",
                  "value": 0.97,
                  "parameter": "FTP"
                }
              }
            },
            {
              "type": "interval",
              "volume": {
                "type": "constant",
                "quantity": "duration",
                "value": {
                  "reference": "absolute",
                  "value": 300
                }
              },
              "intensity": {
                "type": "constant",
                "quantity": "power",
                "value": {
                  "reference": "parameter",
                  "value": 0.6,
                  "parameter": "FTP"
                }
              }
            }
          ]
        }
      ]
    }
  ]
}

Advanced Examples

Complex Pyramid Session

A workout with nested sections and varying intervals:

{
  "title": "Power Pyramid",
  "description": "Complex pyramid structure with multiple intensity zones",
  "content": [
    {
      "type": "section",
      "name": "warm up",
      "content": [
        {
          "type": "interval",
          "volume": {
            "type": "constant",
            "quantity": "duration",
            "value": {
              "reference": "absolute",
              "value": 600
            }
          },
          "intensity": {
            "type": "constant",
            "quantity": "power",
            "value": {
              "reference": "parameter",
              "value": 0.6,
              "parameter": "FTP"
            }
          }
        },
        {
          "type": "repeat", 
          "count": {
            "type": "constant",
            "quantity": "number",
            "value": {
              "reference": "absolute",
              "value": 3
            }
          },
          "content": [
            {
              "type": "interval",
              "volume": {
                "type": "constant",
                "quantity": "duration",
                "value": {
                  "reference": "absolute",
                  "value": 60
                }
              },
              "intensity": {
                "type": "constant",
                "quantity": "power",
                "value": {
                  "reference": "parameter",
                  "value": 0.9,
                  "parameter": "FTP"
                }
              }
            },
            {
              "type": "interval",
              "volume": {
                "type": "constant",
                "quantity": "duration",
                "value": {
                  "reference": "absolute",
                  "value": 120
                }
              },
              "intensity": {
                "type": "constant",
                "quantity": "power",
                "value": {
                  "reference": "parameter",
                  "value": 0.6,
                  "parameter": "FTP"
                }
              }
            }
          ]
        }
      ]
    },
    {
      "type": "section",
      "name": "main set", 
      "content": [
        {
          "type": "instruction",
          "text": "Focus on smooth power delivery throughout the pyramid"
        },
        {
          "type": "section",
          "name": "pyramid up",
          "content": [
            {
              "type": "interval",
              "volume": {
                "type": "constant",
                "quantity": "duration",
                "value": {
                  "reference": "absolute",
                  "value": 180
                }
              },
              "intensity": {
                "type": "constant",
                "quantity": "power",
                "value": {
                  "reference": "parameter",
                  "value": 0.85,
                  "parameter": "FTP"
                }
              }
            },
            {
              "type": "interval",
              "volume": {
                "type": "constant",
                "quantity": "duration",
                "value": {
                  "reference": "absolute",
                  "value": 120
                }
              },
              "intensity": {
                "type": "constant",
                "quantity": "power",
                "value": {
                  "reference": "parameter",
                  "value": 0.6,
                  "parameter": "FTP"
                }
              }
            },
            {
              "type": "interval", 
              "volume": {
                "type": "constant",
                "quantity": "duration",
                "value": {
                  "reference": "absolute",
                  "value": 240
                }
              },
              "intensity": {
                "type": "constant",
                "quantity": "power",
                "value": {
                  "reference": "parameter",
                  "value": 0.9,
                  "parameter": "FTP"
                }
              }
            },
            {
              "type": "interval",
              "volume": {
                "type": "constant",
                "quantity": "duration",
                "value": {
                  "reference": "absolute",
                  "value": 120
                }
              },
              "intensity": {
                "type": "constant",
                "quantity": "power",
                "value": {
                  "reference": "parameter",
                  "value": 0.6,
                  "parameter": "FTP"
                }
              }
            },
            {
              "type": "interval",
              "volume": {
                "type": "constant",
                "quantity": "duration",
                "value": {
                  "reference": "absolute",
                  "value": 300
                }
              },
              "intensity": {
                "type": "constant",
                "quantity": "power",
                "value": {
                  "reference": "parameter",
                  "value": 0.95,
                  "parameter": "FTP"
                }
              }
            }
          ]
        },
        {
          "type": "interval",
          "volume": {
            "type": "constant",
            "quantity": "duration",
            "value": {
              "reference": "absolute",
              "value": 300
            }
          },
          "intensity": {
            "type": "constant",
            "quantity": "power",
            "value": {
              "reference": "parameter",
              "value": 0.6,
              "parameter": "FTP"
            }
          }
        },
        {
          "type": "section",
          "name": "pyramid down", 
          "content": [
            {
              "type": "interval",
              "volume": {
                "type": "constant",
                "quantity": "duration",
                "value": {
                  "reference": "absolute",
                  "value": 240
                }
              },
              "intensity": {
                "type": "constant",
                "quantity": "power",
                "value": {
                  "reference": "parameter",
                  "value": 0.9,
                  "parameter": "FTP"
                }
              }
            },
            {
              "type": "interval",
              "volume": {
                "type": "constant",
                "quantity": "duration",
                "value": {
                  "reference": "absolute",
                  "value": 120
                }
              },
              "intensity": {
                "type": "constant",
                "quantity": "power",
                "value": {
                  "reference": "parameter",
                  "value": 0.6,
                  "parameter": "FTP"
                }
              }
            },
            {
              "type": "interval",
              "volume": {
                "type": "constant",
                "quantity": "duration",
                "value": {
                  "reference": "absolute",
                  "value": 180
                }
              },
              "intensity": {
                "type": "constant",
                "quantity": "power",
                "value": {
                  "reference": "parameter",
                  "value": 0.85,
                  "parameter": "FTP"
                }
              }
            }
          ]
        }
      ]
    }
  ]
}

Running Workout with Speed Targets

A running workout using speed instead of power:

{
  "title": "5K Pace Intervals",
  "description": "Running intervals at 5K race pace",
  "content": [
    {
      "type": "section",
      "name": "warm up",
      "content": [
        {
          "type": "interval",
          "volume": {
            "type": "constant",
            "quantity": "duration",
            "value": {
              "reference": "absolute",
              "value": 900
            }
          },
          "intensity": {
            "type": "constant",
            "quantity": "speed",
            "value": {
              "reference": "absolute",
              "value": 3.0
            }
          }
        },
        {
          "type": "instruction",
          "text": "Easy jog, focus on warming up legs and getting ready"
        }
      ]
    },
    {
      "type": "section", 
      "name": "main set",
      "content": [
        {
          "type": "repeat",
          "count": {
            "type": "constant",
            "quantity": "number",
            "value": {
              "reference": "absolute",
              "value": 6
            }
          },
          "content": [
            {
              "type": "interval",
              "volume": {
                "type": "constant",
                "quantity": "distance",
                "value": {
                  "reference": "absolute",
                  "value": 800
                }
              },
              "intensity": {
                "type": "range",
                "quantity": "speed",
                "min": {
                  "reference": "parameter",
                  "value": 0.98,
                  "parameter": "5K_PACE"
                },
                "max": {
                  "reference": "parameter",
                  "value": 1.02,
                  "parameter": "5K_PACE"
                }
              }
            },
            {
              "type": "interval",
              "volume": {
                "type": "constant",
                "quantity": "duration",
                "value": {
                  "reference": "absolute",
                  "value": 120
                }
              },
              "intensity": {
                "type": "constant",
                "quantity": "speed",
                "value": {
                  "reference": "absolute",
                  "value": 2.5
                }
              }
            }
          ]
        }
      ]
    },
    {
      "type": "section",
      "name": "cool down",
      "content": [
        {
          "type": "interval",
          "volume": {
            "type": "constant",
            "quantity": "duration",
            "value": {
              "reference": "absolute",
              "value": 600
            }
          },
          "intensity": {
            "type": "ramp",
            "quantity": "speed",
            "start": {
              "reference": "absolute",
              "value": 2.8
            },
            "end": {
              "reference": "absolute",
              "value": 2.0
            }
          }
        }
      ]
    }
  ]
}

Flexible Workout with Options

A workout that provides flexibility in execution:

{
  "title": "Flexible Threshold Session",
  "description": "Threshold work with flexible interval count based on feel",
  "content": [
    {
      "type": "section",
      "name": "warm up", 
      "content": [
        {
          "type": "interval",
          "volume": {
            "type": "range",
            "quantity": "duration",
            "min": {
              "reference": "absolute",
              "value": 900
            },
            "max": {
              "reference": "absolute",
              "value": 1200
            }
          },
          "intensity": {
            "type": "constant",
            "quantity": "power",
            "value": {
              "reference": "parameter",
              "value": 0.65,
              "parameter": "FTP"
            }
          }
        }
      ]
    },
    {
      "type": "section",
      "name": "main set",
      "content": [
        {
          "type": "instruction", 
          "text": "Complete 4-6 intervals based on how you feel today"
        },
        {
          "type": "repeat",
          "count": {
            "type": "range",
            "quantity": "number",
            "min": {
              "reference": "absolute",
              "value": 4
            },
            "max": {
              "reference": "absolute",
              "value": 6
            }
          },
          "content": [
            {
              "type": "interval",
              "volume": {
                "type": "constant",
                "quantity": "duration",
                "value": {
                  "reference": "absolute",
                  "value": 480
                }
              },
              "intensity": {
                "type": "range",
                "quantity": "power",
                "min": {
                  "reference": "parameter",
                  "value": 0.93,
                  "parameter": "FTP"
                },
                "max": {
                  "reference": "parameter",
                  "value": 0.97,
                  "parameter": "FTP"
                }
              }
            },
            {
              "type": "interval",
              "volume": {
                "type": "range",
                "quantity": "duration",
                "min": {
                  "reference": "absolute",
                  "value": 180
                },
                "max": {
                  "reference": "absolute",
                  "value": 240
                }
              },
              "intensity": {
                "type": "constant",
                "quantity": "power",
                "value": {
                  "reference": "parameter",
                  "value": 0.6,
                  "parameter": "FTP"
                }
              }
            }
          ]
        }
      ]
    }
  ]
}

Sport-Specific Examples

Swimming Workout

{
  "title": "1500m Swim Set",
  "description": "Distance-based swimming workout",
  "content": [
    {
      "type": "section",
      "name": "warm up",
      "content": [
        {
          "type": "interval",
          "volume": {
            "type": "constant",
            "quantity": "distance",
            "value": {
              "reference": "absolute",
              "value": 400
            }
          },
          "intensity": {
            "type": "constant",
            "quantity": "speed",
            "value": {
              "reference": "absolute",
              "value": 1.2
            }
          }
        }
      ]
    },
    {
      "type": "section", 
      "name": "main set",
      "content": [
        {
          "type": "repeat",
          "count": {
            "type": "constant",
            "quantity": "number",
            "value": {
              "reference": "absolute",
              "value": 6
            }
          },
          "content": [
            {
              "type": "interval",
              "volume": {
                "type": "constant",
                "quantity": "distance",
                "value": {
                  "reference": "absolute",
                  "value": 100
                }
              },
              "intensity": {
                "type": "constant",
                "quantity": "speed",
                "value": {
                  "reference": "parameter",
                  "value": 1.0,
                  "parameter": "T_PACE"
                }
              }
            },
            {
              "type": "interval", 
              "volume": {
                "type": "constant",
                "quantity": "duration",
                "value": {
                  "reference": "absolute",
                  "value": 20
                }
              },
              "intensity": {
                "type": "constant",
                "quantity": "speed",
                "value": {
                  "reference": "absolute",
                  "value": 0
                }
              }
            }
          ]
        }
      ]
    }
  ]
}

Open-Ended Long Run

{
  "title": "Long Run", 
  "description": "Aerobic base building run with flexible duration",
  "content": [
    {
      "type": "instruction",
      "text": "Run for 90-120 minutes at comfortable aerobic pace"
    },
    {
      "type": "interval",
      "volume": {
        "type": "range",
        "quantity": "duration",
        "min": {
          "reference": "absolute",
          "value": 5400
        },
        "max": {
          "reference": "absolute",
          "value": 7200
        }
      },
      "intensity": {
        "type": "range",
        "quantity": "speed",
        "min": {
          "reference": "parameter",
          "value": 0.95,
          "parameter": "AEROBIC_PACE"
        },
        "max": {
          "reference": "parameter",
          "value": 1.05,
          "parameter": "AEROBIC_PACE"
        }
      }
    }
  ]
}

Templates with Variables

FTP Test Workout Template

{
  "title": "20-Minute FTP Test",
  "description": "Standard FTP test protocol - requires ESTIMATED_FTP parameter",
  "content": [
    {
      "type": "section",
      "name": "warm up", 
      "content": [
        {
          "type": "interval",
          "volume": {
            "type": "constant",
            "quantity": "duration",
            "value": {
              "reference": "absolute",
              "value": 1200
            }
          },
          "intensity": {
            "type": "constant",
            "quantity": "power",
            "value": {
              "reference": "parameter",
              "value": 0.65,
              "parameter": "ESTIMATED_FTP"
            }
          }
        },
        {
          "type": "repeat",
          "count": {
            "type": "constant",
            "quantity": "number",
            "value": {
              "reference": "absolute",
              "value": 3
            }
          },
          "content": [
            {
              "type": "interval",
              "volume": {
                "type": "constant",
                "quantity": "duration",
                "value": {
                  "reference": "absolute",
                  "value": 60
                }
              },
              "intensity": {
                "type": "constant",
                "quantity": "power",
                "value": {
                  "reference": "parameter",
                  "value": 1.0,
                  "parameter": "ESTIMATED_FTP"
                }
              }
            },
            {
              "type": "interval", 
              "volume": {
                "type": "constant",
                "quantity": "duration",
                "value": {
                  "reference": "absolute",
                  "value": 60
                }
              },
              "intensity": {
                "type": "constant",
                "quantity": "power",
                "value": {
                  "reference": "parameter",
                  "value": 0.6,
                  "parameter": "ESTIMATED_FTP"
                }
              }
            }
          ]
        }
      ]
    },
    {
      "type": "section",
      "name": "main set",
      "content": [
        {
          "type": "instruction",
          "text": "5-minute all-out effort - establish baseline"
        },
        {
          "type": "interval",
          "volume": {
            "type": "constant",
            "quantity": "duration",
            "value": {
              "reference": "absolute",
              "value": 300
            }
          },
          "intensity": {
            "type": "range",
            "quantity": "power",
            "min": {
              "reference": "absolute",
              "value": 0
            }
          }
        },
        {
          "type": "interval",
          "volume": {
            "type": "constant",
            "quantity": "duration",
            "value": {
              "reference": "absolute",
              "value": 600
            }
          },
          "intensity": {
            "type": "constant",
            "quantity": "power",
            "value": {
              "reference": "parameter",
              "value": 0.6,
              "parameter": "ESTIMATED_FTP"
            }
          }
        },
        {
          "type": "instruction",
          "text": "20-minute maximal sustainable effort - this is your FTP test!"
        },
        {
          "type": "interval", 
          "volume": {
            "type": "constant",
            "quantity": "duration",
            "value": {
              "reference": "absolute",
              "value": 1200
            }
          },
          "intensity": {
            "type": "range",
            "quantity": "power",
            "min": {
              "reference": "absolute",
              "value": 0
            }
          }
        }
      ]
    }
  ]
}

TTE (Time-to-Exhaustion) Examples

TTE-Based Interval Training

Using time-to-exhaustion references for more physiologically meaningful targets:

{
  "title": "TTE Interval Session",
  "description": "Intervals based on sustainable durations",
  "content": [
    {
      "type": "section",
      "name": "main set",
      "content": [
        {
          "type": "repeat",
          "count": {
            "type": "constant",
            "quantity": "number",
            "value": {
              "reference": "absolute",
              "value": 4
            }
          },
          "content": [
            {
              "type": "interval",
              "volume": {
                "type": "constant",
                "quantity": "duration",
                "value": {
                  "reference": "absolute",
                  "value": 300
                }
              },
              "intensity": {
                "type": "constant",
                "quantity": "power",
                "value": {
                  "reference": "tte",
                  "value": 600
                }
              }
            },
            {
              "type": "interval",
              "volume": {
                "type": "constant",
                "quantity": "duration",
                "value": {
                  "reference": "absolute",
                  "value": 180
                }
              },
              "intensity": {
                "type": "constant",
                "quantity": "power",
                "value": {
                  "reference": "tte",
                  "value": 3600
                }
              }
            }
          ]
        }
      ]
    }
  ]
}

Mixed Reference Types

Combining different reference types in one workout:

{
  "title": "Mixed Reference Workout",
  "description": "Demonstrates absolute, parameter, and TTE references",
  "content": [
    {
      "type": "section",
      "name": "warm up",
      "content": [
        {
          "type": "interval",
          "volume": {
            "type": "constant",
            "quantity": "duration",
            "value": {
              "reference": "absolute",
              "value": 600
            }
          },
          "intensity": {
            "type": "constant",
            "quantity": "power",
            "value": {
              "reference": "absolute",
              "value": 150
            }
          }
        }
      ]
    },
    {
      "type": "section",
      "name": "main set",
      "content": [
        {
          "type": "repeat",
          "count": {
            "type": "constant",
            "quantity": "number",
            "value": {
              "reference": "absolute",
              "value": 3
            }
          },
          "content": [
            {
              "type": "interval",
              "volume": {
                "type": "constant",
                "quantity": "duration",
                "value": {
                  "reference": "absolute",
                  "value": 240
                }
              },
              "intensity": {
                "type": "range",
                "quantity": "power",
                "min": {
                  "reference": "tte",
                  "value": 1200
                },
                "max": {
                  "reference": "parameter",
                  "value": 0.95,
                  "parameter": "FTP"
                }
              }
            },
            {
              "type": "interval",
              "volume": {
                "type": "constant",
                "quantity": "duration",
                "value": {
                  "reference": "absolute",
                  "value": 180
                }
              },
              "intensity": {
                "type": "constant",
                "quantity": "power",
                "value": {
                  "reference": "absolute",
                  "value": 120
                }
              }
            }
          ]
        }
      ]
    }
  ]
}

These examples demonstrate the flexibility and power of the Structured Workout Format. From simple steady-state efforts to complex multi-phase sessions with various reference types, SWF can represent any workout structure while maintaining clarity and precision.

Next Steps