> ## Documentation Index
> Fetch the complete documentation index at: https://docs.base44.com/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Internal links on these pages omit the .md extension. Append .md to a docs page URL, or send an Accept: text/markdown header, to get that page as markdown.

# Update page SEO settings

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



## OpenAPI

````yaml /developers/references/app-management/app-management-openapi.json patch /api/apps/{app_id}/seo/page-settings/{page_name}
openapi: 3.1.0
info:
  title: Base44 App Management API
  version: 1.0.0
servers:
  - url: https://app.base44.com
security:
  - PersonalAccessTokenAuth: []
paths:
  /api/apps/{app_id}/seo/page-settings/{page_name}:
    patch:
      summary: Update page SEO settings
      description: >-
        <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>
      operationId: >-
        patch_page_settings_api_apps__app_id__seo_page_settings__page_name__patch
      parameters:
        - name: page_name
          in: path
          required: true
          schema:
            type: string
            description: >-
              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`.
            title: Page Name
          description: >-
            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`.
          example: services/HouseWashing
        - name: app_id
          in: path
          required: true
          schema:
            type: string
            description: ID of the app whose SEO settings you want.
            title: App Id
          description: ID of the app whose SEO settings you want.
          example: 6820f3a4e7b91d003c45a1f2
      requestBody:
        required: true
        content:
          application/json:
            schema:
              title: UpdatePageSettings
              type: object
              additionalProperties: false
              properties:
                noindex:
                  anyOf:
                    - type: boolean
                    - type: 'null'
                  description: >-
                    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.
                  example: true
                ignore_parent_noindex:
                  anyOf:
                    - type: boolean
                    - type: 'null'
                  description: >-
                    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`.
                  example: true
            example:
              noindex: true
      responses:
        '200':
          description: The page's settings after the change.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SEOPageSettingsResponse'
        '400':
          description: >-
            The page name is empty or only whitespace, is longer than 200
            characters, or starts with `$`.
        '401':
          description: Missing or invalid credentials.
        '403':
          description: >-
            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':
          description: >-
            The app doesn't exist, or it has no page by that name and no saved
            settings under it.
        '422':
          description: >-
            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':
          description: >-
            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.
      security:
        - PersonalAccessTokenAuth:
            - full_access
components:
  schemas:
    SEOPageSettingsResponse:
      properties:
        result:
          $ref: '#/components/schemas/SEOPageSettings'
          description: >-
            Settings saved for the page, or an empty object if the page has none
            and the call changes nothing.
      type: object
      required:
        - result
      title: SEOPageSettingsResponse
    SEOPageSettings:
      properties:
        title:
          anyOf:
            - type: string
            - type: 'null'
          title: Title
          description: >-
            Title tag for this page. The key is absent while the page overrides
            no title.
          example: Acme CRM
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
          description: >-
            Meta description for this page. The key is absent while the page
            overrides no description.
          example: Track leads and deals in one place.
        og_image:
          anyOf:
            - type: string
              maxLength: 2048
            - type: 'null'
          title: Og Image
          description: >-
            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.
          example: https://cdn.example.com/acme-og.png
        noindex:
          type: boolean
          title: Noindex
          description: >-
            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.
          default: false
          example: false
      type: object
      title: SEOPageSettings
      description: >-
        The meta tags one page overrides, and whether it's hidden from search
        engines.
  securitySchemes:
    PersonalAccessTokenAuth:
      type: http
      scheme: bearer
      description: >-
        Personal access token, sent as `Authorization: Bearer <token>`. Each
        operation lists the permission it needs: `read_only` or `full_access`. A
        full-access token can call every operation. A read-only token can call
        only the operations that list `read_only`; anything else returns 403
        `read_only_credential_route_not_allowed`.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.