---
title: "Create a new CMS page"
method: POST
path: "/cms/pages"
tags: ["Admin CMS"]
---

# Create a new CMS page

`POST /cms/pages`

## Request

- Base URL: `http://localhost:8000/api/admin`
- URL: `http://localhost:8000/api/admin/cms/pages`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/bagisto/apis/bagisto-admin-api/docs/cms/pages/post.ts> (a function with typed inputs; its response is checked against the schema)

Mirrors Bagisto admin CMS → Pages → Create. Top-level translated fields (page_title, html_content, etc.) are broadcast to every locale by the PageRepository. Validates url_key (required + unique on cms_page_translations + slug regex), page_title, html_content, and channels (non-empty array of existing channel ids).

## Request body

- object
  - `url_key` string, required
  - `page_title` string, required
  - `html_content` string, required
  - `channels` integer[], required
  - `meta_title` string
  - `meta_keywords` string
  - `meta_description` string

## Response `201`

Page created. Returns the same shape as GET /cms/pages/{id}.

## Other responses

- `400`: Invalid input
- `422`: Validation failure.

---

[API](https://skmtc.dev/bagisto/apis/bagisto-admin-api.md) - [All operations](https://skmtc.dev/bagisto/apis/bagisto-admin-api/llms.txt) - [OpenAPI document](https://skmtc.dev/bagisto/apis/bagisto-admin-api/revisions/3198f11be70f?raw)
