GET /api/v1/enrollments/{enrollmentId}/interventions
Returns the interventions of one enrollment in the order they should be acted on: overdue ones first, then the planned ones by deadline, then the closed ones from the most recent to the oldest.
| 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 this enrollment, or program_director scoped to the organization |
| Resource scope | Enrollment of the organization attached to the API key |
| Participation | The coach must be assigned to this enrollment |
| Resource state | None |
| Parameter | Type | Required | Description |
|---|---|---|---|
enrollmentId | UUID | yes | Enrollment visible from the key's organization |
curl "$COHORTE_API_BASE_URL/api/v1/enrollments/ENROLLMENT_ID/interventions" \
-H "x-api-key: $COHORTE_API_KEY"200 OK — the interventions the caller may read, possibly an empty list.401 Unauthorized — the key is missing, invalid, or no longer attached to a member.403 Forbidden — the bearer cannot read this enrollment's interventions.404 Not Found — the enrollment is unknown or belongs to another organization.| Field | Type | Nullable | Description |
|---|---|---|---|
success | boolean | no | true for a successful request |
data[] | array | no | Interventions in acting order; same shape as a planned intervention |
canWrite | boolean | no | true when the caller may also plan and close interventions here |
{
"success": true,
"data": [
{
"id": "9f2c0a1e-0000-4000-8000-000000000000",
"enrollmentId": "4af4cd8d-0000-4000-8000-000000000000",
"reason": "late",
"title": "Catch-up call after two weeks without progress",
"channel": "call",
"ownerUserId": "1b7d2f30-0000-4000-8000-000000000000",
"ownerName": "Ines Fabre",
"dueAt": "2026-09-05T16:00:00.000Z",
"expectedOutcome": "A prospecting slot booked again for this week.",
"status": "planned",
"outcome": null,
"closedAt": null,
"closedBy": null,
"closedByName": null,
"blockerId": null,
"plannedBy": "6d41ab55-0000-4000-8000-000000000000",
"plannedByName": "Paul Vidal",
"plannedAt": "2026-09-02T09:14:00.000Z"
}
],
"canWrite": true
}canWrite and the list come from the same permission resolution, so a client
never shows a closing action the API would refuse.