---
title: "List public pages"
method: GET
path: "/api/v1/pages"
tags: ["pages"]
---

# List public pages

`GET /api/v1/pages`

## Request

- Base URL: `https://app.qrtap.kg`
- URL: `https://app.qrtap.kg/api/v1/pages`
- Auth: HTTP bearer

Lists the public pages of your organization, newest version first, without the content blob (fetch one page to read it). Today a workspace has at most one page; the list shape is the API contract, so more page kinds will not be a breaking change.

## Response `200`

Pages of your organization.

- object
  - `data` PageSummary[], required
    - `id` string, uuid, required
    - `slug` string, required: Public slug; stable for the life of the page.
    - `title` string: Page heading (mirrors content.name).
    - `segment` string
    - `theme` 'emerald' | 'ocean' | 'plum' | 'terracotta' | 'graphite'
    - `status` 'draft' | 'published' | 'archived', required
    - `published` boolean, required: Convenience mirror of status === "published".
    - `version` integer, required: Current content version (increments on every write).
    - `public_url` string, uri, required: Where the page is served: https://app.qrtap.kg/a/{slug}.
    - `created_at` string, date-time
    - `updated_at` string, date-time: When the current version was published.

## Other responses

- `401`: Missing, invalid or revoked API key.
- `429`: Limit exceeded — the request had no effect. `error` is `rate_limited` with `scope: "minute"` (a burst brake: wait `retry_after` seconds and continue) or `quota_exceeded` with `scope: "day"` (the workspace's daily quota, counted in UTC; it returns at `reset_at`, the next UTC midnight, and only a higher plan raises it before then).

---

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