GET /api/v1/coaching-sessions/{coachingSessionId}
Returns one coaching session by its identifier, with the entries this caller
may read. Entries marked coach_only are returned only to a caller who may
also document the enrollment.
| Role in the organization | This endpoint |
|---|---|
OWNER | Allowed |
ADMIN | Allowed |
MEMBER | Conditional — only with a business role below |
| Requirement | Rule for this endpoint |
|---|---|
| Business role | coach scoped to the session's enrollment, or program_director scoped to the organization |
| Resource scope | Coaching session of the organization attached to the API key |
| Participation | The coach must be assigned to the session's enrollment |
| Resource state | None |
| Parameter | Type | Required | Description |
|---|---|---|---|
coachingSessionId | UUID | yes | Coaching session visible from the key's organization |
curl "$COHORTE_API_BASE_URL/api/v1/coaching-sessions/COACHING_SESSION_ID" \
-H "x-api-key: $COHORTE_API_KEY"200 OK — the session and the entries this caller may read.401 Unauthorized — the key is missing, invalid, or no longer attached to a member.404 Not Found — the session is unknown, belongs to another organization, or its enrollment is outside the caller's scope.404 covers all three cases on purpose: distinguishing them would turn this
endpoint into an existence oracle for anyone probing identifiers.
| Field | Type | Nullable | Description |
|---|---|---|---|
success | boolean | no | true for a successful request |
data | object | no | The session, same shape as a recorded session |
{
"success": true,
"data": {
"id": "9f2c0a1e-0000-4000-8000-000000000000",
"enrollmentId": "4af4cd8d-0000-4000-8000-000000000000",
"heldAt": "2026-09-01T14:30:00.000Z",
"recordedBy": "1b7d2f30-0000-4000-8000-000000000000",
"recordedByName": "Karim Haddad",
"recordedAt": "2026-09-01T14:32:00.000Z",
"entries": []
}
}entries may be empty for a caller who can read the enrollment but not the
coach-only entries it contains.