Categories

Categories are publication-scoped primary groupings for posts. A post can have one category, set through /post/save. Active categories with visible posts are available through the public category routes.

Authentication

All routes require a bearer token and the stated publication capability. Use a publication selector for lists and creates. An existing category_id identifies the publication; an accompanying selector must match.

Routes

Route Methods Capability Required input Optional input and behavior Success result
/category/list GET, POST taxonomy.list Publication selector Pagination Paginated categories.
/category/get POST taxonomy.list category_id, or publication selector plus slug category.
/category/save POST taxonomy.save Create: publication selector and name; update: category_id name, slug, description, summary, active, featured_media_id, seo, metadata Saved category.
/category/merge POST taxonomy.merge source_category_id, target_category_id Merge result.
/category/delete POST taxonomy.delete category_id Matching publication selector Deleted category.

Category object

{
  "category_id": "CATEGORY_UUID",
  "publication_id": "PUBLICATION_UUID",
  "slug": "release-notes",
  "name": "Release notes",
  "description": "Product release announcements.",
  "summary": "Release notes and deployment announcements.",
  "active": true,
  "featured_media_id": "MEDIA_UUID",
  "seo": null,
  "metadata": null
}

Save a category

Field Required Type Description
category_id No UUID Updates this category. Omit to create.
publication_id / publication_slug Required on create UUID / String Selects the publication.
name Required on create String Display name. Omit it on update to retain the stored value.
slug No String Unique in the publication. Omit or send an empty value to derive it from name.
description No String or null Longer category copy.
summary No String or null Short listing text, at most 280 characters.
active No Boolean Defaults to true when creating.
featured_media_id No UUID or null Ready media from this publication.
seo, metadata No Object, Array, or null Integration-defined JSON data.
{
  "publication_slug": "engineering-notes",
  "name": "Release notes",
  "summary": "Release notes and deployment announcements.",
  "active": true
}

active: false removes the category and posts assigned to it from public reads without changing post lifecycle state. /category/merge moves all source-category posts to the target category and removes the source. Delete is permanent and returns 409 while posts still use the category.