Create a workout plan (async generation)
Schedules an asynchronous generation job and returns immediately with `202 Accepted` plus a `job_id`. Generation builds the workouts under the plan from the supplied preferences, constraints, and coach-derived member insights. Creating a new plan marks the previous active plan inactive — only one plan is active at a time. Poll `GET /v1/users/{user_id}/jobs/{job_id}` for completion or consume the partner queue update event.
Authorization
MemberBearer Member-scoped JWT minted by POST /v1/auth/token. Required on every /v1/users/{user_id}/... route; the token's sub claim must match the path user_id.
In: header
Path Parameters
uuidHeader Parameters
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
curl -X POST "https://loading/v1/users/497f6eca-6276-4993-bfeb-53cbbbba6f08/workout-plans" \ -H "Content-Type: application/json" \ -d '{ "title": "string" }'{
"data": {
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"job_id": "453bd7d7-5355-4d6d-a38e-d9e7eb218c3f",
"status": "accepted"
}
}{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string"
}
]
}List workout plans for the member
Paginated list of workout plans. Filter by `status` (`active`, `ended`, `archived`, `draft`). Returns thin summaries; for the full plan body call `GET /workout-plans/{plan_id}`. Only one plan is `active` per member at a time.
Read workout plan details
Returns the full plan body: status, summary, focus areas, session rhythm, preferences/constraints, and the `weeks[]` calendar. To read the workouts inside a week, call `GET /workout-plans/{plan_id}/weeks/{week_index}` with the zero-based index of the entry in `weeks[]`.