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

# 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`. The page's other fields, and every other page, keep their saved values. 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.

The page has to be one of the app's pages or already have saved SEO settings. Any other name is rejected rather than added. A body that sets nothing, either an empty object or `noindex` set to `null`, changes nothing and returns the page's current settings.

Saving itself is immediate. The live site is served from a separate copy, which is updated right after, but that update isn't guaranteed to happen in the same moment and can lag. A successful call means the setting is stored, not that the live site has caught up.

This is limited to 30 requests a minute per caller for each app, shared with the app's other SEO endpoints. Some workspaces have a different limit.

<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`. The page's other fields, and every
        other page, keep their saved values. 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.


        The page has to be one of the app's pages or already have saved SEO
        settings. Any other name is rejected rather than added. A body that sets
        nothing, either an empty object or `noindex` set to `null`, changes
        nothing and returns the page's current settings.


        Saving itself is immediate. The live site is served from a separate
        copy, which is updated right after, but that update isn't guaranteed to
        happen in the same moment and can lag. A successful call means the
        setting is stored, not that the live site has caught up.


        This is limited to 30 requests a minute per caller for each app, shared
        with the app's other SEO endpoints. Some workspaces have a different
        limit.


        <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.
                  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 none of them accept a read-only
            credential, including the ones that only read.
        '404':
          description: The app doesn't exist, or it has no page by that name.
        '422':
          description: >-
            The body is missing or isn't a JSON object, it carries a field other
            than `noindex`, or `noindex` can't be read as a boolean.
        '429':
          description: >-
            Rate limit exceeded. The base limit is 30 requests per minute,
            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.
components:
  schemas:
    SEOPageSettingsResponse:
      properties:
        result:
          $ref: '#/components/schemas/SEOPageSettings'
          description: >-
            The page's settings after the change. This is an empty object for a
            page with no saved settings when the call changes nothing.
      type: object
      required:
        - result
      title: SEOPageSettingsResponse
      description: One page's SEO settings.
    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>`.'

````