GET /api/v1/milestones/{milestoneId}/member-tasks
Returns the tasks attached to a milestone, in the order members see them. Drafts and archived tasks are included: this is the author's view, not the member's.
| Role in the organization | This endpoint |
|---|---|
OWNER | Allowed |
ADMIN | Allowed |
MEMBER | Allowed — reading is open to every member of the school |
| Requirement | Rule for this endpoint |
|---|---|
| Business role | None |
| Resource scope | Milestone of the school attached to the API key |
| Participation | None |
| Resource state | None |
| Parameter | Type | Required | Description |
|---|---|---|---|
milestoneId | UUID | yes | Milestone visible from the key's school |
| Header | Required | Description |
|---|---|---|
x-api-key | yes | API key created for this school |
X-Correlation-Id | no | Caller correlation id, returned or generated |
curl "$COHORTE_API_BASE_URL/api/v1/milestones/$MILESTONE_ID/member-tasks" \
-H "x-api-key: $COHORTE_API_KEY"200 OK — the list, in order, possibly empty. A milestone that is unknown
or belongs to another school also returns an empty list.400 Bad Request — milestoneId is not a UUID.401 Unauthorized — the key is missing, invalid, or no longer attached to a member.403 Forbidden — the bearer is not a member of this school.| Field | Type | Nullable | Description |
|---|---|---|---|
success | boolean | no | true for a successful request |
data[].id | UUID | no | Task identifier |
data[].programId | UUID | no | Program that carries it |
data[].milestoneId | UUID | yes | The milestone listed here |
data[].title | string | no | Task title |
data[].instructions | string | yes | What to do |
data[].context | string | yes | Why it matters |
data[].requirement | string | no | required, recommended or optional |
data[].dueOffsetDays | integer | yes | Days after enrollment, when the deadline is relative |
data[].dueAt | ISO 8601 string | yes | The fixed deadline, in UTC, when there is one |
data[].status | string | no | draft, published or archived |
data[].createdAt | ISO 8601 string | no | Creation time, in UTC |
data[].updatedAt | ISO 8601 string | no | Last change, in UTC |
correlationId | UUID | no | Correlation id for support |
There is no position field: the order is the order of this list.
{
"success": true,
"data": [
{
"id": "c3f1d2a4-0000-4000-8000-000000000000",
"programId": "4d19c0a2-0000-4000-8000-000000000000",
"milestoneId": "7a0c9e1b-0000-4000-8000-000000000000",
"title": "Ship your landing page",
"instructions": null,
"context": null,
"requirement": "required",
"dueOffsetDays": 14,
"dueAt": null,
"status": "published",
"createdAt": "2026-09-24T08:00:00.000Z",
"updatedAt": "2026-09-24T09:00:00.000Z"
}
],
"correlationId": "b0e7f1c2-1d3a-4a52-9f77-52a4b7c3d1e0"
}