นักพัฒนาPUBLIC CONTENT API

REST และ JSON แบบเรียบง่าย ปิดไว้จนกว่าคุณจะเปิด

การตั้งค่า Public API รายไซต์ควบคุมได้แม่นยำว่าจะเปิดเผยอะไรและให้ใคร ดึงคอนเทนต์ที่เผยแพร่แล้ว sitemap และรีไดเรกต์ ด้วยโครงสร้าง JSON ที่คาดการณ์ได้เหมือนกันทุกที่ — ไม่ต้องเรียนสคีมา GraphQL ไม่ต้องคอยซิงก์ไคลเอนต์ที่สร้างอัตโนมัติ ทุกคำขอด้านล่างเป็นของจริง: บล็อกที่สร้างบน CMSHub เรียกใช้ด้วย curl อย่างเดียว

01 / ดึงคอนเทนต์ที่เผยแพร่แล้ว

คำขอ GET เดียว ได้เรคคอร์ดที่เผยแพร่แล้วเป็น JSON

เมื่อไซต์เปิดใช้และใส่คอลเลกชันในรายการที่อนุญาตแล้ว เรคคอร์ดที่เผยแพร่ก็ดึงได้ด้วย GET ธรรมดา — ระบุจาก Host header ทั้งหมด ไม่ต้องใช้ API Key สำหรับข้อมูลสาธารณะ

  • ส่งคืนเฉพาะเรคคอร์ดที่ “เผยแพร่แล้ว” เท่านั้น — ฉบับร่างและรีวิชันที่ยังไม่เผยแพร่ไม่มีวันรั่วผ่านเส้นทางสาธารณะ
  • ปฏิเสธเป็นค่าเริ่มต้น: โฮสต์ที่ไม่รู้จัก ไซต์ที่ปิดใช้ หรือคอลเลกชันที่ไม่อยู่ในรายการที่อนุญาต จะได้ 404 แบบเดียวกันทั้งหมด
  • ?locale=xx ส่งคืนเวอร์ชันที่เผยแพร่แล้วของภาษานั้น โดยถอยกลับไปใช้ภาษาเริ่มต้นของเวิร์กสเปซ
GEThttps://the-signal.blog/api/posts
curl https://the-signal.blog/api/posts
RESPONSE
{
  "siteId": "the-signal-4f2a",
  "siteName": "The Signal",
  "baseUrl": "https://the-signal.blog",
  "collection": {
    "id": "3b0d6f2a-9c41-4e8a-8f2e-1d4c9a7b6e11",
    "slug": "posts",
    "name": "Posts"
  },
  "data": [
    {
      "id": "a91f2e3c-7d5b-4a10-9c3e-6f8a2b1d0e44",
      "locale": "en",
      "translationOfId": null,
      "data": {
        "title": "Shipping a public content API without a GraphQL schema",
        "slug": "shipping-a-public-content-api",
        "excerpt": "Plain REST beats a bespoke query language when a frontend just needs JSON.",
        "category": "Engineering",
        "author": "Dana Osei",
        "published_at": "2026-09-10"
      }
    },
    {
      "id": "d2c5b8a1-4e3f-4c9d-8b7a-2f1e6d5c4b33",
      "locale": "en",
      "translationOfId": null,
      "data": {
        "title": "What the quality gate actually checks before you publish",
        "slug": "the-quality-gate-explained",
        "excerpt": "Every generated page passes the same checks, whether it's post 1 or post 10,000.",
        "category": "Product",
        "author": "Dana Osei",
        "published_at": "2026-09-04"
      }
    }
  ],
  "meta": {
    "locale": "en",
    "pagination": { "start": 0, "limit": 20, "total": 2, "nextCursor": null }
  }
}
02 / ถูกค้นพบโดยอัตโนมัติ

sitemap ที่ตรงกับสิ่งที่เผยแพร่จริงเสมอ

sitemap.xml และ robots.txt สร้างจากคลังหน้าชุดเดียวกับที่ Content API อ่าน — ไม่มีคอนฟิกแยกให้ต้องซิงก์ และไม่มีอะไรต้องสร้างใหม่ด้วยมือ

  • สะท้อนคลังหน้าแบบเรียลไทม์ทุกคำขอ — เผยแพร่หน้าเมื่อไร หน้านั้นก็อยู่ใน sitemap ทันที
  • เพิ่ม hreflang alternate ให้อัตโนมัติสำหรับทุกหน้าที่มีเวอร์ชันแปล
  • /robots.txt ชี้ให้ครอว์เลอร์ไปยัง sitemap เดียวกันนี้ แยกตามแต่ละไซต์
GEThttps://the-signal.blog/sitemap.xml
curl https://the-signal.blog/sitemap.xml
RESPONSE
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml">
  <url><loc>https://the-signal.blog/posts/shipping-a-public-content-api</loc><lastmod>2026-09-10T14:22:00.000Z</lastmod></url>
  <url><loc>https://the-signal.blog/posts/the-quality-gate-explained</loc><lastmod>2026-09-04T09:15:00.000Z</lastmod></url>
</urlset>
03 / ปิดไว้เป็นค่าเริ่มต้น

คุณเป็นผู้ตัดสินว่าไซต์จะเปิดเผยอะไร

Public Content API จะปิดอยู่จนกว่าคุณจะกำหนดอย่างชัดเจนว่าไซต์จะเปิดเผยอะไร — ไม่มีเอนด์พอยต์ที่เปิดไว้เป็นค่าเริ่มต้นแล้วแอบเสิร์ฟคอนเทนต์ที่ยังไม่เผยแพร่หรือฉบับร่าง

ตั้งค่ารายไซต์

เปิดใช้และตั้งค่า Public API แยกกันสำหรับแต่ละไซต์ในเวิร์กสเปซ

เฉพาะคอนเทนต์ที่เผยแพร่แล้ว

Public API เสิร์ฟเฉพาะสิ่งที่ผ่านด่านตรวจคุณภาพและเผยแพร่จริงแล้ว — ไม่มีฉบับร่างเด็ดขาด

มีเวอร์ชัน และเสถียร

ทุกรูทอยู่ภายใต้พาธที่มีเวอร์ชัน อินทิเกรชันที่สร้างวันนี้จึงยังทำงานได้แม้ CMSHub จะพัฒนาต่อไป

เรียกเอนด์พอยต์จริง

เปิดใช้ Public API ให้ไซต์

เปิด Public Content API ให้ไซต์หนึ่งของคุณ แล้วดึงหน้าที่สร้างขึ้นมาดู