---
search:
  tags:
    - Cohorts
    - PATCH
seo:
  description: >-
    Partial update of cohort fields. When updating dates, the effective range
    (merged with… Reference for the PATCH /cohorts/{id} endpoint in the Fuxam
    API v4.
sidebar:
  label: Update a cohort
  badge: PATCH
title: Update a cohort
type: openapi-operation
---
Partial update of cohort fields. When updating dates, the effective range (merged with existing values for omitted fields) must have `startDate` strictly before `endDate` at minute precision. Cohort dates are compared at minute precision (matching the dashboard). Returns `422` when both fall in the same minute (`startDate and endDate must not be in the same minute`) or when `startDate` is after `endDate` at minute level (`startDate must be before endDate`). Returns summary fields — use GET for full detail with members and curriculum structure. Scoped to your integration's institution via Basic Auth credentials.

`PATCH /cohorts/{id}`

**Request body** (`application/json`, required)

- `name` (string)
- `startDate` (string<date-time>) — Cohort start date. Compared at minute precision (seconds are ignored). Must be strictly before \`endDate\` at minute level. If in the same minute as \`endDate\`, returns \`422\` with \`startDate and endDate must not be in the same minute\`.
- `endDate` (string<date-time>) — Cohort end date. Compared at minute precision (seconds are ignored). Must be strictly after \`startDate\` at minute level. If in the same minute as \`startDate\`, returns \`422\` with \`startDate and endDate must not be in the same minute\`.
- `curriculaVersionId` (string)
- `isArchived` (boolean)

Request body example:

```json
{
  "name": "Cohort 2025",
  "startDate": "2025-09-01T00:00:00.000Z",
  "endDate": "2028-07-31T23:59:59.000Z",
  "isArchived": false
}
```

**Responses**

- `200` — Updated cohort
- `400` — Bad Request
- `401` — Unauthorized
- `404` — Not Found
- `422` — Unprocessable Entity — validation or business rule error
- `429` — Too Many Requests — 1000 requests per minute per institution. Includes \`X-RateLimit-Limit\`, \`X-RateLimit-Remaining\`, \`X-RateLimit-Reset\` (ISO-8601), and \`Retry-After\` (seconds).
- `500` — Internal Server Error

Response example, 200:

```json
{
  "data": {
    "id": "coh_001",
    "name": "WS 2024/25",
    "institutionId": "inst_123",
    "startDate": "2024-10-01T00:00:00.000Z",
    "endDate": "2027-09-30T00:00:00.000Z",
    "curriculaVersionId": "cv_001",
    "studyProgramVersionId": "spv_001",
    "isArchived": false,
    "hasDisconnectedFromCurricula": false,
    "originalCurriculaVersionId": null
  },
  "meta": {
    "requestId": "req_abc123",
    "timestamp": "2026-06-26T00:00:00.000Z",
    "version": "v4"
  }
}
```
