Finish a session
Marks the session done, logs it as a strength workout in the workout history, and plans the same day next week from this week’s results and feedback. Finishing the last session completes the mesocycle.
/api/training/mesocycles/{id}/sessions/{week}/{day}/complete__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.
weekintegerrequiredWeek number within the mesocycle, starting at 1 (the last week is the deload).
dayintegerrequiredTraining day number within the week, starting at 1.
application/jsonOptional, when the session finished if not now.
atstring | integerWhen the session finished (ISO 8601 or epoch ms, default now).
The session was completed.
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.