Atlas CMS
API Reference

Management Overview

Reference for the Atlas CMS Management (write) API — create, update, publish, and delete entries, pages, and media.

Management API

This reference covers the Management API — the write side of Atlas, used to create, update, publish, and delete content programmatically. All endpoints live under /api/v1/manage/*.

Management API vs. Public API

This page documents writes. If you're looking for the read-only, headless delivery API your website or app uses to fetch published content, see the Public API reference instead.

EnvironmentBase URL
Productionhttps://api.atlas.latellu.com/api/v1/manage
Self-hosted (default)http://localhost:8080/api/v1/manage

Interactive endpoint reference

This page is a hand-written overview. For the full interactive "Try it" panel — generated from the OpenAPI spec, with every /manage endpoint's request/response schema — see the Management endpoint reference.

Authentication

Every Management API request requires an X-API-Key header carrying a management key (prefix atlas_mgmt_). See Management API authentication for how to mint a key, its scopes, and the RBAC/service-actor model.

X-API-Key: atlas_mgmt_<your_key>

Every write is attributed to the key's creator and is subject to that user's workspace permissions — a management key cannot do anything its creator couldn't do from the dashboard.

Writes accept an optional Idempotency-Key header. Send the same value on a retried request to get back the original result instead of creating a duplicate.

Idempotency-Key: <uuid>

Entries

Manage entries of a given content type, identified by :slug (content-type slug) and :entry_slug (the entry's own slug).

MethodPathRequired scopeDescription
POST/content-types/:slug/entriescontent:writeCreate a new entry (draft).
PUT/content-types/:slug/entries/:entry_slugcontent:writeReplace an entry's data.
DELETE/content-types/:slug/entries/:entry_slugcontent:writeDelete an entry.
PATCH/content-types/:slug/entries/:entry_slug/publishcontent:publishPublish an entry.
PATCH/content-types/:slug/entries/:entry_slug/unpublishcontent:publishUnpublish a published entry.
PATCH/content-types/:slug/entries/:entry_slug/archivecontent:publishArchive an entry.
PATCH/content-types/:slug/entries/:entry_slug/schedulecontent:publishSchedule an entry to publish at a future time.
POST/content-types/:slug/entries/:entry_slug/duplicatecontent:writeDuplicate an entry as a new draft.
PATCH/content-types/:slug/entries/bulkcontent:write or content:publishApply lifecycle operations to multiple entries at once.
DELETE/content-types/:slug/entries/bulkcontent:writeDelete multiple entries at once.
PATCH/content-types/:slug/entries/reordercontent:writeReorder entries (for orderable content types).

Create an entry

Request
POST /api/v1/manage/content-types/article/entries
X-API-Key: atlas_mgmt_abc123xyz
Content-Type: application/json
Idempotency-Key: 6f2a8e2e-6e0a-4b7e-9b0a-2b0f4b2f9a11

{
  "slug": "hello-world",
  "data": { "title": "Hello, world", "body": "First post." }
}
Response — 200
{
  "success": true,
  "message": "Success",
  "data": { "id": "entry_01h...", "slug": "hello-world", "status": "draft" }
}

Publish an entry

Request
PATCH /api/v1/manage/content-types/article/entries/hello-world/publish
X-API-Key: atlas_mgmt_abc123xyz
Response — 200
{
  "success": true,
  "message": "Success",
  "data": { "slug": "hello-world", "status": "published", "published_at": "2026-07-05T10:00:00Z" }
}

Pages

Manage pages, identified by :slug.

MethodPathRequired scopeDescription
POST/pagescontent:writeCreate a new page (draft).
PUT/pages/:slugcontent:writeReplace a page's SEO and blocks.
DELETE/pages/:slugcontent:writeDelete a page.
PATCH/pages/:slug/publishcontent:publishPublish a page.
PATCH/pages/:slug/unpublishcontent:publishUnpublish a published page.
PATCH/pages/:slug/archivecontent:publishArchive a page.
PATCH/pages/:slug/schedulecontent:publishSchedule a page to publish at a future time.
PATCH/pages/:slug/blocks/reordercontent:writeReorder a page's blocks.

Create a page

Request
POST /api/v1/manage/pages
X-API-Key: atlas_mgmt_abc123xyz
Content-Type: application/json

{
  "slug": "about",
  "seo": { "title": "About us" },
  "blocks": [{ "type": "hero", "data": { "heading": "About us" } }]
}
Response — 200
{
  "success": true,
  "message": "Success",
  "data": { "id": "page_01h...", "slug": "about", "status": "draft" }
}

Reorder blocks

Request
PATCH /api/v1/manage/pages/about/blocks/reorder
X-API-Key: atlas_mgmt_abc123xyz
Content-Type: application/json

{ "order": ["block_1", "block_2"] }
Response — 200
{
  "success": true,
  "message": "Success",
  "data": { "slug": "about", "blocks": ["block_1", "block_2"] }
}

Media

MethodPathRequired scopeDescription
POST/media/uploadmedia:writeUpload a media asset.
PUT/media/:idmedia:writeUpdate a media asset's metadata (e.g. alt text).
DELETE/media/:idmedia:writeDelete a media asset.

Upload a media asset

Request
POST /api/v1/manage/media/upload
X-API-Key: atlas_mgmt_abc123xyz
Content-Type: multipart/form-data

file=@cover.jpg
alt=Cover image
Response — 200
{
  "success": true,
  "message": "Success",
  "data": { "id": "media_01h...", "url": "https://cdn.atlas.latellu.com/cover.jpg" }
}

Error codes

In addition to the standard error envelope, these codes are specific to management writes:

StatusMeaning
401 UnauthorizedX-API-Key is missing, or the key is the wrong class — e.g. an atlas_live_ (delivery) key was used against /api/v1/manage/*.
403 ForbiddenThe key is a valid management key but lacks the scope required for this endpoint (content:write, content:publish, or media:write), or the key's creator lacks the RBAC permission for this workspace/resource.
401 — Wrong key class
{
  "success": false,
  "message": "this endpoint requires a management API key",
  "code": "UNAUTHORIZED",
  "traceId": "req_a1b2c3d4"
}
403 — Missing scope
{
  "success": false,
  "message": "this key does not have the 'content:publish' scope",
  "code": "FORBIDDEN",
  "traceId": "req_e5f6g7h8"
}

See Error Handling for the full response envelope format, and Management API authentication for scopes and the service-actor/RBAC model.

On this page