---
title: "List sites"
method: GET
path: "/api/v1/sites"
tags: ["Sites"]
---

# List sites

`GET /api/v1/sites`

## Request

- Base URL: `https://app.mondovo.com`
- URL: `https://app.mondovo.com/api/v1/sites`
- Auth: HTTP bearer

Lists the organization’s sites, most recent first, capped at 50. Requires scope `sites:read`.

## Response `200`

Sites in the organization.

- object
  - `sites` Site[], required
    - `site_id` string, uuid, required
    - `name` string, required
    - `status` 'generating' | 'refining' | 'ready' | 'publishing' | 'published' | 'publish_held' | 'error', required: "publish_held": the last publish crashed or rendered blank when loaded in a browser before going live, so it was not made live; deployment_url (if any) still serves the previous version. See publish_message.
    - `publish_message` string: Plain-language reason the last publish was held. Present only when status is "publish_held".
    - `generation_progress` number: 0-100 while status is "generating".
    - `generation_progress_message` string: Human-readable progress note while generating.
    - `preview_url` string, uri: Shareable public preview link (no login required). Omitted when previews are disabled.
    - `editor_url` string, uri: Deep link into the Mondovo editor (requires login). Omitted while generating or errored.
    - `deployment_url` string, uri: Live URL once published.
    - `pages` string[]: Slugs of the site’s pages (e.g. "/", "/about"). Omitted before generation completes.
    - `error_message` string: Present only when status is "error".
    - `created_at` string, date-time
    - `updated_at` string, date-time
  - `total` integer, required

## Other responses

- `401`: Authentication failed. Error codes: `invalid_api_key` (missing/unknown key), `key_revoked`, `key_expired`.
- `403`: Authenticated but not allowed. Error codes: `addon_required` (the API key’s workspace no longer has the Agency add-on — checked on every request, not just at key creation) and `missing_scope` (the key lacks the scope this endpoint needs).
- `429`: Rate limit exceeded (`rate_limit_exceeded`). The body includes `retry_after_seconds`, `limit`, and `window` ("minute" or "hour"); a `Retry-After` header is also set.
- `500`: Unexpected server error (`internal_error`). Safe to retry.

---

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