# Content & Publishing

> Collections, blog posts, pages and site-wide navigation, with drafts, review, scheduling and redirects.

> Markdown version of https://kanorio.com/en/developers/products/content. Append `.md` to any developer docs URL for this format. Index: https://kanorio.com/llms.txt · MCP: https://app.kanorio.com/api/mcp

Status: **Available**

Content is everything a site publishes: your own structured collections, the blog, pages built from sections, and the header, footer and settings shared by every page. The same content serves the Kanorio-hosted site and any front end you build.

## Core objects

- **Collections and items.** You define a collection's fields, such as text, rich text, numbers, dates, media and references to other collections, and its items hold the data. Collections can restrict fields to members or buyers.
- **Posts.** The blog is a set of built-in collections: posts, categories, tags and authors. Posts support review before publishing and scheduled publishing.
- **Pages and sections.** Each page is an ordered list of typed sections. The hosted site renders them; a headless front end reads the same data.
- **Globals.** The header, footer and site settings, such as call-to-action buttons and social links.
- **Redirects and revisions.** Renaming a page creates a redirect automatically, and earlier versions of content can be restored.
- **Imports.** Move posts from another platform, with images, categories and original dates kept.

## How the APIs fit

- Write with the Management API. Writes to pages, globals and posts are drafts until a publish operation runs. Collection items publish immediately unless you ask for a draft.
- Read published content with the Content Delivery API. It is anonymous, edge-cached and safe for the browser, and every response resolves media in one `assets` map.
- Listen for `collections.item.*`, `content.page.*` and `content.translation.*` webhooks, whose `cacheTags` let you refresh exactly the pages that changed, in exactly the locales that changed.

## What the APIs expose

| Capability | Status | API | Elements | Hosted site | Webhooks |
| --- | --- | --- | --- | --- | --- |
| Collections (structured content) | Available | Management API `collections.*` (typed fields including references, media and `json`; field-level `accessPolicy`), `items.*`; Delivery `GET /collections/*` (`filter[f][op]`, `filter[any]`, relative dates `now-30d`, `sort`, `total=false`, `assets` map, `expand` full `fieldData`, `has_slug` / `eq_slug`, `access` summary & `Bearer knr_cat_` gating); CLI `kanorio types` | — | `/data` workbench; collection list / detail pages | `collections.item.*`, `collections.items.bulkChanged`, `collections.schema.changed` |
| Blog (system collections) | Available | Management API `posts.*`, `blog_categories.list`, `blog_tags.list`; Delivery `GET /collections/blog/items` (`?formats=markdown,html,plaintext`, `segments[]`, `toc[]`, `primary_author`, `primary_category`), `GET /feed` (RSS 2.0) & `GET /feed.atom` | — | `/posts` editor, `/data/blog`; hosted `/blog`, `/blog/:slug` | `collections.item.*` |
| Pages, globals (header/footer) & redirects | Available | Management API `pages.*`, `globals.*`, `site.publish`; Delivery `GET /pages`, `GET /pages/:slug`, `GET /globals/headers/:key`, `GET /globals/footer`, `GET /redirects` | — | `/editor` visual builder | `content.page.*`, `content.site.published` (with `previousSlug` & `cacheTags`) |
| Draft preview tokens (`knr_pv_`) | Available | Management API `site.create_preview_token`; Delivery `X-Kanorio-Preview: knr_pv_...` (edge HMAC verified, bypasses cache); SDK `@kanorio/sdk/preview` (`createPreviewRouteHandler`, `previewHeaders`, `tokenFromCookieHeader`) | — | `/settings/developer` preview token manager; `/console` Preview button | — |
| GraphQL API | Not offered | — | — | — | — |
| Multi-environment / schema branching & content staging environments | Not offered | — | — | — | — |
| Scheduled publishing for posts & collection items | Available | `posts.publish` / `items.publish` accept optional `scheduledAt` (freezes text content as a revision — posts: title/excerpt/contentMarkdown/showToc, items: fieldData/slug — and publishes that exact snapshot when due; taxonomy, SEO and sortOrder are not frozen); `posts.unschedule` / `items.unschedule` to cancel | — | `/posts` and `/data` publish button (schedule picker, badge, cancel, "Scheduled" quick filter) | — |
| Batch release packages & multi-step approval workflows (assigned reviewers, comment threads) | Not offered | — | — | — | — |
| Per-item revision history, trash, optimistic concurrency & edit/publish separation for custom Collections and blog posts | Available | Management API `revisions.*` (`subject: CONTENT_ITEM` or `BLOG_POST`, up to 50 revisions/item, 30-day retention); `items.list_archived`, `items.restore`, `items.purge`; `items.update` / `items.bulk_update` / `posts.update` accept `ifUnmodifiedSince` and return `CONFLICT` with the current `updatedAt` instead of silently overwriting; `collections:publish` / `blog:publish` scopes are separate from `collections:manage` / `blog:manage` | — | `/data` workbench record panel (version history tab, trash view, conflict banner); `/posts` article editor (conflict banner) | — |
| `items.bulk_delete` & Import/Export REST API | Not offered | — | — | — | — |
| Visual click-to-edit overlays (Content Source Maps / stega) on external storefronts | Not offered | — | — | — | — |

## API reference

- Management API: [Sections](https://kanorio.com/en/developers/management-api/sections) (1 operations)
- Management API: [Globals](https://kanorio.com/en/developers/management-api/globals) (7 operations)
- Management API: [Pages](https://kanorio.com/en/developers/management-api/pages) (7 operations)
- Management API: [Posts](https://kanorio.com/en/developers/management-api/posts) (9 operations)
- Management API: [Imports](https://kanorio.com/en/developers/management-api/imports) (7 operations)
- Management API: [Blog categories](https://kanorio.com/en/developers/management-api/blog_categories) (2 operations)
- Management API: [Blog tags](https://kanorio.com/en/developers/management-api/blog_tags) (2 operations)
- Management API: [Authors](https://kanorio.com/en/developers/management-api/authors) (3 operations)
- Management API: [Collections](https://kanorio.com/en/developers/management-api/collections) (5 operations)
- Management API: [Items](https://kanorio.com/en/developers/management-api/items) (15 operations)
- Management API: [Revisions](https://kanorio.com/en/developers/management-api/revisions) (3 operations)
- Content Delivery API: [Redirects](https://kanorio.com/en/developers/delivery-api/redirects) (1 operations)
- Content Delivery API: [Pages](https://kanorio.com/en/developers/delivery-api/pages) (2 operations)
- Content Delivery API: [Globals](https://kanorio.com/en/developers/delivery-api/globals) (2 operations)
- Content Delivery API: [Collections](https://kanorio.com/en/developers/delivery-api/collections) (1 operations)
- Content Delivery API: [Items](https://kanorio.com/en/developers/delivery-api/items) (2 operations)
- Content Delivery API: [Feed](https://kanorio.com/en/developers/delivery-api/feed) (2 operations)

## Webhook events

- `collections.item.created`: Fired when a collection item is created (includes publicVersion and cacheTags).
- `collections.item.updated`: Fired when a collection item draft or published payload is updated.
- `collections.item.published`: Fired when a collection item is published and visible on the Content Delivery API.
- `collections.item.unpublished`: Fired when a collection item is unpublished and removed from the Content Delivery API.
- `collections.item.deleted`: Fired when a collection item is permanently deleted.
- `collections.items.bulkChanged`: Fired once per batch operation (bulkCreate, bulkUpdate, publish/unpublish batch, or CSV/JSON import).
- `collections.schema.changed`: Fired when a collection or its field schema is created, updated, or deleted (triggers `kanorio types` regeneration).
- `content.site.published`: Fired when a site is published, invalidating pages, globals, and redirects caches.
- `content.page.published`: Fired when a page is published on the site.
- `content.page.updated`: Fired when a published page's content or slug is updated (includes previousSlug when renamed).
- `content.page.unpublished`: Fired when a page is unpublished or hidden.
- `content.page.deleted`: Fired when a page is deleted.

Payloads: https://kanorio.com/en/developers/webhooks/events

## Guides

- [Read pages, posts and collections](https://kanorio.com/en/developers/guides/read-content): Load your site's navigation, pages, blog posts, collections and search results from the Content Delivery API, with images resolved and types generated.

## Recent changes

- 2026-11-04: Localization: publishing one locale needs the record's publish permission
- 2026-11-04: Localization: each locale can have its own URL slug
- 2026-11-03: Site brand identity: one setting for hosted pages, checkout, sign-in, emails and your own front end
- 2026-11-01: Authors and instructors: one shared list for posts and deliverables
- 2026-10-31: Import posts from another site

Full changelog: https://kanorio.com/en/developers/changelog

## For site owners

Dashboard help: https://kanorio.com/en/help/data-workbench
