Approve or reject pending trainees

POST/api/public/trainees/pending

Approve or reject trainees from the coach's approval queue, which GET /trainees?status=pending lists. Approving counts them against the coach's trainee limit and returns 422 if that limit would be exceeded.

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.

Header parameters

Header parameters
NameTypeDescription
Idempotency-Keystring

Optional. Send a unique key (e.g. a UUID) to make this POST safe to retry. The same key within 24h returns the original result instead of creating a duplicate.

Request body

application/json, required

Request body fields
NameTypeDescription
traineeIdsrequiredstring[]

Ids of trainees currently in the pending queue. Ids that are not pending make the whole request fail with 422.

Minimum items: 1

Maximum items: 500

approverequiredboolean

true to approve the trainees, false to reject them.

Request examples

cURL
curl --request POST \
  --url 'https://api.coach-platform.com/api/public/trainees/pending' \
  --header 'Authorization: Bearer cp_live_...' \
  --header 'Content-Type: application/json' \
  --data '{
  "traineeIds": [
    "<string>"
  ],
  "approve": true
}'
JavaScript (fetch)
const response = await fetch('https://api.coach-platform.com/api/public/trainees/pending', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer cp_live_...',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "traineeIds": [
      "<string>"
    ],
    "approve": true
  }),
});

const data = await response.json();

Responses

200 OK

Successful response

Example body (application/json)
{
  "data": {
    "success": true
  }
}
Response fields (2)
Response fields
NameTypeDescription
dataobject
data.successboolean

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.