Skip to content
skcal
Esc
↑↓navigate↵open⌘Jpreview

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.

POST/api/training/mesocycles/{id}/sessions/{week}/{day}/complete
Authorization
__Secure-better-auth.session_tokenAPI key · cookierequired

Better 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.

or
AuthorizationBearer token · headerrequired

Personal 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.

Path parameters
idstringrequired

Identifier of the mesocycle, set, slot, or custom exercise the path names.

weekintegerrequired

Week number within the mesocycle, starting at 1 (the last week is the deload).

min 1
dayintegerrequired

Training day number within the week, starting at 1.

min 1
Request body
application/json

Optional, when the session finished if not now.

atstring | integer

When the session finished (ISO 8601 or epoch ms, default now).

Responses
200

The session was completed.

object
400

The request body or parameters failed validation.

errorstringrequired

Human-readable failure reason.

detailstring

Optional extra context, present on upstream failures.

404

No matching resource owned by the caller.

errorstringrequired

Human-readable failure reason.

detailstring

Optional extra context, present on upstream failures.

Try it
Server
Authorization
Parameters
Bodyapplication/json
Request
curl -X POST 'https://app.skcal.fit/api/training/mesocycles/9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d/sessions/2/3/complete' \
  -H 'Cookie: __Secure-better-auth.session_token=YOUR_API_KEY' \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "at": "2026-10-25T19:30:00-05:00"
}'
Response
{
  "ok": true,
  "week": 2,
  "day": 1,
  "exerciseName": "Barbell Bench Press",
  "muscle": "chest"
}

Was this page helpful?