Sync changes
Returns what changed since a moment, for mirroring content into a static site without a full rebuild: entries published or republished, and what stopped being delivered.
GET
https://api.duma-business.com/v1/cms/delivery/synccontent:readPublishable or secret key
Responses carry a weak ETag; send it back as If-None-Match to get 304 Not Modified. Cache-Control: private, max-age=30, stale-while-revalidate=120.
Apply deletions first, then upsert entries; store nextSince and pass it as since next time. When hasMore is true, call again at once.
Both lists are oldest first. A deletion is an unpublished or deleted entry (kind: "entry") or a deleted asset (kind: "asset").
Entries are the published versions only, without media or references resolved.
An unparseable since is a 400.
Request example
Example request
curl -X GET "https://api.duma-business.com/v1/cms/delivery/sync" \
-H "Authorization: Bearer dk_pub_…"Query parameters
sincestring- An ISO 8601 timestamp — the
nextSincefrom your last call. Omit it for everything published. limitnumberDefault 100- Entries per call, 1–200.
Response
Response · 200
{
"entries": [
{
"id": "4a8c2e6f-1b3d-4f5a-9c7e-2d4f6a8b0c1e",
"type": "blog-post",
"locale": "en",
"slug": "autumn-menu-is-here",
"createdAt": "2026-10-01T09:15:00.000Z",
"updatedAt": "2026-10-20T14:02:11.000Z",
"publishedAt": "2026-10-20T14:05:00.000Z",
"firstPublishedAt": "2026-10-02T08:00:00.000Z",
"fields": {
"title": "Our autumn menu is here",
"slug": "autumn-menu-is-here",
"hero": {
"id": "7d1f3b5a-9c2e-4a6b-8d0f-1e3a5c7b9d2f",
"url": "https://api.duma-business.com/v1/cms/delivery/assets/7d1f3b5a-9c2e-4a6b-8d0f-1e3a5c7b9d2f/file/pumpkin-latte.jpg",
"fileName": "pumpkin-latte.jpg",
"mimeType": "image/jpeg",
"sizeBytes": 412883,
"width": 1600,
"height": 1067,
"title": "Pumpkin spice latte",
"altText": "A pumpkin spice latte on an oak table",
"focalPoint": {
"x": 0.5,
"y": 0.45
},
"renditions": [],
"srcset": null
},
"body": "## Back for autumn\n\nPumpkin spice is back, alongside a new **maple pecan bun**."
}
}
],
"deletions": [
{
"kind": "entry",
"id": "9e1a3c5b-7d2f-4b6a-8c0e-2f4a6b8d0c1e",
"type": "blog-post",
"locale": "en",
"deletedAt": "2026-10-21T09:00:00.000Z"
}
],
"nextSince": "2026-10-28T10:00:00.000Z",
"hasMore": false
}