---
title: "Update page SEO settings"
method: PATCH
path: "/api/apps/{app_id}/seo/page-settings/{page_name}"
---

# Update page SEO settings

`PATCH /api/apps/{app_id}/seo/page-settings/{page_name}`

## Request

- Base URL: `https://app.base44.com`
- URL: `https://app.base44.com/api/apps/{app_id}/seo/page-settings/{page_name}`
- Auth: HTTP bearer

<Info>This API is in beta. Endpoints, fields, and behavior may still change, so avoid depending on it in production.</Info>

Hides one page from search engines or makes it visible again, and returns that page's settings as they now stand.

This endpoint changes only `noindex` and `ignore_parent_noindex`. The page's other fields, and every other page, keep their saved values. See which pages a hidden parent page covers with [Get page visibility](/api-reference/get-page-visibility). Change a page's title, description, or image with [Update SEO settings](/api-reference/update-seo-settings), which can also set `noindex` on several pages in one call.

A successful call means the setting is saved. The live site can take a little while to catch up.

<Warning>The response includes fields beyond the ones documented here. Don't rely on undocumented response fields, as they can change at any time.</Warning>

## Path parameters

- `page_name` string, required: Name of the page, the same key it has in `pages` in [Get SEO settings](/api-reference/get-seo-settings). That's the page's component name as it appears in the app's code, with any folder under `pages` in front of it, such as `About` or `services/HouseWashing`. The home page goes by its own name, such as `Home`, not `/`. The name is case-sensitive, and you can send its slashes as they are or encoded as `%2F`.
- `app_id` string, required: ID of the app whose SEO settings you want.

## Request body

- object
  - `noindex` boolean, nullable: Set to `true` to hide the page from search engines, or `false` to make it visible again. Leaving it out or sending `null` keeps the saved value and returns the page's current settings.
  - `ignore_parent_noindex` boolean, nullable: Set to `true` to keep this page visible to search engines when a parent page is hidden (e.g. `/units/:id` while `Units` is hidden). It never overrides the page's own `noindex`.

## Response `200`

The page's settings after the change.

- SEOPageSettingsResponse
  - `result` SEOPageSettings, required: The meta tags one page overrides, and whether it's hidden from search engines.
    - `title` string, nullable: Title tag for this page. The key is absent while the page overrides no title.
    - `description` string, nullable: Meta description for this page. The key is absent while the page overrides no description.
    - `og_image` string, nullable: Image URL for the `og:image` and `twitter:image` tags on this page. It must be an `https://` URL with a host and no backslashes, and it cannot exceed 2048 characters. Send an empty string to stop overriding the image.
    - `noindex` boolean: Whether the page is hidden from search engines. When `true`, Base44 serves the page with a `noindex, nofollow` robots directive and leaves it out of the `sitemap.xml` it generates. This applies only while the app is search-eligible and `seo_disabled` is `false`. Defaults to `false` while the key is absent.

## Other responses

- `400`: The page name is empty or only whitespace, is longer than 200 characters, or starts with `$`.
- `401`: Missing or invalid credentials.
- `403`: You don't have access to this app, you used a workspace API key, or you used a read-only personal access token. These endpoints accept a user's credentials only, and this one refuses a read-only credential.
- `404`: The app doesn't exist, or it has no page by that name and no saved settings under it.
- `422`: The body is missing or isn't a JSON object, it carries a field other than `noindex` and `ignore_parent_noindex`, or one of them can't be read as a boolean.
- `429`: Rate limit exceeded. The base limit is 30 requests per minute for each app, counted across the workspace rather than per caller, and shared with the app's other SEO endpoints. See [Rate limits](/developers/references/apps-api/get-started/rate-limits) for the multiplier your plan gets.

## Changes

> 58 revisions in range; 1 not diffed.

- **2026-10-12** `5e139db2e643`: 1 info
  - the endpoint scheme security `PersonalAccessTokenAuth` was added to the API
- **2026-10-09** `7843e6425fe2`: 1 info
  - added the new optional request property `ignore_parent_noindex`
- **2026-09-28** `347e2afcf94a`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/adexad/apis/base44-app-management-api/changes/api/apps/:app_id/seo/page-settings/:page_name/patch.md)

---

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