Content partial contents
Summary of content partial contents endpoints
- GET /admin/api/content_partials - list all available content partial contents for the current site.
- GET /admin/api/content_partials/1 - get data for a single content partial content.
- PUT /admin/api/content_partials/1 - update attributes of a content partial content.
List all available content partial contents for the current site
GET /admin/api/content_partials
Example response:
Status: 200 OK
[
{
"id": 1,
"content_type": "custom",
"created_at": "2026-05-30T09:25:22.000Z",
"updated_at": "2026-05-30T09:26:17.000Z",
"url": "http://helloworld.voog.co/admin/api/content_partials/1",
"content": {
"id": 1,
"name": "body",
"created_at": "2026-05-30T09:25:22.000Z",
"updated_at": "2026-05-30T09:25:22.000Z",
"position": 1,
"url": "http://helloworld.voog.co/admin/api/pages/1/contents/1"
},
"parent": {
"id": 1,
"title": "Home page",
"created_at": "2026-05-30T09:22:49.000Z",
"updated_at": "2026-05-30T09:22:54.000Z",
"type": "page",
"url": "http://helloworld.voog.co/admin/api/pages/1"
}
}, {
"id": 2,
"content_type": "video",
"created_at": "2026-05-30T11:43:42.000Z",
"updated_at": "2026-05-30T11:44:07.000Z",
"url": "http://helloworld.voog.co/admin/api/content_partials/2",
"content": {
"id": 2,
"name": "body",
"created_at": "2026-05-30T11:43:42.000Z",
"updated_at": "2026-05-30T11:43:42.000Z",
"position": 2,
"url": "http://helloworld.voog.co/admin/api/pages/3/contents/2"
},
"parent": {
"id": 3,
"title": "Contact",
"created_at": "2026-05-30T11:43:37.000Z",
"updated_at": "2026-05-30T11:43:37.000Z",
"type": "page",
"url": "http://helloworld.voog.co/admin/api/pages/3"
}
}
]
Parameters
per_page- elements per response (default:50; maximum:250).page- requested page (default:1).parent_idandparent_type- parent id and type. Returns content partial contents for parent. If present then both parameters are required. Allowed values forparent_typeare:page- parent is page.languageparent is language.article- parent is article.
Filter attributes
Read more about filters.
- Object
content_partialattributes:id,body,metainfo,created_at,updated_at. - Object
contentattributes:id,parent_id,language_id,content_id,content_type,page_id,page_type,name,position,created_at,updated_at.
Get data for a single content partial content
GET /admin/api/content_partials/1
Example request:
GET http://helloworld.voog.co/admin/api/content_partials/2
Example response:
Status: 200 OK
{
"id": 2,
"content_type": "video",
"created_at": "2026-05-30T10:22:04.000Z",
"updated_at": "2026-05-30T10:22:04.000Z",
"url": "http://helloworld.voog.co/admin/api/content_partials/2",
"content": {
"id": 3,
"name": "body",
"position": 1,
"created_at": "2026-05-30T10:22:04.000Z",
"updated_at": "2026-05-30T10:22:04.000Z",
"url": "http://helloworld.voog.co/admin/api/pages/1/contents/3"
},
"parent": {
"id": 1,
"title": "Home page",
"type": "page",
"created_at": "2026-01-13T09:19:04.000Z",
"updated_at": "2026-01-13T09:19:04.000Z",
"url": "http://helloworld.voog.co/admin/api/pages/1"
},
"body": "<iframe scrolling=\"no\" style=\"width: 436px; height: 358.033px;\" src=\"http://www.youtube.com/embed/jTv3wWQDDgQ\"></iframe>",
"metainfo": {
"type": "video"
}
}
Update attributes of a content partial content
PUT /admin/api/content_partials/1
Example request:
PUT http://helloworld.voog.co/admin/api/content_partials/2
Example data:
{
"body": "<iframe scrolling=\"no\" style=\"width: 436px; height: 358.033px;\" src=\"http://www.youtube.com/embed/jTv3wWQDDgQ?wmode=transparent\"></iframe>",
"metainfo": {
"type": "custom"
}
}
Example response:
Status: 200 OK
{
"id": 2,
"content_type": "custom",
"created_at": "2026-05-30T10:22:04.000Z",
"updated_at": "2026-05-30T10:44:04.000Z",
"url": "http://helloworld.voog.co/admin/api/content_partials/2",
"content": {
"id": 3,
"name": "body",
"position": 1,
"created_at": "2026-05-30T10:22:04.000Z",
"updated_at": "2026-05-30T10:22:04.000Z",
"url": "http://helloworld.voog.co/admin/api/pages/1/contents/3"
},
"parent": {
"id": 1,
"title": "Home page",
"type": "page",
"created_at": "2026-01-13T09:19:04.000Z",
"updated_at": "2026-01-13T09:19:04.000Z",
"url": "http://helloworld.voog.co/admin/api/pages/1"
}
}
Parameters
The request body must contain a content_partial object. Its supported attributes are:
body- new rendered content. Applies tocustom,map, andvideo. It is ignored forlatest_articles.metainfo- content type and type-specific settings.type- sets the response'scontent_type. Supported values arecustom,map,video, andlatest_articles(Latest news).- The remaining settings documented under Latest news apply
only when
typeislatest_articles.
type |
body |
metainfo |
|---|---|---|
custom |
HTML content | type |
map |
Map embed content | type |
video |
Video embed content | type |
latest_articles |
Ignored | type and Latest news settings |
Latest news (latest_articles)
Create a content partial through the Contents API with
content_type: "content_partial", then update its content partial URL with the
settings below. The editor adds this block as the final item in the More menu.
Settings live in metainfo; body is ignored in both public and editor rendering.
For example:
{
"content_partial": {
"metainfo": {
"type": "latest_articles",
"heading": "Latest news",
"blog_page_ids": [],
"tag_ids": [],
"count": 6,
"layout": "list",
"columns": 3,
"featured_count": 1,
"show_heading": true,
"show_read_all": true,
"excerpt_length": 110,
"show_image": true,
"show_excerpt": true,
"show_date": true,
"show_author": false,
"show_tags": false
}
}
}
Send this to PUT /admin/api/content_partials/:id?render_partial=1 to save
settings and receive fresh HTML in partial. The render_partial parameter applies
only to latest_articles. The response also includes normalized metainfo.
Omitting render_partial=1 skips HTML rendering. Partial settings updates preserve
omitted settings; empty arrays clear selections.
- The heading defaults to empty.
show_heading(default true) controls its visibility. show_read_all(default true) independently shows “View all articles” when there is exactly one eligible source blog. It links to that blog, including when tags filter the displayed articles. Multiple source blogs have no combined archive link. The header row is omitted when neither a heading nor an archive link is visible.- Empty
blog_page_idsincludes all published blogs in the rendered page's language. - Empty
tag_idsdisables tag filtering; otherwise an article must match at least one selected tag. Missing/deleted selections do not broaden the query. - Results stay within the current site and language and respect blog privacy. Only published articles are included, including in the editor.
- Ordering follows the blog's standard descending article date (
created_at), with descending ID as a tie breaker. countis bounded to 1–50 (default 6), including featured articles.- Layouts are
list(List, default),grid(Grid), andfeatured(Feature). removedcompactand unknown values fall back tolist. columnsis bounded to 2–4 (default 3). It affects Grid and the lower Feature feed, where it is capped at 3. It is hidden in the editor for List.featured_countis bounded to 1–4 (default 1) and cannot exceedcount. Feature shows the newest article as a large lead, other featured articles beside it, and remaining articles below. With only one matching featured article, the lead stands alone. The setting is exposed only for Feature.- Excerpts are plain text, truncated to
excerpt_length(1–1000, default 110). The length field is hidden when excerpts are disabled. Dates use the content language. - Missing article images use stable, varied gradient placeholders when
show_imageis enabled. Images use the CMS image tag with responsivesrcsetand layout-specificsizes; turning images off removes both images and placeholders.
Use GET /admin/api/pages?content_type=blog&language_code=en and
GET /admin/api/tags?language_code=en for selectors, following pagination links.