CMS Page — Create
Creates a new CMS page.
Top-level fields vs. update locale-nested
Create takes the translated fields (page_title, html_content, meta_*, url_key) at the top level — they are broadcast to every locale by the core PageRepository. The Update endpoint, in contrast, requires a locale-nested payload ({ "en": { "page_title": "...", ... } }).
Endpoint
| Endpoint | Method |
|---|---|
/api/admin/cms/pages | POST |
Request body
| Field | Type | Required | Notes |
|---|---|---|---|
url_key | string | yes | Must be unique on cms_page_translations and pass slug regex. |
page_title | string | yes | |
html_content | string | yes | |
channels | int[] | yes | Non-empty array of existing channel IDs. |
meta_title | string | no | |
meta_keywords | string | no | |
meta_description | string | no |
Response
201 Created returning the same shape as GET /api/admin/cms/pages/{id}.
Errors
| HTTP | Cause |
|---|---|
422 Unprocessable Entity | Validation failure (missing required field, duplicate url_key, empty channels). |

