Get a session
One training session (week + day number) with its exercises, sets, targets, last week’s results, and per-muscle feedback. Each set carries loggedAt (when it was finished, epoch ms) and restS (seconds since the previous set in the session finished, null when unknown); progress has sets / reps / volume done so far, startedAt, lastSetAt, elapsedS, and avgRestS. A later week not yet planned is planned on read from the week before.
/api/training/mesocycles/{id}/sessions/{week}/{day}__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.
The session.
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.