Send access details to a trainee

POST/api/public/trainees/{traineeId}/send-credentials

Send the trainee their app access details by email, and optionally by WhatsApp. This generates a new password for the trainee and emails it to them, so it doubles as a password reset. Use it after creating a trainee, since POST /trainees does not send access details on its own. Set sendWhatsApp to true to also deliver the details over WhatsApp, which requires a connected WhatsApp account and a trainee phone number; the password follows in a separate message. Provide whatsappTemplate to override the message, using the {firstName}, {email}, {password} and {appLink} placeholders; when omitted the template saved in the dashboard is used.

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.

Path parameters

Path parameters
NameTypeDescription
traineeIdrequiredstring

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
sendWhatsAppboolean
whatsappTemplatestring

Request examples

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

const data = await response.json();

Responses

200 OK

Successful response

Example body (application/json)
{
  "data": {
    "id": "<string>",
    "sent": true,
    "whatsappSent": true
  }
}
Response fields (4)
Response fields
NameTypeDescription
dataobject
data.idstring
data.sentboolean
data.whatsappSentboolean

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.