Log or edit a set
Sets a set’s weight and reps (logging it), un-logs it with done false, or edits its targets.
/api/training/sets/{id}__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 set fields to log or change.
weightLbnumber | nullLoad in pounds.
repsinteger | nullReps done.
donebooleanTrue logs the set; false un-logs it.
targetWeightLbnumber | nullTarget load in pounds.
targetRepsinteger | nullTarget reps.
loggedAtstring | integerWhen the set was finished (ISO 8601 or epoch ms); logs the set at that time. Without it, logging stamps now and editing a done set keeps its time.
The updated set.
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.