---
title: "Rename a page or change its URL"
method: PATCH
path: "/api/v1/sites/{id}/pages/{slug}"
tags: ["Pages"]
---

# Rename a page or change its URL

`PATCH /api/v1/sites/{id}/pages/{slug}`

## Request

- Base URL: `https://app.mondovo.com`
- URL: `https://app.mondovo.com/api/v1/sites/{id}/pages/{slug}`
- Auth: HTTP bearer

Supply `new_name`, `new_slug`, or both. Every internal link across the design is rewritten to the new URL, navigation is re-synced, and link TEXT naming the old page is updated too — so this is the only safe way to move a page. The homepage’s URL cannot be changed, and the page’s content survives the move. Requires scope `sites:refine`.

## Request body

- RenamePageInput: Supply new_name, new_slug, or both.
  - `new_name` string: New display name, e.g. "Our Services".
  - `new_slug` string: New URL path, e.g. "/what-we-do". Derived from new_name when omitted.
  - `variation_id` string: Design to edit. Defaults to the site’s active design.

## Response `200`

Renamed. `links_updated` counts the files whose links were rewritten.

- object
  - `site_id` string, uuid, required
  - `page` object, required
    - `name` string
    - `slug` string
    - `previous_name` string
    - `previous_slug` string
  - `links_updated` integer
  - `published` boolean, required: Always false — publish separately.
  - `message` string

## Other responses

- `400`: Error codes: `invalid_json`, `validation_error`, `rename_failed` (invalid URL path, duplicate slug, or an attempt to move the homepage).
- `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).
- `404`: Error codes: `site_not_found`, `page_not_found` (the response carries `available_slugs`), `variation_not_found`.
- `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.

---

[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)
