Request a list of pages

Contents

    List pages, with optional filters by status (published, draft, static, sticky, scheduled) and pagination.

    Requires the API Token. See Authentication.

    HTTP Request

    GET /api/pages

    Parameters

    Key Type Default Description
    token (required) string API Token.
    published boolean true Include published pages.
    static boolean false Include static pages.
    sticky boolean false Include sticky pages.
    draft boolean false Include draft pages.
    scheduled boolean false Include scheduled pages.
    untagged boolean false Filter the returned slice to pages without tags. Note: applied after pagination, so the page slice may contain fewer items than pageSize.
    numberOfItems integer plugin setting (default 15) Page size. Use -1 to return all matching pages. Non-positive values other than -1 fall back to the plugin default.
    pageNumber integer 1 Page number for pagination. Values below 1 are clamped to 1.

    A pageNumber past the last page returns 200 OK with an empty data array and meta.hasMore: false, not an error.

    Response

    HTTP Code: 200
    Content-Type: application/json
    Body:
    {
      "status": "0",
      "message": "List of pages",
      "numberOfItems": 15,
      "meta": {
        "total": 42,
        "pageNumber": 1,
        "pageSize": 15,
        "hasMore": true
      },
      "data": [
        {
          "key": "my-dog",
          "uuid": "8a4f2b3c-1234-5678-9abc-def012345678",
          "title": "My dog",
          "description": "...",
          "type": "published",
          "slug": "my-dog",
          "content": "<p>...</p>",
          "contentRaw": "...",
          "date": "2026-02-02 00:09:38",
          "dateRaw": "2026-02-02 00:09:38",
          "dateUTC": "2026-02-02 22:09:38",
          "tags": {},
          "username": "admin",
          "category": "",
          "permalink": "https://www.example.com/my-dog",
          "coverImage": false,
          "coverImageFilename": false
        }
      ]
    }

    meta.total reflects the count of pages matching the type filters (published, static, sticky, draft, scheduled). The untagged filter is applied client-side to the page slice and is not reflected in meta.total.

    See Page object for the full field reference.

    CURL command example

    List published and static pages:

    $ curl -X GET "https://www.example.com/api/pages?token=<api-token>&published=true&static=true"

    Javascript example

    <script>
      fetch("https://www.example.com/api/pages?token=<api-token>&published=true&static=true", {
        method: 'GET'
      })
        .then(response => response.json())
        .then(json => console.log(json.data));
    </script>