Referensi API publik
Semua yang ada di bawah /v1/public: apa yang Anda kirim, apa yang kembali, dan bagaimana cache-nya.
Baca 4 menit
Ikhtisar
API publik bersifat hanya-baca kecuali tiga endpoint tulis kecil (formulir lead, pencatatan 404, dan analitik). Setiap path di bawah ini relatif terhadap https://api.atlascms.id.
| Topik | Aturan |
|---|---|
| Base path | /v1/public |
| Autentikasi | Authorization: Bearer atl_read_..., atau header X-Atlas-Token. Tanpa token, brand diambil dari header Host. |
| Envelope | Resource tunggal dan daftar biasa kembali sebagai { "data": ... }. Daftar entri adalah halaman cursor dengan data, links, dan meta. |
| Konten | Hanya konten yang sudah terbit. Token pratinjau juga menjangkau draf, dan responsnya private, no-store. |
| Locale | Kirim locale untuk memilih bahasa. Default brand dipakai bila dihilangkan. |
curl -s "https://api.atlascms.id/v1/public/settings" \
-H "Authorization: Bearer $ATLAS_TOKEN" | jq '.data.brand.slug'Error
| Status | Arti |
|---|---|
| 401 | Token tidak ada padahal diperlukan, tidak valid, kedaluwarsa, atau dicabut. Lebih dari 30 token tidak valid per menit dari satu alamat dijawab 429. |
| 403 | Brand ditangguhkan, atau tipe konten kustom membutuhkan peran lebih tinggi daripada yang dimiliki pemanggil publik. |
| 404 | Tidak ada entri yang terbit di path itu, locale bukan salah satu milik brand, atau record milik brand lain. |
| 422 | Parameter wajib tidak ada atau tidak valid, misalnya permintaan halaman tanpa path. Isinya { "message", "errors": { "field": ["..."] } }. |
| 429 | Terlalu banyak permintaan. Lihat batas laju di bawah. |
Setiap respons membawa header X-Request-Id (req_ dan sepuluh karakter heksadesimal). Sebutkan saat Anda menulis ke dukungan.
Cache dan ETag
Setiap respons membawa header ETag dan Cache-Control, dan If-None-Match yang cocok dijawab 304 tanpa body. Untuk page, route, entries, dan sitemap-urls, ETag diturunkan dari versi konten brand, sehingga 304 dijawab sebelum rendering apa pun. Penerbitan, atau perubahan apa pun yang mengubah output yang tayang, menaikkan versi konten dan dengan begitu membatalkan semua ETag lama sekaligus.
URL="https://api.atlascms.id/v1/public/page?path=/&locale=en"
ETAG=$(curl -s -D - -o /dev/null "$URL" -H "Authorization: Bearer $ATLAS_TOKEN" \
| grep -i '^etag:' | cut -d' ' -f2- | tr -d '\r')
curl -s -o /dev/null -w '%{http_code}\n' "$URL" \
-H "Authorization: Bearer $ATLAS_TOKEN" -H "If-None-Match: $ETAG"
# 304| Header | Nilai |
|---|---|
Cache-Control | max-age=60, public, stale-while-revalidate=300 pada respons pengiriman. Respons pratinjau private, no-store. |
ETag | "cv{version}-{window}-{hash}" untuk page, route, entries, dan sitemap-urls. Hash dari body untuk endpoint lainnya. |
Vary | Authorization, X-Atlas-Token |
Cache body singkat di sisi server (120 detik secara default) berada di balik ETag; kenaikan versi konten membuat semua body lama tidak terjangkau. SDK dan layer Nuxt melakukan revalidasi dengan ETag untuk Anda.
Batas laju
| Panggilan | Batas |
|---|---|
| Baca dengan token | 6000 per menit per token |
| Baca tanpa token | 600 per menit per host dan alamat |
POST forms/{key} | 10 per menit per token dan alamat pengunjung |
POST beacon | 300 per menit per token dan alamat pengunjung |
POST events | 600 per menit per token dan alamat pengunjung |
Situs yang memanggil API dari servernya sebaiknya mengirim alamat pengunjung di X-Atlas-Client-Ip dan X-Atlas-Client-User-Agent, agar pengunjung yang dinilai, bukan server. API hanya mempercayai header ini pada panggilan yang membawa token baca.
Halaman
/v1/public/pageHalaman yang terbit pada sebuah path: block, SEO, tautan terjemahan, route yang cocok, dan tema yang merendernya.
| Parameter | Deskripsi |
|---|---|
path | Wajib. Path entri, hingga 255 karakter. / mengembalikan halaman depan yang dipilih brand di pengaturan Membaca. |
locale | Opsional. Salah satu bahasa milik brand. |
type | Opsional. Batasi pencarian ke satu tipe entri. |
Field respons: id, type, locale, path, is_front_page, template, title, seo, fields (field bertipe dari tipe kustom), terms, published_at, modified_at, blocks, translations ([{ locale, path }]), fragments, route, theme, dan fallback. 404 berarti tidak ada halaman yang terbit. Ketika brand menampilkan artikel terbaru di depan, path=/ adalah 404 dan endpoint route yang menjawab.
curl -s "https://api.atlascms.id/v1/public/page?path=/pricing&locale=en" \
-H "Authorization: Bearer $ATLAS_TOKEN"Route
/v1/public/routeHanya block route dan theme, untuk path yang dijawab 404 oleh endpoint halaman: arsip, halaman artikel, pencarian, halaman tidak ditemukan, atau root locale ketika menampilkan artikel terbaru. Locale yang tidak dikenal adalah 404.
| Parameter | Deskripsi |
|---|---|
path | Wajib. Path yang akan diselesaikan. |
locale | Opsional. |
q | Opsional. Teks pencarian, untuk route pencarian. |
{
"data": {
"path": "/search",
"locale": "en",
"route": { "kind": "search", "template": "index", "candidates": ["search", "index"] },
"theme": {
"slug": "atlascms",
"version": "0.1.0",
"template": { "slug": "index", "source": "package", "blocks": null },
"parts": { "header": { "slug": "header", "area": "header", "source": "package", "blocks": null } }
}
}
}Entri
/v1/public/entriesDaftar entri yang terbit dengan halaman cursor untuk satu tipe: artikel, halaman, atau tipe kustom.
| Parameter | Deskripsi |
|---|---|
type | Tipe entri, seperti post, page, atau key kustom. |
locale | Salah satu bahasa milik brand. |
term, taxonomy | Saring berdasarkan slug term. taxonomy adalah category atau tag dan menyatakan slug itu mengacu pada yang mana. |
limit | 1 sampai 100. Defaultnya 25, atau jumlah artikel per halaman milik brand untuk type=post. |
cursor | meta.next_cursor dari halaman sebelumnya. |
q | Pencarian teks, hingga 100 karakter, pada path, judul, kutipan, dan deskripsi SEO. |
fields | Dihilangkan: tanpa block, dengan SEO. light: tanpa block dan hanya gambar bagikan di SEO, ditambah author_name untuk artikel. full: menambahkan blocks. |
select | Daftar dipisahkan koma berisi paling banyak 12 field, seperti title,path,fields.version. Ini mengalahkan fields. Field yang tidak dikenal adalah 422. |
count | 1 menambahkan meta.total, jumlah kecocokan tanpa memperhitungkan cursor. |
filter[field] | Kesamaan pada field yang dideklarasikan dari tipe kustom, hingga 5. |
curl -s "https://api.atlascms.id/v1/public/entries?type=post&limit=10&count=1&fields=light" \
-H "Authorization: Bearer $ATLAS_TOKEN"{
"data": [
{ "id": "01m5ffh6...", "type": "post", "locale": "en", "path": "/blog/hello", "title": "Hello", "seo": { "og_image": null }, "author_name": "Sari", "fields": {}, "terms": [], "published_at": "2026-10-21T14:58:33.000000Z" }
],
"links": { "first": null, "last": null, "prev": null, "next": "https://.../v1/public/entries?type=post&cursor=eyJ..." },
"meta": { "per_page": 10, "next_cursor": "eyJ...", "prev_cursor": null, "total": 6 }
}Telusuri daftar dengan mengirim meta.next_cursor sebagai cursor sampai nilainya null.
Menu
/v1/public/menus/{key}Menu navigasi seperti header atau footer. Item membentuk pohon. Setiap item punya label dan boleh punya url, key, eyebrow, description, attributes, dan image ({ url, alt, width, height }). locale memilih bahasa; key yang tidak dikenal adalah 404.
{
"data": {
"id": "01m518vv88kdjb68enh6w74ded",
"key": "header",
"locale": "en",
"items": [
{ "key": "features", "label": "Features", "url": "/features" },
{ "key": "pricing", "label": "Pricing", "url": "/pricing" }
]
}
}Pengaturan
/v1/public/settingsBrand dan pengaturan yang ditandai publik oleh registry. Jawabannya membawa brand (name, slug, default_locale, locales), settings, branding (logo, favicon, gambar bagikan), serta objek reading dan permalinks yang sudah diselesaikan. Key privat tidak pernah muncul. Token pratinjau juga mendapat brand.slug, yang dibandingkan layer Nuxt sebelum menghormati cookie pratinjau.
Tema
/v1/public/themeSet token brand dan opsi tema yang sudah diselesaikan untuk satu locale. tokens berisi warna beserta skalanya, font, dan radius, dan options berisi apa yang diekspos tema untuk diedit. Token pratinjau menerima opsi draf.
| Parameter | Deskripsi |
|---|---|
locale | Opsional. Bahasa untuk teks opsi. |
String
/v1/public/stringsTeks antarmuka yang dikelola brand, dikelompokkan menurut namespace.
| Parameter | Deskripsi |
|---|---|
locale | Opsional. |
namespace | Opsional. Hanya grup ini, seperti site. |
{ "data": { "locale": "en", "strings": { "site": { "copyright": "AtlasCMS.", "language": "English" } } } }Ketentuan
/v1/public/termsKategori dan tag, masing-masing sebagai { taxonomy, slug, name, path } dengan path adalah path arsip dari base permalink brand.
| Parameter | Deskripsi |
|---|---|
taxonomy | category atau tag. |
slug | Satu term. |
Tipe konten
/v1/public/content-typesTipe konten kustom yang dilayani brand, masing-masing dengan daftar field-nya agar situs tidak perlu mengurai skema. Kirim locale untuk mendapat label dalam satu bahasa.
URL sitemap
/v1/public/sitemap-urlsSetiap path publik beserta bahasanya, perubahan terakhir, dan alternatif untuk hreflang: [{ path, locale, type, lastmod, alternates: [{ locale, path }] }].
Redirect
/v1/public/redirectsPeta redirect sebagai [{ from, to, code }]. Memindahkan entri yang terbit menambahkan 301 di sini untuk Anda.
File yang dapat dibaca mesin
/v1/public/llmsData untuk llms.txt, sebagai JSON, atau sebagai teks dengan format=text. Menerima locale.
/v1/public/indexnow-keyFile key IndexNow. 404 bila IndexNow tidak diaktifkan untuk brand.
/v1/public/manifest.webmanifestWeb app manifest brand: nama, ikon (192, 512, dan maskable), warna tema, display: standalone, dan start_url.
Kirim formulir
/v1/public/forms/{key}Mengirim lead dari formulir yang didefinisikan brand. Hanya field yang dideklarasikan formulir yang diterima dan disimpan. Formulir harus aktif, dan modul Formulir harus menyala.
| Field | Deskripsi |
|---|---|
fields | Objek wajib dengan satu entri per field formulir, diperiksa terhadap definisi formulir (aturan email, telepon, pilihan, dan panjang). |
consent | Boolean opsional. |
utm, fbclid, gclid | Atribusi kampanye opsional. |
source_page, referrer, locale | Konteks opsional. |
website | Honeypot. Biarkan kosong; nilai yang terisi mendapat 202 dan tidak ada yang disimpan. |
curl -s -X POST "https://api.atlascms.id/v1/public/forms/contact" \
-H "Authorization: Bearer $ATLAS_TOKEN" -H "Content-Type: application/json" \
-d '{"fields":{"name":"Sari","email":"[email protected]"},"consent":true,"source_page":"/contact"}'Berhasil adalah 201 dengan { "data": { "id", "message" } }. Formulir yang tidak dikenal atau tidak aktif adalah 404, dan field yang tidak valid adalah 422.
Catat halaman tidak ditemukan
/v1/public/not-foundMemungkinkan situs mencatat 404 agar editor melihat apa yang terlewat pengunjung di dashboard dan bisa menambahkan redirect.
Beacon analitik
/v1/public/beaconMenghitung tampilan halaman. Kirim path (diawali /, hingga 512 karakter), dan opsional referrer serta id visitor sepanjang 8 sampai 64 karakter. Jawabannya 204 tanpa body.
Event pelacakan
/v1/public/eventsMengirim event pelacakan ke platform iklan yang dihubungkan brand. Memerlukan token baca. Event browser hanya boleh PageView, ViewContent, atau Lead, dan custom_data.value serta custom_data.currency dibuang. Event bergaya pembelian dan uang memerlukan source: "server", yang hanya bisa dikirim panggilan dengan token baca.
| Field | Deskripsi |
|---|---|
event_name, event_id | Nama dan id unik, agar salinan browser dan server dari satu event dihitung sekali. |
source | browser (default) atau server. |
email, phone, external_id | Data pencocokan untuk platform. |
fbp, fbc, ttclid | Id klik dan browser. |
client_ip, client_user_agent, source_url, custom_data | Konteks dan data tambahan. |
Status
/status.jsonKesehatan publik platform, tanpa token: status (operational, degraded, outage, atau unknown), generated_at, versi API, dan daftar services (database, redis, queue, scheduler) dengan riwayat 90 hari. Di-cache selama 10 detik. Data yang sama mengisi status.atlascms.id.
Referensi lengkap
API menyajikan referensi yang dihasilkan otomatis untuk setiap endpoint, termasuk API dashboard, di /docs/api pada alamatnya sendiri. Gunakan halaman ini sebagai panduan dan halaman itu sebagai daftar lengkap.
Apakah halaman ini membantu?