Every serious lifter knows the difference between a warm-up set and a working set. Your training app should too.
With Program Schema v1.6, coaches and program creators can now specify set intent directly in JSON files. When athletes import your program, warm-up sets are automatically excluded from effective volume — and failure sets get the 1.5x multiplier they deserve.
No manual tagging. No forgotten flags. Accurate analytics from the first session.
What's new in v1.6
Two new fields in the Set object:
isWarmUp: true— Marks a set as a warm-up. Excluded from Effective Volume calculations.toFailure: true— Marks a set as taken to failure. Receives a 1.5x volume multiplier in Strain Score.
That's it. Two boolean fields that solve a persistent problem: programs importing with inaccurate volume data because the app couldn't distinguish between warm-up ramps and working sets.
Why set intent matters for analytics
Consider a typical bench press prescription:
{
"name": "Bench Press",
"sets": [
{ "reps": 10, "suggestedWeight": 40, "isWarmUp": true },
{ "reps": 5, "suggestedWeight": 60, "isWarmUp": true },
{ "reps": 5, "suggestedWeight": 80 },
{ "reps": 5, "suggestedWeight": 80 },
{ "reps": 5, "suggestedWeight": 80, "toFailure": true }
]
}
Without set intent markers, that's 30 reps of volume counted equally. With v1.6:
- Warm-up sets (40kg × 10, 60kg × 5) → 0 effective volume
- Working sets (80kg × 5 × 2) → 800kg effective volume
- Failure set (80kg × 5 × 1.5) → 600kg effective volume
Total Effective Volume: 1,400kg — not the misleading 2,100kg a naive calculation would produce.
This matters for progressive overload tracking. If warm-ups pollute your volume data, you can't trust week-over-week comparisons. The numbers lie.
How it works in the app
When you import a v1.6 program:
- Warm-up sets display an orange "W" badge with orange-tinted styling
- Failure sets display a bolt icon (⚡)
- When logging, the toggles are pre-filled from the program
- Athletes can still override flags when actually logging the set
The program specifies intent. The athlete confirms reality. Analytics stay honest.
For coaches: distribute smarter programs
If you're distributing programs to athletes, v1.6 changes what you can deliver.
Previously, you'd export a program and hope athletes remembered to tag their warm-ups. Now you encode that information directly:
{
"version": 1.6,
"collectionName": "Strength Block - Phase 1",
"author": "Your Name",
"workouts": [
{
"workoutName": "Squat Day",
"restDefault": 180,
"exercises": [
{
"name": "Back Squat",
"capabilities": ["weight", "reps"],
"muscleGroups": {
"primary": { "Legs": ["Quads", "Glutes"] },
"secondary": { "Core": ["Abs"] }
},
"sets": [
{ "reps": 8, "suggestedWeight": 60, "isWarmUp": true },
{ "reps": 5, "suggestedWeight": 80, "isWarmUp": true },
{ "reps": 3, "suggestedWeight": 100, "isWarmUp": true },
{ "reps": 3, "suggestedWeight": 120 },
{ "reps": 3, "suggestedWeight": 120 },
{ "reps": 3, "suggestedWeight": 120, "toFailure": true }
]
}
]
}
]
}
Share via email, cloud storage, or direct link. No server required. Athletes import and their analytics work correctly from day one.
For AI: generate valid programs instantly
This is where it gets useful.
We've published our complete schema at intrvl.app/llms.txt — an LLM-friendly reference that ChatGPT, Claude, or any AI can use to generate valid Intrvl programs.
Ask your AI to build a 4-week hypertrophy block with proper warm-up progressions and AMRAP finishers. It generates valid JSON with set intent markers. Import directly into Intrvl. Train.
The schema includes:
- All 10 capability combinations (weighted, bodyweight, duration, banded, loaded carries)
- Hierarchical muscle group definitions
- Three complete program examples
- Set intent marker documentation
No manual JSON editing. No validation errors. AI-generated programs that respect how you actually train.
Backwards compatibility
Version 1.6 is fully backwards compatible with v1.0 through v1.5. Existing programs continue to work — sets without intent markers default to working sets, exactly as before.
Upgrade your programs when you're ready. Or don't. Both work.
The complete capability set
For reference, v1.6 supports these exercise types through the capabilities system:
| Type | Capabilities | Example |
|---|---|---|
| Weighted | ["weight", "reps"] |
Bench Press |
| Bodyweight | ["reps", "bodyweightVolume"] |
Pull-ups |
| Weighted Bodyweight | ["weight", "reps", "bodyweightVolume"] |
Weighted Dips |
| Loaded Carry | ["weight", "distance"] |
Farmer's Walk |
| Timed | ["duration"] |
Plank |
| Banded | ["band", "reps"] |
Band Face Pulls |
| Cardio | ["distance", "duration"] |
Running |
Each works with the new set intent markers. A warm-up plank hold. A farmer's walk to failure. The schema handles it.
Start using v1.6
For coaches:
- Update your programs to
"version": 1.6 - Add
"isWarmUp": trueto warm-up sets - Add
"toFailure": trueto failure/AMRAP sets - Share with athletes
For AI generation:
- Point your LLM to intrvl.app/llms.txt
- Describe your program requirements
- Import the generated JSON
For developers: Full specification at intrvl.app/integrate
One payment. Lifetime access. 14-day free trial to see how set intent markers improve your tracking.
Time every interval. Track every lift. Know what works.