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

Swap an exercise

Replaces a slot’s exercise from the given week on (default all unlogged weeks). Logged sets keep the exercise they were done with.

PATCH/api/training/slots/{id}
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.

Request body
requiredapplication/json

The replacement exercise, by id or name.

exerciseIdstring

Id of the replacement exercise from the library.

exerciseNamestring

Exercise name, matched against the library within the slot's muscle.

fromWeekinteger

First week to change (default 1, every unlogged set).

Responses
200

The exercise was swapped.

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 PATCH 'https://app.skcal.fit/api/training/slots/9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d' \
  -H 'Cookie: __Secure-better-auth.session_token=YOUR_API_KEY' \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "exerciseId": "incline_dumbbell_press",
  "exerciseName": "incline dumbbell press",
  "fromWeek": 3
}'
Response
{
  "ok": true,
  "week": 2,
  "day": 1,
  "exerciseName": "Barbell Bench Press",
  "muscle": "chest"
}

Was this page helpful?