---
title: "Create Page"
method: POST
path: "/v3/portals/{portalId}/pages"
tags: ["Pages"]
---

# Create Page

`POST /v3/portals/{portalId}/pages`

Creates a new custom page for this portal. Custom pages can be used to display static content, documentation, or other information to developers. Title and Description properties may be provided in the frontmatter section of `content`. If you set values in both the `POST` request _and_ in the frontmatter, the values in frontmatter will take precedence.

## Path parameters

- `portalId` string, uuid, required

## Request body

- CreatePortalPageRequest — Create a page in a portal.
  - `slug` string, required — The slug of a page in a portal, used to compute its full URL path within the portal hierarchy. When a page has a `parent_page_id`, its full path is built by joining the parent’s slug with its own. For example, if a parent page has the slug `slug1` and this page’s slug is `slug2`, the resulting path will be `/slug1/slug2`. This enables nested page structures like `/slug1/slug2/slug3`.
  - `title` string — The title of a page in a portal.
  - `content` string, required — The renderable markdown content of a page in a portal.
  - `visibility` 'public' | 'private' — Whether a page is publicly accessible to non-authenticated users. If not provided, the default_page_visibility value of the portal will be used.
  - `status` 'published' | 'unpublished' — Whether the resource is visible on a given portal. Defaults to unpublished.
  - `description` string
  - `parent_page_id` string, uuid, nullable — Pages may be rendered as a tree of files. Specify the `id` of another page as the `parent_page_id` to add some hierarchy to your pages.

## Response `201`

Details about a page in a portal.

- PortalPageResponse — Details about a page in a portal.
  - `id` string, uuid, required — Contains a unique identifier used for this resource.
  - `slug` string, required — The slug of a page in a portal, used to compute its full URL path within the portal hierarchy. When a page has a `parent_page_id`, its full path is built by joining the parent’s slug with its own. For example, if a parent page has the slug `slug1` and this page’s slug is `slug2`, the resulting path will be `/slug1/slug2`. This enables nested page structures like `/slug1/slug2/slug3`.
  - `title` string, required — The title of a page in a portal.
  - `content` string, required — The renderable markdown content of a page in a portal.
  - `visibility` 'public' | 'private', required — Whether the resource is publicly accessible to non-authenticated users.
  - `status` 'published' | 'unpublished', required — Whether the resource is visible on a given portal. Defaults to unpublished.
  - `description` string
  - `created_at` string, date-time, required — An ISO-8601 timestamp representation of entity creation date.
  - `updated_at` string, date-time, required — An ISO-8601 timestamp representation of entity update date.
  - `parent_page_id` string, uuid, nullable, required — Pages may be rendered as a tree of files. Specify the `id` of another page as the `parent_page_id` to add some hierarchy to your pages.

## Other responses

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

---

[API](https://skmtc.net/kong/apis/konnect-api-beta.md) · [All operations](https://skmtc.net/kong/apis/konnect-api-beta/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/kong/konnect-api-beta/revisions/658ffb748f95/schema)
