Skip to main content

Progression Endpoints

Endpoints for training analysis, fatigue tracking, and progression recommendations.


Get Progression Analysis

GET /api/progression

Returns comprehensive training analysis including fatigue, plateaus, and recommendations.

Query Parameters

ParameterTypeDefaultDescription
exerciseIdstring-Filter to specific exercise
daysnumber14Analysis time window

Response

{
"fatigue": {
"score": 5,
"level": "elevated",
"components": {
"rpeCreep": 1.5,
"performanceDrop": 1,
"recoveryDebt": 1.5,
"volumeLoad": 0.5,
"streak": 0.5
},
"message": "Fatigue is elevated. Consider reducing volume.",
"recommendations": [
"Take an extra rest day this week",
"Focus on sleep quality"
]
},
"exercises": {
"readyToProgress": [
{
"exerciseId": "ex123",
"name": "Barbell Bench Press",
"currentWeight": 185,
"suggestedWeight": 190,
"reason": "Hit all reps at RPE 7 for 3 sessions"
}
],
"plateaued": [
{
"exerciseId": "ex456",
"name": "Barbell Squat",
"stuckAt": 225,
"sessionCount": 5,
"suggestions": [
"Try a different rep range (5x5)",
"Add pause reps",
"Consider a deload week"
]
}
],
"needsAttention": [
{
"exerciseId": "ex789",
"name": "Overhead Press",
"issue": "RPE consistently at 9+",
"suggestion": "Reduce weight by 5-10%"
}
]
},
"recovery": {
"avgSleep": 7.2,
"avgEnergy": 3.8,
"avgSoreness": 2.5,
"trend": "stable"
},
"sessions": {
"count": 8,
"avgDuration": 72,
"avgRpe": 7.3,
"totalVolume": 125000
}
}

Get Training Status

GET /api/training/status

Returns current fatigue score and deload status.

Response

{
"fatigue": {
"score": 5,
"level": "elevated",
"color": "orange"
},
"deload": {
"isActive": false,
"isRecommended": true,
"reason": "Elevated fatigue for 5+ days",
"type": null,
"daysRemaining": null
},
"lastWorkout": "2024-12-21",
"streak": 5
}

Trigger Deload

POST /api/training/status

Manually start or end a deload period.

Request Body (Start Deload)

{
"action": "start",
"type": "volume",
"days": 7
}

Deload Types

TypeVolumeIntensityDescription
volume60%100%Fewer sets, same weight
intensity70%85%Fewer sets, lighter weight
full_rest0%0%Complete rest

Response

{
"deload": {
"id": "deload123",
"type": "volume",
"startDate": "2024-12-22",
"endDate": "2024-12-29",
"trigger": "manual",
"volumeModifier": 0.6,
"intensityModifier": 1.0
}
}

Request Body (End Deload)

{
"action": "end"
}

Get Weight Suggestion

GET /api/training/suggest

Returns suggested weight for an exercise based on history and current status.

Query Parameters

ParameterTypeDescription
exerciseIdstringExercise to get suggestion for

Response

{
"exercise": {
"id": "ex123",
"name": "Barbell Bench Press"
},
"suggestion": {
"weight": 185,
"reps": "6-8",
"rpe": 7,
"notes": "Based on last session performance"
},
"lastPerformance": {
"weight": 185,
"reps": 8,
"rpe": 7,
"date": "2024-12-20"
},
"warmupSets": [
{ "weight": 95, "reps": 10, "note": "50% - empty feel" },
{ "weight": 135, "reps": 6, "note": "70% - groove" },
{ "weight": 160, "reps": 3, "note": "85% - prime" }
],
"modifiers": {
"fatigueAdjustment": 0,
"deloadAdjustment": 0,
"progressionReady": false
}
}

Fatigue Calculation

The fatigue score (0-10) is calculated from multiple factors:

ComponentRangeCalculation
RPE Creep0-2Upward RPE trend over sessions
Performance Drop0-2Average RPE above target
Recovery Debt0-3Sleep, energy, soreness metrics
Volume Load0-2Volume spike vs 4-week baseline
Streak Score0-15+ consecutive training days

Fatigue Levels

ScoreLevelColorAction
0-2FreshGreenTrain hard
3-4NormalYellowNormal training
5-6ElevatedOrangeMonitor closely
7-8HighRedReduce volume
9-10CriticalRedRest recommended

Progression Gates

Before allowing weight increase, all gates must pass:

  1. Fatigue Gate - Score must be < 7
  2. Performance Gate - Hit target reps for 2+ sessions
  3. RPE Gate - Average RPE below threshold (8 for compound, 7 for isolation)
  4. Recovery Gate - Adequate sleep and energy

If any gate fails, progression is blocked and alternatives are suggested.