---
title: "List web packages"
method: GET
path: "/v2/web-packages/"
tags: ["Web Packages"]
---

# List web packages

`GET /v2/web-packages/`

List live web packages for the authenticated organization.

**Required OAuth scope:** `web-packages:read`

## Response `200`

OK

- PaginatedListResponseWebPackageResource
  - `data` WebPackageResource[], required — The resources on this page, in cursor order.
    - `type` 'web-packages' — Always "web-packages".
    - `id` string, required — Opaque web package ID. Use in URL paths.
    - `attributes` WebPackageAttributes, required — Attributes of a web package resource object. ``type`` and ``state`` are deliberately typed as loose ``str`` rather than ``Literal``, matching ``LessonAttributes.type``: a new choice added to ``WebPackage.PACKAGE_TYPE_CHOICES`` must never break serialization of existing rows. The valid values are documented in the field descriptions. Note ``type`` lives inside ``attributes`` even though JSON:API reserves that name at the resource level. This follows the established v2 precedent (``LessonAttributes.type``) and is what GE-249998 AC2 asks for.
      - `type` string, required — Package format: SCORM, SCORM_2004, XAPI, AICC, or HTML.
      - `state` string, required — Ingestion state: PROCESSING while the package is being fetched and unpacked, READY once usable, ERROR if the archive could not be processed. Poll this field after create.
      - `title` string, required — Best-guess title parsed from the package manifest.
      - `display_name` string, required — Server-derived label shown in the dashboard. Recomputed on every save from the title, state and archive filename — it is not directly settable.
      - `base_path` string, required — Base location in storage of the unpacked package content.
      - `created_at` string, date-time, required — Timestamp when the web package was created.
      - `modified_at` string, date-time, required — Timestamp when the web package was last modified.
    - `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
- `404` — Not Found
- `422` — Unprocessable Entity

---

[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)
