---
title: "List lessons"
method: GET
path: "/v2/lessons/"
tags: ["Lessons"]
---

# List lessons

`GET /v2/lessons/`

List non-draft lessons for the authenticated organization.

**Required OAuth scope:** `lessons:read`

## Query parameters

- `filter[course_id]` string, nullable — Obfuscated parent course ID. Exact match.
- `filter[type]` 'ASSET' | 'HTML' | 'QUIZ' | 'WEB_PACKAGE' | 'VILT' | 'IE_EXAM' | 'WIDGET' | 'MODULAR', nullable — Lesson type. Exact match. Accepted values: ASSET, HTML, QUIZ, WEB_PACKAGE, VILT, IE_EXAM, WIDGET, MODULAR. Unknown values are rejected with 422.
- `filter[title]` string, nullable — Lesson title. Case-insensitive exact match.
- `filter[updated_since]` string, date-time, nullable — ISO-8601 timestamp with timezone offset (e.g. ``2024-01-01T00:00:00Z``); returns lessons updated at or after this time. Naive datetimes without an offset are rejected with 422.

## Response `200`

OK

- PaginatedListResponseLessonResource
  - `data` LessonResource[], required — The resources on this page, in cursor order.
    - `type` 'lessons' — Always "lessons".
    - `id` string, required — Opaque lesson ID. Use in URL paths.
    - `attributes` LessonAttributes, required — Attributes of a lesson resource object.
      - `title` string, required — Lesson title.
      - `type` string, required — Lesson type code (e.g. HTML).
      - `order` integer, required — Ordering value within the parent course.
      - `course_id` string, required — Obfuscated ID of the parent course.
      - `description_html` string — HTML description shown above the lesson body.
      - `content_html` string, nullable — HTML body of the lesson (when type="HTML").
      - `quiz_id` string, nullable — Obfuscated ID of the referenced quiz (when type="QUIZ").
      - `external_id` string, required — Stable UUID5 for cross-system correlation.
      - `created_at` string, date-time, required — Timestamp when the lesson was created.
      - `modified_at` string, date-time, required — Timestamp when the lesson was last modified.
    - `relationships` object, nullable — Related resource links.
    - `links` object, nullable — Self and related links.
  - `meta` object, nullable — Pagination metadata, e.g. {"page_size": 25}.
  - `links` object, nullable — Pagination links, e.g. {"self": "...", "next": "...", "prev": null}.
  - `has_more` boolean, required — Whether additional pages exist after this one.
  - `next_cursor` string, nullable — Opaque cursor to pass as ``page[cursor]`` for the next page; null on the last page.
  - `included` object[], nullable — Related resources requested via ?include=. Absent when no include was requested.

## Other responses

- `401` — Unauthorized
- `403` — Forbidden
- `422` — Unprocessable Entity
- `500` — Internal Server Error

---

[API](https://skmtc.net/skilljar/apis/skilljar-api-v2.md) · [All operations](https://skmtc.net/skilljar/apis/skilljar-api-v2/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/skilljar/skilljar-api-v2/revisions/f8025de20169/schema)
