11. API & Protocols/Content Engine
Content Engine API
The Headless Edge CMS provides ultra-fast read endpoints for retrieving your Singletons (Pages), Collections, and Global configurations as clean JSON payloads.
EDGE CACHE HEADERS
ETag
Conditional GET Validation
“Responses include ETag headers. Subsequent requests with 'If-None-Match' return HTTP 304 Not Modified to save bandwidth and execution time.”
Optimized Edge Delivery
Fetching Singletons (Pages)
Retrieve the structure and fields of a specific page node by its unique slug.
GET/v1/content/:projectId/page/:slug
json
| 1 | { |
| 2 | "id": "content_node_123", |
| 3 | "type": "page", |
| 4 | "data": { |
| 5 | "hero_title": "Welcome to Kipazi Foods", |
| 6 | "hero_image": { |
| 7 | "url": "https://cdn.gnapex.com/public/assets/farm.jpg", |
| 8 | "alt": "Organic Farm" |
| 9 | }, |
| 10 | "body_content": "<p>Fresh daily harvests.</p>" |
| 11 | }, |
| 12 | "meta": { |
| 13 | "version": 4, |
| 14 | "updatedAt": "2026-05-12T14:30:00.000Z", |
| 15 | "cacheStatus": "hit" |
| 16 | } |
| 17 | } |
Querying Collections
Retrieve repeatable records with robust pagination and multi-field sorting.
GET/v1/content/:projectId/collection/:collectionId
bash
| 1 | curl -G "https://api.gnapex.com/v1/content/prj_123/collection/blog_posts" \ |
| 2 | -d page=1 \ |
| 3 | -d limit=10 \ |
| 4 | -d sort="published_at" \ |
| 5 | -d order="desc" \ |
| 6 | -H "Authorization: Bearer nx_pk_live_..." |
Advanced Collection Filters
The collection endpoint supports advanced query strings to slice datasets:
| Parameter | Type | Requirement | Description |
|---|---|---|---|
| search | string | Optional | Performs an insensitive full-text index scan across all string/rich-text columns. |
| filter | JSON String | Optional | Exact match evaluation. E.g., `filter={"category":"News","is_published":true}`. |
| include | string | Optional | Comma-separated list of Reference fields to eagerly hydrate (e.g. `include=author,category`). |
Schema Introspection
SDKs and external systems can download the live JSON schema layout dynamically:
GET/v1/content/schema/:projectId