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.

TopikAturan
Base path/v1/public
AutentikasiAuthorization: Bearer atl_read_..., atau header X-Atlas-Token. Tanpa token, brand diambil dari header Host.
EnvelopeResource tunggal dan daftar biasa kembali sebagai { "data": ... }. Daftar entri adalah halaman cursor dengan data, links, dan meta.
KontenHanya konten yang sudah terbit. Token pratinjau juga menjangkau draf, dan responsnya private, no-store.
LocaleKirim locale untuk memilih bahasa. Default brand dipakai bila dihilangkan.
terminalbash
curl -s "https://api.atlascms.id/v1/public/settings" \
  -H "Authorization: Bearer $ATLAS_TOKEN" | jq '.data.brand.slug'

Error

StatusArti
401Token tidak ada padahal diperlukan, tidak valid, kedaluwarsa, atau dicabut. Lebih dari 30 token tidak valid per menit dari satu alamat dijawab 429.
403Brand ditangguhkan, atau tipe konten kustom membutuhkan peran lebih tinggi daripada yang dimiliki pemanggil publik.
404Tidak ada entri yang terbit di path itu, locale bukan salah satu milik brand, atau record milik brand lain.
422Parameter wajib tidak ada atau tidak valid, misalnya permintaan halaman tanpa path. Isinya { "message", "errors": { "field": ["..."] } }.
429Terlalu 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.

terminalbash
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
HeaderNilai
Cache-Controlmax-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.
VaryAuthorization, 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

PanggilanBatas
Baca dengan token6000 per menit per token
Baca tanpa token600 per menit per host dan alamat
POST forms/{key}10 per menit per token dan alamat pengunjung
POST beacon300 per menit per token dan alamat pengunjung
POST events600 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

GET/v1/public/page

Halaman yang terbit pada sebuah path: block, SEO, tautan terjemahan, route yang cocok, dan tema yang merendernya.

ParameterDeskripsi
pathWajib. Path entri, hingga 255 karakter. / mengembalikan halaman depan yang dipilih brand di pengaturan Membaca.
localeOpsional. Salah satu bahasa milik brand.
typeOpsional. 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.

terminalbash
curl -s "https://api.atlascms.id/v1/public/page?path=/pricing&locale=en" \
  -H "Authorization: Bearer $ATLAS_TOKEN"

Route

GET/v1/public/route

Hanya 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.

ParameterDeskripsi
pathWajib. Path yang akan diselesaikan.
localeOpsional.
qOpsional. Teks pencarian, untuk route pencarian.
response.jsonjson
{
  "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

GET/v1/public/entries

Daftar entri yang terbit dengan halaman cursor untuk satu tipe: artikel, halaman, atau tipe kustom.

ParameterDeskripsi
typeTipe entri, seperti post, page, atau key kustom.
localeSalah satu bahasa milik brand.
term, taxonomySaring berdasarkan slug term. taxonomy adalah category atau tag dan menyatakan slug itu mengacu pada yang mana.
limit1 sampai 100. Defaultnya 25, atau jumlah artikel per halaman milik brand untuk type=post.
cursormeta.next_cursor dari halaman sebelumnya.
qPencarian teks, hingga 100 karakter, pada path, judul, kutipan, dan deskripsi SEO.
fieldsDihilangkan: tanpa block, dengan SEO. light: tanpa block dan hanya gambar bagikan di SEO, ditambah author_name untuk artikel. full: menambahkan blocks.
selectDaftar dipisahkan koma berisi paling banyak 12 field, seperti title,path,fields.version. Ini mengalahkan fields. Field yang tidak dikenal adalah 422.
count1 menambahkan meta.total, jumlah kecocokan tanpa memperhitungkan cursor.
filter[field]Kesamaan pada field yang dideklarasikan dari tipe kustom, hingga 5.
terminalbash
curl -s "https://api.atlascms.id/v1/public/entries?type=post&limit=10&count=1&fields=light" \
  -H "Authorization: Bearer $ATLAS_TOKEN"
response.jsonjson
{
  "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

GET/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.

response.jsonjson
{
  "data": {
    "id": "01m518vv88kdjb68enh6w74ded",
    "key": "header",
    "locale": "en",
    "items": [
      { "key": "features", "label": "Features", "url": "/features" },
      { "key": "pricing", "label": "Pricing", "url": "/pricing" }
    ]
  }
}

Pengaturan

GET/v1/public/settings

Brand 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

GET/v1/public/theme

Set 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.

ParameterDeskripsi
localeOpsional. Bahasa untuk teks opsi.

String

GET/v1/public/strings

Teks antarmuka yang dikelola brand, dikelompokkan menurut namespace.

ParameterDeskripsi
localeOpsional.
namespaceOpsional. Hanya grup ini, seperti site.
response.jsonjson
{ "data": { "locale": "en", "strings": { "site": { "copyright": "AtlasCMS.", "language": "English" } } } }

Ketentuan

GET/v1/public/terms

Kategori dan tag, masing-masing sebagai { taxonomy, slug, name, path } dengan path adalah path arsip dari base permalink brand.

ParameterDeskripsi
taxonomycategory atau tag.
slugSatu term.

Tipe konten

GET/v1/public/content-types

Tipe 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

GET/v1/public/sitemap-urls

Setiap path publik beserta bahasanya, perubahan terakhir, dan alternatif untuk hreflang: [{ path, locale, type, lastmod, alternates: [{ locale, path }] }].

Redirect

GET/v1/public/redirects

Peta redirect sebagai [{ from, to, code }]. Memindahkan entri yang terbit menambahkan 301 di sini untuk Anda.

File yang dapat dibaca mesin

GET/v1/public/llms

Data untuk llms.txt, sebagai JSON, atau sebagai teks dengan format=text. Menerima locale.

GET/v1/public/indexnow-key

File key IndexNow. 404 bila IndexNow tidak diaktifkan untuk brand.

GET/v1/public/manifest.webmanifest

Web app manifest brand: nama, ikon (192, 512, dan maskable), warna tema, display: standalone, dan start_url.

Kirim formulir

POST/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.

FieldDeskripsi
fieldsObjek wajib dengan satu entri per field formulir, diperiksa terhadap definisi formulir (aturan email, telepon, pilihan, dan panjang).
consentBoolean opsional.
utm, fbclid, gclidAtribusi kampanye opsional.
source_page, referrer, localeKonteks opsional.
websiteHoneypot. Biarkan kosong; nilai yang terisi mendapat 202 dan tidak ada yang disimpan.
terminalbash
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

POST/v1/public/not-found

Memungkinkan situs mencatat 404 agar editor melihat apa yang terlewat pengunjung di dashboard dan bisa menambahkan redirect.

Beacon analitik

POST/v1/public/beacon

Menghitung 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

POST/v1/public/events

Mengirim 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.

FieldDeskripsi
event_name, event_idNama dan id unik, agar salinan browser dan server dari satu event dihitung sekali.
sourcebrowser (default) atau server.
email, phone, external_idData pencocokan untuk platform.
fbp, fbc, ttclidId klik dan browser.
client_ip, client_user_agent, source_url, custom_dataKonteks dan data tambahan.

Status

GET/status.json

Kesehatan 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?

Usulkan perubahan