List stalled exercises

GET/api/public/monitoring/stalled-exercises

Exercises where trainees stopped progressing (no improvement over the configured window).

Authentication

Requires an API key, sent as Authorization: Bearer cp_live_....

API keys carry scopes. Get the catalog of scopes and webhook events lists every scope.

Query parameters

Query parameters
NameTypeDescription
genderstring

Filter trainees by gender

Allowed values: males females

labelsstring[]

Filter to trainees that have all of these label ids

Maximum items: 100

progressionMetricstring

Metric used to judge progression (default volume)

Allowed values: maxWeight avgWeight volume

minWorkoutsstring

Minimum workouts to consider (default 4)

stalledDaysstring

Days of no progress to count as stalled (default 30)

showDismissedstring

Include dismissed exercises

Allowed values: true false

minStalledDaysstring

Only exercises stalled at least this many days

minStalledExercisesstring

Only trainees with at least this many stalled exercises

minRecentWorkoutsstring

Only exercises with at least this many recent workouts

minTraineesPerExercisestring

Only exercises stalled for at least this many trainees

minDropPercentstring

Only exercises whose metric dropped at least this percent

pagestring

Page number (1-based, default 1)

Pattern: ^[1-9][0-9]{0,5}$

limitstring

Items per page (1-999, default 50)

Pattern: ^[1-9][0-9]{0,2}$

Request examples

cURL
curl --request GET \
  --url 'https://api.coach-platform.com/api/public/monitoring/stalled-exercises' \
  --header 'Authorization: Bearer cp_live_...'
JavaScript (fetch)
const response = await fetch('https://api.coach-platform.com/api/public/monitoring/stalled-exercises', {
  method: 'GET',
  headers: {
    Authorization: 'Bearer cp_live_...',
  },
});

const data = await response.json();

Responses

200 OK

Successful response

Example body (application/json)
{
  "data": {}
}
Response fields (1)
Response fields
NameTypeDescription
dataobject

Error responses

  • 400 Bad Request
  • 401 Unauthorized
  • 403 Forbidden
  • 404 Not Found
  • 409 Conflict
  • 429 Too Many Requests
  • 500 Internal Server Error

These statuses share the same response body.

Example body (application/json)
{
  "error": {
    "code": "<string>",
    "message": "<string>",
    "fix": "<string>",
    "details": {},
    "retryAfterMs": 123
  }
}
Error fields (6)
Error fields
NameTypeDescription
errorobject
error.codestring
error.messagestring
error.fixstring | null
error.detailsobject | null
error.retryAfterMsnumber | null

This page is also available as Markdown. Browse it in the interactive explorer or download the OpenAPI spec.