---
title: "Update Customization"
method: PATCH
path: "/v3/portals/{portalId}/customization"
tags: ["Portal Customization"]
---

# Update Customization

`PATCH /v3/portals/{portalId}/customization`

Update the portal customization options, merging properties.

## Path parameters

- `portalId` string, uuid, required

## Request body

- PortalCustomizationV3 — The custom settings of this portal
  - `theme` object
    - `name` string
    - `mode` 'light' | 'dark' | 'system'
    - `colors` object
      - `primary` string
  - `layout` string
  - `css` string, nullable
  - `menu` object
    - `main` PortalMenuItem[]
      - `path` string, required — The absolute path of a page in a portal with a leading slash.
      - `title` string, required — The link display text
      - `visibility` 'public' | 'private', required — Whether a menu item is public or private. Private menu items are only accessible to authenticated users.
      - `external` boolean, required — When clicked, open the link in a new window
    - `footer_sections` PortalFooterMenuSection[]
      - `title` string, required — The footer menu section title
      - `items` PortalMenuItem[], required
        - `path` string, required — The absolute path of a page in a portal with a leading slash.
        - `title` string, required — The link display text
        - `visibility` 'public' | 'private', required — Whether a menu item is public or private. Private menu items are only accessible to authenticated users.
        - `external` boolean, required — When clicked, open the link in a new window
    - `footer_bottom` PortalMenuItem[]
      - `path` string, required — The absolute path of a page in a portal with a leading slash.
      - `title` string, required — The link display text
      - `visibility` 'public' | 'private', required — Whether a menu item is public or private. Private menu items are only accessible to authenticated users.
      - `external` boolean, required — When clicked, open the link in a new window
  - `spec_renderer` object
    - `try_it_ui` boolean — Enable in-browser testing for your APIs. All linked gateways must have the CORS plugin configured.
    - `try_it_insomnia` boolean — Enables users to open API specifications in Insomnia to explore and send requests with the native client. Only public API specifications are supported.
    - `infinite_scroll` boolean — Display the full spec on a single, scrollable page. If disabled, documentation, endpoints, and schemas appear on separate pages.
    - `show_schemas` boolean — Control whether schemas are visible in your API specs. When enabled, schemas appear in the side navigation below the endpoints.
    - `hide_internal` boolean — Manage visibility of internal endpoints and models.
    - `hide_deprecated` boolean — Manage visibility of deprecated endpoints and models.
    - `allow_custom_server_urls` boolean — Let users define a custom server URL for endpoints. This will be used to generate code snippets and to test the API. The URL is client-side only and is not saved.
  - `robots` string, nullable

## Response `200`

The current customization options for a portal.

- PortalCustomizationV3 — The custom settings of this portal
  - `theme` object
    - `name` string
    - `mode` 'light' | 'dark' | 'system'
    - `colors` object
      - `primary` string
  - `layout` string
  - `css` string, nullable
  - `menu` object
    - `main` PortalMenuItem[]
      - `path` string, required — The absolute path of a page in a portal with a leading slash.
      - `title` string, required — The link display text
      - `visibility` 'public' | 'private', required — Whether a menu item is public or private. Private menu items are only accessible to authenticated users.
      - `external` boolean, required — When clicked, open the link in a new window
    - `footer_sections` PortalFooterMenuSection[]
      - `title` string, required — The footer menu section title
      - `items` PortalMenuItem[], required
        - `path` string, required — The absolute path of a page in a portal with a leading slash.
        - `title` string, required — The link display text
        - `visibility` 'public' | 'private', required — Whether a menu item is public or private. Private menu items are only accessible to authenticated users.
        - `external` boolean, required — When clicked, open the link in a new window
    - `footer_bottom` PortalMenuItem[]
      - `path` string, required — The absolute path of a page in a portal with a leading slash.
      - `title` string, required — The link display text
      - `visibility` 'public' | 'private', required — Whether a menu item is public or private. Private menu items are only accessible to authenticated users.
      - `external` boolean, required — When clicked, open the link in a new window
  - `spec_renderer` object
    - `try_it_ui` boolean — Enable in-browser testing for your APIs. All linked gateways must have the CORS plugin configured.
    - `try_it_insomnia` boolean — Enables users to open API specifications in Insomnia to explore and send requests with the native client. Only public API specifications are supported.
    - `infinite_scroll` boolean — Display the full spec on a single, scrollable page. If disabled, documentation, endpoints, and schemas appear on separate pages.
    - `show_schemas` boolean — Control whether schemas are visible in your API specs. When enabled, schemas appear in the side navigation below the endpoints.
    - `hide_internal` boolean — Manage visibility of internal endpoints and models.
    - `hide_deprecated` boolean — Manage visibility of deprecated endpoints and models.
    - `allow_custom_server_urls` boolean — Let users define a custom server URL for endpoints. This will be used to generate code snippets and to test the API. The URL is client-side only and is not saved.
  - `robots` string, nullable

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found

## Changes

- **2025-10-30** `845120e19d45` — 7 breaking
  - the request property `menu` became not nullable
  - the request property `menu/footer_bottom` became not nullable
  - the request property `menu/footer_sections` became not nullable
  - the request property `menu/main` became not nullable
  - …3 more
- **2025-10-23** `8ab3ec3ed301` — 1 warning
  - added the new `type` enum value to the `allOf[subschema #2]/invalid_parameters/items/oneOf[#/components/schemas/InvalidParameterStandard]/rule` response property for the response status `400`
- **2025-09-11** `396c243e49dc` — 2 info
  - added the new optional request property `spec_renderer/allow_custom_server_urls`
  - added the optional property `spec_renderer/allow_custom_server_urls` to the response with the `200` status
- …earlier changes not shown

[Full history](https://skmtc.dev/kong/apis/konnect-api-go-sdk/changes/v3/portals/:portalId/customization/patch.md)

---

[API](https://skmtc.dev/kong/apis/konnect-api-go-sdk.md) · [All operations](https://skmtc.dev/kong/apis/konnect-api-go-sdk/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/kong/konnect-api-go-sdk/revisions/7d3c634668f8/schema)
