Skip to content

REST API

Base URLs, authentication, conventions and every operation the API serves, generated from the API's own routes.

A workspace serves the API from two addresses, for example for a workspace at your-workspace.contentworker.app:

Surface Address Paths Key kind
Management https://api.your-workspace.contentworker.app /spaces/{space}/environments/{env}/…, plus space-level /spaces/{space}/… CMA
Preview https://api.your-workspace.contentworker.app /preview/{space}/{env}/… CPA
Delivery https://cdn.your-workspace.contentworker.app /delivery/{space}/{env}/… CDA

The cdn. address is the cached, read-only Delivery API meant for sites and apps. The admin’s own address forwards these paths to the API too, which is how the admin itself calls it.

{env} is an environment id or an alias. The OpenAPI 3.1 document for all of it is at /openapi.json here, and every deployment serves its own at GET /openapi.json. The OpenAPI explorer lets you browse it and send requests.

  • Authentication: Authorization: Bearer <token> on every request. See API keys and access.
  • Bodies are JSON (content-type: application/json).
  • IDs are UUIDv7: time-ordered, so sorting by id sorts by creation time.
  • Field values are keyed by field, then by locale, on every write and on reads without locale=: { "title": { "en-US": "Hello" } }.
  • Timestamps are ISO 8601 in UTC.
  • Lists return { "items": [...] }, with total where it’s cheap to count; page with limit and skip.
  • Errors return { "error": { "code", "message" } }, plus issues on a 422. See Errors.
  • Read your writes: every API response carries an x-cw-bookmark header. Send the last value back on your next request and its reads are at least that fresh, even when a read replica answers.
  • Scopes: each operation needs one permission scope, checked against the space in the path.

Every operation the API serves, grouped as the explorer groups them. This list is generated from the API’s routes when these docs are built; request and response bodies are in the explorer.

196 operations.

Platform

System (2)

Liveness/readiness probes.

GET/healthLiveness probe
GET/readyReadiness probe (reports the mounted role)
Auth (17)

Principal resolution (web sign-in, API keys), and ending a person’s credentials.

GET/auth/meResolve the calling principal
DELETE/deployment/people/{subject}/credentialsRevoke every token a person holds
PUT/spaces/{space}/access-settingsChange how people sign in to the space
GET/spaces/{space}/api-keysList API keys for a space
POST/spaces/{space}/api-keysMint an API key
DELETE/spaces/{space}/api-keys/{id}
PUT/spaces/{space}/api-keys/{id}/roleChange an API key’s role
POST/spaces/{space}/membersAdd a person to the team
PATCH/spaces/{space}/members/{id}Change a person’s role, name or access
DELETE/spaces/{space}/members/{id}Remove a person from the team
GET/spaces/{space}/oauth/connectionsList applications connected via OAuth
POST/spaces/{space}/oauth/connections/revokeDisconnect an OAuth application
GET/spaces/{space}/personal-access-tokensList personal access tokens
POST/spaces/{space}/personal-access-tokensMint a personal access token
GET/spaces/{space}/role-presetsList the built-in role presets
POST/spaces/{space}/roles/{id}/cloneClone a role into a new custom role
GET/spaces/{space}/teamList the team: people and long-lived keys with their roles
Spaces & environments (29)

Spaces, environments (branches), aliases, compare/merge, and space config.

GET/spaces
POST/spacesCreate a space (admin token)
GET/spaces/{space}/compare
GET/spaces/{space}/environment-aliases
PUT/spaces/{space}/environment-aliases/{alias}
DELETE/spaces/{space}/environment-aliases/{alias}
GET/spaces/{space}/environments
POST/spaces/{space}/environments
DELETE/spaces/{space}/environments/{env}Delete an environment and everything in it
GET/spaces/{space}/environments/{env}/agent-reviews
POST/spaces/{space}/environments/{env}/agent-reviews/{id}/approve
POST/spaces/{space}/environments/{env}/agent-reviews/{id}/reject
GET/spaces/{space}/environments/{env}/agent-schedules
POST/spaces/{space}/environments/{env}/agent-schedules
PATCH/spaces/{space}/environments/{env}/agent-schedules/{id}
DELETE/spaces/{space}/environments/{env}/agent-schedules/{id}
POST/spaces/{space}/environments/{env}/cloneClone this environment into another
GET/spaces/{space}/environments/{env}/exportExport an environment as a snapshot
POST/spaces/{space}/environments/{env}/importImport a snapshot into this environment
POST/spaces/{space}/environments/{env}/importsRun an import
POST/spaces/{space}/environments/{env}/imports/analyzeAnalyze an import without writing
POST/spaces/{space}/environments/{env}/imports/jobRun an import as a durable job
GET/spaces/{space}/environments/{env}/imports/sourcesList import sources
GET/spaces/{space}/environments/{env}/space-config
POST/spaces/{space}/merge
GET/spaces/{space}/plugins
GET/spaces/{space}/plugins/{id}
DELETE/spaces/{space}/plugins/{id}
POST/spaces/{space}/plugins/{id}/enabled
Roles & permissions (5)

Custom roles with content-type + field grants.

GET/spaces/{space}/roles
POST/spaces/{space}/roles
GET/spaces/{space}/roles/{id}
PUT/spaces/{space}/roles/{id}
DELETE/spaces/{space}/roles/{id}
Audit (2)

Append-only audit trail of mutating actions.

GET/spaces/{space}/audit-log
POST/spaces/{space}/environments/{env}/entries/{id}/audit

Content model

Content types (4)

The content model: types, fields, publishing.

GET/spaces/{space}/environments/{env}/content-typesList content types
POST/spaces/{space}/environments/{env}/content-typesCreate a content type
GET/spaces/{space}/environments/{env}/content-types/{apiId}Get a content type
POST/spaces/{space}/environments/{env}/content-types/{apiId}/published
Taxonomy (10)

Tags, concepts, and concept schemes (SKOS-style).

GET/spaces/{space}/environments/{env}/taxonomy/concepts
POST/spaces/{space}/environments/{env}/taxonomy/concepts
DELETE/spaces/{space}/environments/{env}/taxonomy/concepts/{id}
PUT/spaces/{space}/environments/{env}/taxonomy/concepts/{id}/broader
GET/spaces/{space}/environments/{env}/taxonomy/schemes
POST/spaces/{space}/environments/{env}/taxonomy/schemes
DELETE/spaces/{space}/environments/{env}/taxonomy/schemes/{id}
GET/spaces/{space}/environments/{env}/taxonomy/tags
POST/spaces/{space}/environments/{env}/taxonomy/tags
DELETE/spaces/{space}/environments/{env}/taxonomy/tags/{id}

Authoring

Entries (23)

Authoring: drafts, publishing, bulk operations, metadata.

POST/spaces/{space}/environments/{env}/bulk/entries
POST/spaces/{space}/environments/{env}/bulk/entries/publish
POST/spaces/{space}/environments/{env}/bulk/entries/unpublish
GET/spaces/{space}/environments/{env}/bulk/jobs
POST/spaces/{space}/environments/{env}/bulk/jobs
GET/spaces/{space}/environments/{env}/bulk/jobs/{id}
POST/spaces/{space}/environments/{env}/bulk/jobs/{id}/cancel
GET/spaces/{space}/environments/{env}/bulk/jobs/{id}/report
POST/spaces/{space}/environments/{env}/entriesCreate a draft entry
GET/spaces/{space}/environments/{env}/entries/{id}Get an entry (draft state)
PUT/spaces/{space}/environments/{env}/entries/{id}Save a new draft version
DELETE/spaces/{space}/environments/{env}/entries/{id}Move an entry to the trash
POST/spaces/{space}/environments/{env}/entries/{id}/apply-tags
POST/spaces/{space}/environments/{env}/entries/{id}/duplicateDuplicate an entry
GET/spaces/{space}/environments/{env}/entries/{id}/metadata
PUT/spaces/{space}/environments/{env}/entries/{id}/metadata
DELETE/spaces/{space}/environments/{env}/entries/{id}/permanentPermanently delete a trashed entry
POST/spaces/{space}/environments/{env}/entries/{id}/preview-link
POST/spaces/{space}/environments/{env}/entries/{id}/publishedPublish an entry
DELETE/spaces/{space}/environments/{env}/entries/{id}/publishedUnpublish an entry
POST/spaces/{space}/environments/{env}/entries/{id}/restoreRestore an entry from the trash
GET/spaces/{space}/environments/{env}/entries/{id}/reverse-references
POST/spaces/{space}/environments/{env}/entries/{id}/versions/{version}/restoreRestore a version
Versions (3)

Append-only entry version history, diff, and restore.

GET/spaces/{space}/environments/{env}/entries/{id}/versions
GET/spaces/{space}/environments/{env}/entries/{id}/versions/{version}
GET/spaces/{space}/environments/{env}/entries/{id}/versions/diff
Assets (10)

Media: presigned direct uploads, publishing, transforms.

GET/spaces/{space}/environments/{env}/assets
POST/spaces/{space}/environments/{env}/assetsCreate an asset (presigned direct upload)
GET/spaces/{space}/environments/{env}/assets/{id}
PATCH/spaces/{space}/environments/{env}/assets/{id}/metadata
POST/spaces/{space}/environments/{env}/assets/{id}/published
DELETE/spaces/{space}/environments/{env}/assets/{id}/published
GET/spaces/{space}/environments/{env}/assets/{id}/transform
GET/spaces/{space}/environments/{env}/assets/{id}/usage
POST/spaces/{space}/environments/{env}/assets/{id}/video/refreshRefresh a video asset's processing status from the video host
POST/spaces/{space}/environments/{env}/assets/videosCreate a video asset (direct upload to the video host)
Comments & tasks (7)

Editorial collaboration on entries.

DELETE/spaces/{space}/environments/{env}/comments/{id}
GET/spaces/{space}/environments/{env}/entries/{id}/comments
POST/spaces/{space}/environments/{env}/entries/{id}/comments
GET/spaces/{space}/environments/{env}/entries/{id}/tasks
POST/spaces/{space}/environments/{env}/entries/{id}/tasks
PUT/spaces/{space}/environments/{env}/tasks/{id}
DELETE/spaces/{space}/environments/{env}/tasks/{id}
Workflows (24)

Editorial workflow definitions and entry transitions.

GET/spaces/{space}/environments/{env}/entries/{id}/workflow
POST/spaces/{space}/environments/{env}/entries/{id}/workflow-runsStart a workflow run on an entry
POST/spaces/{space}/environments/{env}/entries/{id}/workflow/transition
GET/spaces/{space}/environments/{env}/workflow-runsList workflow runs
GET/spaces/{space}/environments/{env}/workflow-runs/{id}Get a workflow run
POST/spaces/{space}/environments/{env}/workflow-runs/{id}/cancelCancel a workflow run
POST/spaces/{space}/environments/{env}/workflow-runs/{id}/eventsDeliver an event to a run
GET/spaces/{space}/environments/{env}/workflow-runs/{id}/node-runsList a run’s finished node runs
GET/spaces/{space}/environments/{env}/workflow-runs/{id}/timelineGet a run’s timeline
GET/spaces/{space}/environments/{env}/workflow-settingsRead the space’s workflow settings
PUT/spaces/{space}/environments/{env}/workflow-settingsSet the space’s workflow settings
GET/spaces/{space}/environments/{env}/workflow-tasksList workflow tasks
GET/spaces/{space}/environments/{env}/workflow-tasks/{id}Get a workflow task
POST/spaces/{space}/environments/{env}/workflow-tasks/{id}/decideApprove or reject a task
GET/spaces/{space}/environments/{env}/workflows
POST/spaces/{space}/environments/{env}/workflowsCreate a workflow
GET/spaces/{space}/environments/{env}/workflows/{id}
DELETE/spaces/{space}/environments/{env}/workflows/{id}
PUT/spaces/{space}/environments/{env}/workflows/{id}/draftSave a workflow draft
GET/spaces/{space}/environments/{env}/workflows/{id}/versionsList published versions
POST/spaces/{space}/environments/{env}/workflows/{id}/versionsPublish the draft as a new version
GET/spaces/{space}/environments/{env}/workflows/{id}/versions/{version}Get one published version
POST/spaces/{space}/environments/{env}/workflows/copilotDraft or edit a workflow graph with AI
POST/spaces/{space}/environments/{env}/workflows/validateValidate a workflow graph

Publishing & automation

Releases & scheduling (10)

Grouped releases and scheduled publish/unpublish actions.

GET/spaces/{space}/environments/{env}/releases
POST/spaces/{space}/environments/{env}/releases
GET/spaces/{space}/environments/{env}/releases/{id}
DELETE/spaces/{space}/environments/{env}/releases/{id}
POST/spaces/{space}/environments/{env}/releases/{id}/items
DELETE/spaces/{space}/environments/{env}/releases/{id}/items/{entityId}
POST/spaces/{space}/environments/{env}/releases/{id}/published
GET/spaces/{space}/environments/{env}/scheduled-actions
POST/spaces/{space}/environments/{env}/scheduled-actions
DELETE/spaces/{space}/environments/{env}/scheduled-actions/{id}
Webhooks (5)

Signed event webhooks and delivery logs.

GET/spaces/{space}/environments/{env}/webhooksList webhooks
POST/spaces/{space}/environments/{env}/webhooks
PUT/spaces/{space}/environments/{env}/webhooks/{id}
DELETE/spaces/{space}/environments/{env}/webhooks/{id}
GET/spaces/{space}/environments/{env}/webhooks/{id}/deliveries
Functions (3)

User-defined HTTP functions invoked on domain events.

GET/spaces/{space}/environments/{env}/functions
POST/spaces/{space}/environments/{env}/functions
DELETE/spaces/{space}/environments/{env}/functions/{id}
Apps (9)

App extensions (custom field editors, sidebars).

GET/spaces/{space}/environments/{env}/app-extensions
POST/spaces/{space}/environments/{env}/app-extensions
DELETE/spaces/{space}/environments/{env}/app-extensions/{id}
POST/spaces/{space}/pluginsInstall a plugin
PUT/spaces/{space}/plugins/{id}Upgrade a plugin
POST/spaces/{space}/plugins/{id}/capabilitiesApprove a plugin’s capabilities
PUT/spaces/{space}/plugins/{id}/from-urlUpgrade a plugin from a URL
POST/spaces/{space}/plugins/from-urlInstall a plugin from a URL
POST/spaces/{space}/plugins/from-url/inspectInspect a plugin package without installing it

AI

AI & agents (20)

Generation, translation, moderation, semantic tooling, AI actions, and the agent run ledger.

GET/spaces/{space}/environments/{env}/agent-runs
GET/spaces/{space}/environments/{env}/agent-runs/usage
GET/spaces/{space}/environments/{env}/ai-actions
POST/spaces/{space}/environments/{env}/ai-actions
DELETE/spaces/{space}/environments/{env}/ai-actions/{id}
POST/spaces/{space}/environments/{env}/ai-actions/{id}/run
POST/spaces/{space}/environments/{env}/assets/{id}/alt-text
POST/spaces/{space}/environments/{env}/assets/{id}/auto-tag
POST/spaces/{space}/environments/{env}/entries/{id}/autofill
GET/spaces/{space}/environments/{env}/entries/{id}/duplicates
GET/spaces/{space}/environments/{env}/entries/{id}/embedding
POST/spaces/{space}/environments/{env}/entries/{id}/moderate
GET/spaces/{space}/environments/{env}/entries/{id}/related
POST/spaces/{space}/environments/{env}/entries/{id}/suggest-tags
POST/spaces/{space}/environments/{env}/entries/{id}/summarize
POST/spaces/{space}/environments/{env}/entries/{id}/translate
POST/spaces/{space}/environments/{env}/entries/canvas
POST/spaces/{space}/environments/{env}/entries/generate
GET/spaces/{space}/environments/{env}/search/indexReport lexical search index health
POST/spaces/{space}/environments/{env}/search/reindexRequest a reindex of all published entries

Reference

Guides (3)

The product's own documentation, served over the API so agents can look up conventions with the token they already hold.

GET/guidesList documentation pages
GET/guides/{path}Read a documentation page
GET/guides/searchSearch the documentation

Delivery

Delivery (7)

Published content: REST, hybrid search, SSE, GraphQL.

GET/delivery/{space}/{env}/assetsList published assets
GET/delivery/{space}/{env}/assets/{id}Get a published asset
GET/delivery/{space}/{env}/assets/{id}/transformResolve a transformed image URL
GET/delivery/{space}/{env}/entriesList published entries
GET/delivery/{space}/{env}/entries/{id}Get a published entry
GET/delivery/{space}/{env}/liveLive Content API (SSE)
GET/delivery/{space}/{env}/searchSearch published content
Preview (3)

Draft/current content for previews.

GET/preview/{space}/{env}/entriesList draft/current entries
GET/preview/{space}/{env}/entries/{id}Get a draft/current entry
GET/preview/{space}/{env}/suggestSuggest entries for a chooser