REST API Documentation
SaCMS provides a powerful, read-only public REST API to fetch your managed content securely. Built for speed and flexibility, it supports advanced filtering, pagination, and population.
Base URL: https://[your-domain]/api/public/[tenant]Authentication
All public API requests must include your API key in the headers. You can generate API keys from your SaCMS Dashboard under the Developer settings.
Headers
x-api-key: your_api_key_hereSDK (TypeScript)
The official SaCMS TypeScript SDK provides a fluent query builder and built-in rate-limit handling. It's the recommended way to fetch data in Next.js, React, or Node.js.
Example Usage
import { SaCMS } from '@sacms/sdk'
// Initialize client
const sacms = new SaCMS({
baseUrl: 'https://api.yourdomain.com',
tenant: 'your-tenant-slug',
token: 'your-api-key'
})
// Fluent Query Builder
const response = await sacms.collection('articles')
.query()
.where('status', 'eq', 'PUBLISHED')
.populate(['author'])
.limit(10)
.fetch()Content API
Fetch multiple entries of a specific Content Type (Collection). Supports Strapi-like filtering operators.
GET
/content/[contentTypeSlug]Example Request
fetch('/api/public/my-tenant/content/articles?filters[title][$contains]=Next.js&limit=10', {
headers: {
'x-api-key': '...'
}
})Response
{
"data": [
{
"id": "cm...123",
"data": {
"title": "Learning Next.js 16",
"slug": "learning-nextjs-16"
},
"status": "PUBLISHED",
"createdAt": "2026-05-21T00:00:00.000Z"
}
],
"meta": {
"total": 1,
"page": 1,
"limit": 10
}
}Single Types API
Fetch data for Single Types (e.g., Global Settings, Homepage configuration).
GET
/single/[singleTypeSlug]Example Request
fetch('/api/public/my-tenant/single/global-settings', {
headers: { 'x-api-key': '...' }
})