Entries
Read published entry data from Atlas CMS through the Public API.
Entries
If a Content Type is the blueprint (schema), an Entry is the record (actual data). Every article, author, or piece of content you store is an entry of some content type.
Entry Lifecycle
Entries move through three states. Only Published entries are returned by the Public API by default.
| Status | Description |
|---|---|
| Draft | Being created or edited. Not visible on the Public API unless you use draft preview. |
| Published | Approved and available to read via the Public API. |
| Archived | Retired content. Hidden from the Public API, kept in the CMS. |
Content editors manage these transitions from the Atlas dashboard. Draft preview
allows your frontend to preview a draft entry before it goes live — see the
Entry API Reference for the GET /public/preview endpoint.
Creating and publishing entries
Creating, editing, and publishing entries is done through the Atlas dashboard or via the Admin API (documented in a later phase).
Reading Entries
Fetch published entries from your frontend app using the Public API. Every request
requires an X-API-Key header (see Authentication).
const res = await fetch(
'https://api.atlas.latellu.com/api/v1/public/entries?type=article',
{ headers: { 'X-API-Key': process.env.ATLAS_API_KEY } },
);
const { data, meta } = await res.json();
// data → array of entries
// meta → pagination info (total, page, limit, next_cursor){
"success": true,
"message": "Success",
"data": [
{
"slug": "getting-started-with-headless-cms",
"status": "published",
"data": {
"title": "Getting Started with Headless CMS",
"summary": "A beginner-friendly introduction to decoupled content management.",
"cover_image": {
"url": "https://cdn.atlas.latellu.com/blog/covers/headless-cms-intro.webp",
"width": 1200,
"height": 630
},
"author": {
"slug": "arya-santoso",
"data": { "name": "Arya Santoso" }
},
"published_at": "2026-05-10T08:00:00Z"
}
},
{
"slug": "api-driven-content-strategy",
"status": "published",
"data": {
"title": "API-Driven Content Strategy for Modern Teams",
"summary": "How leading companies structure their content for multi-channel delivery.",
"published_at": "2026-05-03T08:00:00Z"
}
}
],
"meta": {
"total": 38,
"page": 1,
"limit": 10,
"next_cursor": "eyJpZCI6IDEwfQ"
}
}Fetch a Single Entry
const res = await fetch(
'https://api.atlas.latellu.com/api/v1/public/entries/getting-started-with-headless-cms',
{ headers: { 'X-API-Key': process.env.ATLAS_API_KEY } },
);
const { data } = await res.json();{
"success": true,
"data": {
"slug": "getting-started-with-headless-cms",
"status": "published",
"data": {
"title": "Getting Started with Headless CMS",
"summary": "A beginner-friendly introduction to decoupled content management.",
"cover_image": {
"id": "0190d1a1-0000-7000-8000-000000000001",
"url": "https://cdn.atlas.latellu.com/blog/covers/headless-cms-intro.webp",
"alt": "Illustration of decoupled CMS architecture",
"width": 1200,
"height": 630,
"mime_type": "image/webp"
},
"author": {
"slug": "arya-santoso",
"data": {
"name": "Arya Santoso",
"avatar": { "url": "https://cdn.atlas.latellu.com/avatars/arya.jpg" }
}
},
"tags": ["headless", "cms", "tutorial"],
"published_at": "2026-05-10T08:00:00Z"
},
"translations": {
"id": {
"data": {
"title": "Memulai dengan Headless CMS",
"summary": "Pengenalan ramah pemula untuk manajemen konten terpisah."
}
}
}
}
}Response Shape
Each entry object follows this structure:
| Field | Type | Description |
|---|---|---|
slug | string | URL-safe unique identifier for the entry. |
status | string | Always "published" for Public API responses (unless using a preview key). |
data | object | Field values for the default locale. Every field from the content type appears here. |
translations | object | Per-locale overrides keyed by locale code. Only localizable fields appear here. |
data— field values for the default locale. Every field from the content type appears here.translations.<locale>.data— field values overridden for that locale (only fields markedlocalizable). See Localization.
For pagination, filtering, and sorting parameters, see Pagination & Filtering.
What goes inside data?
Because every workspace defines its own content types, the keys of data (and
translations.<locale>.data) differ per content type — the API reference cannot
list them as fixed fields. Use the Schema Explorer below to fetch a content
type's real fields and generate a matching example payload.
Schema Explorer
The token and workspace ID stay in this browser (saved to localStorage) and are sent only to the API base URL above.
Full Endpoint Reference
See the Entry API Reference for the complete parameter
list for GET /public/entries, GET /public/entries/{slug}, and
GET /public/preview.