---
title: "List a brand's pages"
method: GET
path: "/api/v1/public/brands/{brandSlug}/pages/"
tags: ["Public: Pages"]
---

# List a brand's pages

`GET /api/v1/public/brands/{brandSlug}/pages/`

## Request

- Base URL: `https://api.iterant.ai`
- URL: `https://api.iterant.ai/api/v1/public/brands/{brandSlug}/pages/`
- Auth: HTTP bearer

Pages with their route, title, status and languages. This is where a `urlPath` comes from: every other page route takes one. The live URL (`liveUrl`) is on the by-path route, and on list rows only with `responseFormat=detailed`.

A page is one route served in every language of the site. `locales` lists each language with the route it serves at there, the default language first at the page's own `urlPath`.

An archived page has left the site (its file or row is gone) and is listed only with `status=archived`.

Capped and paginated. When the cap bites the response carries a `note` saying how to narrow: filter by `status` or `urlPathPrefix` rather than paging through everything.

## Path parameters

- `brandSlug` string, required

## Query parameters

- `limit` string
- `offset` string
- `responseFormat` 'concise' | 'detailed'
- `status` 'archived' | 'changed' | 'draft' | 'failed_generation' | 'generating' | 'polishing' | 'published' | 'review_required'
- `urlPathPrefix` string

## Response `200`

- PublicPageList: The schema for what ``paginated`` builds. Kept beside it deliberately. A list operation whose ``responses`` named the *item* serializer with ``many=True`` published a bare array while the runtime returned this object, so a generated client broke on its first call. Subclasses add ``items``: each operation needs its own named component or the item type is erased.
  - `total` integer, required: Rows matching the query, before `limit` and `offset`.
  - `offset` integer, required: Rows skipped. Echoed back so a caller can page without bookkeeping.
  - `limit` integer, required: Cap actually applied, which may be lower than the one requested.
  - `note` string, required: How to narrow, when the cap hid rows. Empty when the response is the whole answer.
  - `items` PublicPageSummary[], required
    - `urlPath` string, required
    - `title` string, required
    - `status` string, required
    - `locales` PublicPageLocale[], required: Every language the page serves in and the route it serves at there: the default language first at the page's own urlPath, then one entry per other language of the site the page exists in. A page written in one language alone lists that language at its own urlPath.
      - `locale` string, required
      - `urlPath` string, required
    - `updatedAt` string, date-time, required
    - `liveUrl` string, nullable, required

## Other responses

- `400`
- `401`
- `404`
- `405`
- `406`
- `415`
- `429`
- `500`

---

[API](https://skmtc.dev/iterant/apis/iterant-public-api.md) · [All operations](https://skmtc.dev/iterant/apis/iterant-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/iterant/apis/iterant-public-api/revisions/8d62f6ac9cbd?raw)
