Rate a muscle
Records feedback for one muscle in one session, the input to next week’s set progression. Soreness (asked before the muscle’s first exercise) is how it recovered since it was last trained; pump, joint pain, and workload are asked after its last exercise. Each is the index of an answer in the library’s feedbackScales.
/api/training/mesocycles/{id}/feedback__Secure-better-auth.session_tokenAPI key · cookierequiredBetter Auth session. Signing in (Google or email magic link) sets an HttpOnly session cookie that scopes every request to that account. The web app and CLI use this; agents use the OAuth 2.1 flow of the MCP server.
AuthorizationBearer token · headerrequiredPersonal API key sent as Authorization: Bearer skcal_…. Create and scope keys in the app under your profile → API keys. Keys default to full access; a scoped key is limited to its granted resource:action permissions and cannot manage other keys.
idstringrequiredIdentifier of the mesocycle, set, slot, or custom exercise the path names.
application/jsonThe feedback.
weekintegerrequiredWeek the feedback is for.
dayintegerrequiredDay number.
musclestringrequiredMuscle key trained that day.
sorenessinteger | null0 never got sore, 1 healed a while ago, 2 healed just on time, 3 still sore.
pumpinteger | null0 low, 1 moderate, 2 amazing.
jointPaininteger | null0 none, 1 low, 2 moderate, 3 a lot.
workloadinteger | null0 not enough, 1 just right, 2 pushed my limits, 3 too much.
The feedback was saved.
objectThe request body or parameters failed validation.
errorstringrequiredHuman-readable failure reason.
detailstringOptional extra context, present on upstream failures.
No matching resource owned by the caller.
errorstringrequiredHuman-readable failure reason.
detailstringOptional extra context, present on upstream failures.