curl -X PATCH "https://api.fitsociety.io/public/v1/workout/plans/template/{planId}/moments/{planMomentId}/supersets/{groupId}/rest" \
-H "Authorization: Bearer <access_token>" \
-H "Idempotency-Key: <stable_request_key>" \
-H "Content-Type: application/json" \
-d '{}'const options = {
method: 'PATCH',
headers: {
'Idempotency-Key': '<idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({supersetRest: 120})
};
fetch('https://api.fitsociety.io/public/v1/workout/plans/template/{planId}/moments/{planMomentId}/supersets/{groupId}/rest', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.fitsociety.io/public/v1/workout/plans/template/{planId}/moments/{planMomentId}/supersets/{groupId}/rest"
payload = { "supersetRest": 120 }
headers = {
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text){
"data": {
"planId": "67f1234567890abcdef1234",
"planMomentId": "67f1234567890abcdef1234",
"groupId": "6a2b1c3d4e5f60718293a4b5",
"supersetRest": 120,
"exerciseCount": 2,
"exercises": [
{
"planExerciseId": "67f1234567890abcdef1234",
"exerciseId": "67f1234567890abcdef1234",
"order": 0
}
]
},
"meta": {
"requestId": "4f849d7d-f4f1-45cc-b4b7-3984a3d17f83",
"rateLimit": {
"limit": 10,
"remaining": 9,
"resetSeconds": 1
},
"idempotency": {
"replayed": false
}
}
}Set a superset's prescribed rest
Sets (or clears) the coach’s PRESCRIBED rest for one superset — the single “Rest time” a group gets, since a superset is executed as a round and rests once after its last member rather than per set. Stored against the group’s groupId on the plan moment.
The editable counterpart to supersetRest on POST …/supersets, which can only set the value at creation time.
Does NOT touch the client’s own logged rest (the read screens report that separately as supersetRest, beside this value as supersetRestPlan), and needs no per-set cascade — members’ sets[].restSeconds were already cleared when they joined the superset.
Requires the workout_plans:write scope. This operation maps to /app/v1/workout/plans/template/:planId/moments/:planMomentId/supersets/:groupId/rest and retains its Workout V2 permission, feature-flag, and resource-scope checks.
The clientId path parameter is resolved inside the company bound to the Public API token when present.
curl -X PATCH "https://api.fitsociety.io/public/v1/workout/plans/template/{planId}/moments/{planMomentId}/supersets/{groupId}/rest" \
-H "Authorization: Bearer <access_token>" \
-H "Idempotency-Key: <stable_request_key>" \
-H "Content-Type: application/json" \
-d '{}'const options = {
method: 'PATCH',
headers: {
'Idempotency-Key': '<idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({supersetRest: 120})
};
fetch('https://api.fitsociety.io/public/v1/workout/plans/template/{planId}/moments/{planMomentId}/supersets/{groupId}/rest', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.fitsociety.io/public/v1/workout/plans/template/{planId}/moments/{planMomentId}/supersets/{groupId}/rest"
payload = { "supersetRest": 120 }
headers = {
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text){
"data": {
"planId": "67f1234567890abcdef1234",
"planMomentId": "67f1234567890abcdef1234",
"groupId": "6a2b1c3d4e5f60718293a4b5",
"supersetRest": 120,
"exerciseCount": 2,
"exercises": [
{
"planExerciseId": "67f1234567890abcdef1234",
"exerciseId": "67f1234567890abcdef1234",
"order": 0
}
]
},
"meta": {
"requestId": "4f849d7d-f4f1-45cc-b4b7-3984a3d17f83",
"rateLimit": {
"limit": 10,
"remaining": 9,
"resetSeconds": 1
},
"idempotency": {
"replayed": false
}
}
}Authorizations
Public API access token issued by /public/v1/oauth/token. Example: Authorization: Bearer fspt_.... Each resource request rechecks the token company's current provider access. Disabling access blocks existing tokens with 403 auth.provider_unavailable.
Headers
Required for Public API write requests. Reusing the same key with the same method, path, and body replays the stored successful response; reusing it with a different request returns 409 idempotency.conflict.
1 - 200"booking-create-20260714-001"
Path Parameters
Workout plan id.
"67f1234567890abcdef1234"
Plan moment (day) id.
"67f1234567890abcdef1234"
Superset group id.
"67f1234567890abcdef1234"
Body
Rest for the whole superset, in seconds. null (or "") clears it; 0 is a real value meaning no rest. The key must be PRESENT — an empty body is rejected so a stray request cannot blank the value.
x >= 0120