---
title: "Update a status page"
method: PATCH
path: "/api/v1/status-pages/{id}"
tags: ["StatusPages"]
---

# Update a status page

`PATCH /api/v1/status-pages/{id}`

## Request

- Base URL: `https://app.lastping.dev`
- URL: `https://app.lastping.dev/api/v1/status-pages/{id}`
- Auth: API key in header `X-Api-Key`

Replaces all mutable fields of the status page.  All fields (`slug`,
`title`, `visibility`, `check_ids`) must be supplied; this is a full
replacement of the resource's config. Unlike create, `slug` is
required here — it is not auto-generated on update.

**Free-tier limit:** upgrading `visibility` from `private` to `public`
counts against the 1-public-page limit; returns 403 if already at limit.

Changing `slug` to one already taken returns 409. The slug namespace
is global across all LastPing accounts, so this can be another
account's page.

## Request body

- StatusPageUpdate: Body for PATCH /api/v1/status-pages/{id} (update). Unlike StatusPageCreate, `slug` is required here — PATCH replaces the resource's full config, so every mutable field must be supplied.
  - `slug` string, required: URL-safe slug for the status page, must match `^[a-z0-9][a-z0-9-]{1,48}[a-z0-9]$` (3–50 chars, lowercase alphanumeric with hyphens, start/end alphanumeric). The slug namespace is **global across all LastPing accounts** (it backs the public `/status/{slug}` URL), so changing it to a name already taken returns 409 — possibly another account's. Required on update: PATCH is a full replacement of the resource's config, so the current slug must be supplied even when unchanged.
  - `title` string, required: Human-readable display title for the status page.
  - `check_ids` string[]: Ordered list of check UUIDs to display on the page. All checks must belong to the authenticated project. Duplicates are silently deduped. Omit or pass an empty array for a page with no checks.
  - `visibility` 'public' | 'private': `public` pages are accessible without authentication at `/status/{slug}`. `private` pages are visible only in the dashboard. Required on update — no default is applied.

## Response `200`

Updated status page.

- StatusPage: A status page resource returned by the API.
  - `id` string, uuid: Unique status page identifier.
  - `slug` string: URL-safe slug for the page.
  - `title` string: Human-readable display title.
  - `check_ids` string[]: Ordered list of check UUIDs displayed on this page (never null; may be empty).
  - `visibility` 'public' | 'private': Page visibility.
  - `public_url` string: Full URL of the public status page (e.g. `https://app.lastping.dev/status/my-services`). Empty string when `visibility` is `private`.
  - `created_at` string, date-time: RFC 3339 UTC timestamp when the status page was created.

## Other responses

- `400`: Invalid request body, bad slug, missing title, or invalid visibility.
- `401`: Missing or invalid API key.
- `403`: Free-tier public status page limit reached.
- `404`: Status page not found in this project.
- `409`: The supplied `slug` is already taken. Since the slug namespace is global, this can be another account's page, not just your own.

---

[API](https://skmtc.dev/lastping/apis/lastping-management-api.md) · [All operations](https://skmtc.dev/lastping/apis/lastping-management-api/llms.txt) · [OpenAPI document](https://skmtc.dev/lastping/apis/lastping-management-api/revisions/bbc6eda91c46?raw)
