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.
| Environment | Base URL |
|---|---|
| Production | https://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).
| Method | Path | Required scope | Description |
|---|---|---|---|
POST | /content-types/:slug/entries | content:write | Create a new entry (draft). |
PUT | /content-types/:slug/entries/:entry_slug | content:write | Replace an entry's data. |
DELETE | /content-types/:slug/entries/:entry_slug | content:write | Delete an entry. |
PATCH | /content-types/:slug/entries/:entry_slug/publish | content:publish | Publish an entry. |
PATCH | /content-types/:slug/entries/:entry_slug/unpublish | content:publish | Unpublish a published entry. |
PATCH | /content-types/:slug/entries/:entry_slug/archive | content:publish | Archive an entry. |
PATCH | /content-types/:slug/entries/:entry_slug/schedule | content:publish | Schedule an entry to publish at a future time. |
POST | /content-types/:slug/entries/:entry_slug/duplicate | content:write | Duplicate an entry as a new draft. |
PATCH | /content-types/:slug/entries/bulk | content:write or content:publish | Apply lifecycle operations to multiple entries at once. |
DELETE | /content-types/:slug/entries/bulk | content:write | Delete multiple entries at once. |
PATCH | /content-types/:slug/entries/reorder | content:write | Reorder entries (for orderable content types). |
Create an entry
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." }
}{
"success": true,
"message": "Success",
"data": { "id": "entry_01h...", "slug": "hello-world", "status": "draft" }
}Publish an entry
PATCH /api/v1/manage/content-types/article/entries/hello-world/publish
X-API-Key: atlas_mgmt_abc123xyz{
"success": true,
"message": "Success",
"data": { "slug": "hello-world", "status": "published", "published_at": "2026-07-05T10:00:00Z" }
}Pages
Manage pages, identified by :slug.
| Method | Path | Required scope | Description |
|---|---|---|---|
POST | /pages | content:write | Create a new page (draft). |
PUT | /pages/:slug | content:write | Replace a page's SEO and blocks. |
DELETE | /pages/:slug | content:write | Delete a page. |
PATCH | /pages/:slug/publish | content:publish | Publish a page. |
PATCH | /pages/:slug/unpublish | content:publish | Unpublish a published page. |
PATCH | /pages/:slug/archive | content:publish | Archive a page. |
PATCH | /pages/:slug/schedule | content:publish | Schedule a page to publish at a future time. |
PATCH | /pages/:slug/blocks/reorder | content:write | Reorder a page's blocks. |
Create a page
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" } }]
}{
"success": true,
"message": "Success",
"data": { "id": "page_01h...", "slug": "about", "status": "draft" }
}Reorder blocks
PATCH /api/v1/manage/pages/about/blocks/reorder
X-API-Key: atlas_mgmt_abc123xyz
Content-Type: application/json
{ "order": ["block_1", "block_2"] }{
"success": true,
"message": "Success",
"data": { "slug": "about", "blocks": ["block_1", "block_2"] }
}Media
| Method | Path | Required scope | Description |
|---|---|---|---|
POST | /media/upload | media:write | Upload a media asset. |
PUT | /media/:id | media:write | Update a media asset's metadata (e.g. alt text). |
DELETE | /media/:id | media:write | Delete a media asset. |
Upload a media asset
POST /api/v1/manage/media/upload
X-API-Key: atlas_mgmt_abc123xyz
Content-Type: multipart/form-data
file=@cover.jpg
alt=Cover image{
"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:
| Status | Meaning |
|---|---|
401 Unauthorized | X-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 Forbidden | The 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. |
{
"success": false,
"message": "this endpoint requires a management API key",
"code": "UNAUTHORIZED",
"traceId": "req_a1b2c3d4"
}{
"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.