---
search:
  tags:
    - Content blocks
    - PUT
seo:
  description: >-
    Reorders content blocks within a course. Scoped to your… Reference for the
    PUT /courses/{id}/content-blocks/reorder endpoint in the Fuxam API v4.
sidebar:
  label: Reorder content blocks in a course
  badge: PUT
title: Reorder content blocks in a course
type: openapi-operation
---
Reorders content blocks within a course. Scoped to your integration's institution via Basic Auth credentials.

`PUT /courses/{id}/content-blocks/reorder`

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

- `positions` (object[], required)
- `resolveConflicts` (boolean)

Request body example:

```json
{
  "positions": [
    {
      "id": "string",
      "position": 0
    }
  ],
  "resolveConflicts": false
}
```

**Responses**

- `200` — Content blocks reordered
- `400` — Bad Request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found
- `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": {
    "updated": [
      {
        "id": "string",
        "position": 0,
        "previousPosition": 0
      }
    ],
    "conflicts": [
      {
        "blockId": "string",
        "blockName": "string",
        "conditionId": "string",
        "requiredBlockId": "string",
        "requiredBlockName": "string",
        "type": "DEPENDENCY_VIOLATION",
        "message": "string",
        "resolved": true
      }
    ],
    "conflictsResolved": true,
    "deletedConditionIds": [
      "string"
    ]
  },
  "meta": {
    "requestId": "req_1234567890_abc",
    "timestamp": "2026-06-02T07:00:00.000Z",
    "version": "v4",
    "watermark": "2019-08-24T14:15:22Z"
  }
}
```
