Courses::Section

List Sections. Ordered by id ascending by default (pass sort_order=desc for descending), consistent with the pagination cursor, so following the Pagination-Next header returns every section exactly once.

The list includes the course's root section - a structural container (parent_id: null, matching the course's root_section_id) that is not shown in the course builder UI; most integrations can ignore it and treat its children as the modules. Pass sort_property=sort_order for the builder's display order; note sort_order is scoped per parent, so it is not globally unique across the list (the root and each parent's first child both start at 0, tie-broken by id).

See Reading back a course in the Courses Skill for the read walk.

get/courses/{course_id}/sections

Request

Path parameters

course_idstring required

Query parameters

afterstring

ID of item after which the collection should be returned. More examples and info about pagination in our guides.

per_pageinteger

Records per page. Defaults to 20; raise it up to 100 for bulk reads. A larger value returns 100 records. Zero, a negative or a non-integer value is a 422. The Link next-page URL keeps the value, so a client following it keeps the page size. More in our guides.

sort_order'asc' | 'desc'

Sort order of a list response. Use 'desc' to reverse the default 'asc' (ascending) sort order. Examples in our guides.

sort_property'id' | 'updated_at' | 'sort_order'

Sort property of a list response. The default is id and thus the created_at order. If you sort by other properties, we additionally sort by id implicitly as a secondary sort property, so that you can rely on the sort order to be deterministic even if the main sort property ends up with the same values.

Response

OK

idinteger

ID

public_idstring nullable

Public ID

course_idinteger

Course ID

titlestring

Title

published_atstring date-time nullable

Published at

descriptionstring nullable

Description

days_till_drip_accessinteger nullable

Days until drip access

blocker_section_idinteger nullable

Blocker section

blocker_lesson_idinteger nullable

Blocker lesson

current_pathstring nullable

Current Path

is_hidden_from_non_membersboolean nullable

Current Path

upgrade_urlstring nullable

Upgrade URL

parent_idstring nullable

Parent ID is pointing to the parent section. If it's nil then it's the <b>root</b> section.

sort_orderinteger nullable

Builder display order within the parent module. Scoped per parent, so it is not globally unique across the sections list (the root section and each parent's first child both start at 0).

created_atstring date-time nullable

Created at

updated_atstring date-time nullable

Updated at

Example response

[
  {
    "id": 1,
    "public_id": "sSwcZK",
    "course_id": 3,
    "title": "Module 1",
    "published_at": "2025-01-01T00:00:00.000Z",
    "description": "Example Course Section",
    "days_till_drip_access": 5,
    "blocker_section_id": null,
    "blocker_lesson_id": null,
    "current_path": "/section-example",
    "is_hidden_from_non_members": true,
    "upgrade_url": null,
    "parent_id": null,
    "sort_order": 0,
    "created_at": "2025-01-01T00:00:00.000Z",
    "updated_at": "2025-01-01T00:00:00.000Z"
  }
]

Changes

    • breaking

      the response property / became nullable for the status

    • breaking

      the / response's property type changed from string to integer null for status

    • breaking

      the / response's property type changed from string null to integer null for status

    • info

      added the new optional query request parameter per_page

    • info

      for the path request parameter course_id, the type was generalized from integer to string

    • info

      added the non-success response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status