Pages
Summary of page endpoints
- GET /admin/api/pages - list all available pages for the current site.
- POST /admin/api/pages - create a new page for the current site.
- GET /admin/api/pages/1 - get data for a single page.
- PUT /admin/api/pages/1 - overwrite all attributes of a page.
- PATCH /admin/api/pages/1 - merge new attributes into a single page.
- POST /admin/api/pages/1/duplicate - duplicate the page with content.
- DELETE /admin/api/pages/1 - remove a page.
- PUT /admin/api/pages/1/data/key_1 - update custom data field of a page.
- DELETE /admin/api/pages/1/data/key_1 - remove custom field of a page.
Related endpoints:
List all available pages for the current site
GET /admin/api/pages
Example response:
Status: 200 OK
[
{
"id": 1,
"title": "Home Page",
"menu_title": null,
"slug": null,
"path": "",
"content_type": "page",
"keywords": null,
"description": null,
"data": {},
"page_cache_ttl": null,
"root": true,
"hidden": false,
"publishing": true,
"isprivate": false,
"title_format": "site",
"title_separator": null,
"created_at": "2026-06-13T09:19:04.000Z",
"updated_at": "2026-06-13T09:19:04.000Z",
"published_at": "2026-06-13T09:19:04.000Z",
"url": "http://helloworld.voog.co/admin/api/pages/1",
"public_url": "http://helloworld.voog.co/",
"contents_url": "http://helloworld.voog.co/admin/api/pages/1/contents",
"children_url": "http://helloworld.voog.co/admin/api/pages?parent_id=1",
"language": {
"id": 1,
"code": "en",
"title": "ENG",
"position": 1,
"created_at": "2026-04-05T13:53:00.000Z",
"updated_at": "2026-04-11T10:08:54.000Z",
"url": "http://helloworld.voog.co/admin/api/languages/1"
},
"layout": {
"id": 1,
"title": "Front page",
"layout_name": "page_front",
"content_type": "page",
"url": "http://helloworld.voog.co/admin/api/layouts/1",
"created_at": "2026-04-05T13:53:00.000Z",
"updated_at": "2026-04-11T10:08:54.000Z",
"mime_type": "application/vnd.voog.design.custom+liquid"
},
"node": {
"id": 1,
"parent_id": null,
"title": "Home Page",
"position": 1,
"created_at": "2026-06-13T09:19:04.000Z",
"updated_at": "2026-06-13T09:19:04.000Z",
"url": "http://helloworld.voog.co/admin/api/nodes/1",
"children_url": "http://helloworld.voog.co/admin/api/nodes?parent_id=1",
"parent_url": null,
"children_count": 1
},
"seo": {
"full_title": "My new site",
"title_format": "<site_title>",
"score": 87,
"metrics": [
{
"key": "title_length",
"score": 75,
"result": "warning"
},
{
"key": "description_length",
"score": 100,
"result": "pass"
}
]
}
}, {
"id": 2,
"title": "Products",
"menu_title": null,
"slug": "products",
"path": "products",
"content_type": "page",
"keywords": null,
"description": null,
"data": {
"my_key_1": "Value 1",
"my_key_2": 2
},
"page_cache_ttl": null,
"root": false,
"hidden": false,
"publishing": true,
"isprivate": false,
"title_format": null,
"title_separator": null,
"permanent_redirect_url": "http://helloworld.voog.co/our-products",
"created_at": "2026-01-03T09:19:04.000Z",
"updated_at": "2026-01-03T12:14:34.000Z",
"published_at": "2026-06-13T09:19:04.000Z",
"url": "http://helloworld.voog.co/admin/api/pages/2",
"public_url": "http://helloworld.voog.co/products",
"contents_url": "http://helloworld.voog.co/admin/api/pages/2/contents",
"children_url": "http://helloworld.voog.co/admin/api/pages?parent_id=2",
"language": {
"id": 1,
"code": "en",
"title": "ENG",
"position": 1,
"created_at": "2026-04-05T13:54:32.000Z",
"updated_at": "2026-04-11T10:09:51.000Z",
"url": "http://helloworld.voog.co/admin/api/languages/1"
},
"layout": {
"id": 2,
"title": "Common page",
"layout_name": "page_default",
"content_type": "page",
"url": "http://helloworld.voog.co/admin/api/layouts/2",
"created_at": "2026-04-05T13:54:32.000Z",
"updated_at": "2026-04-11T10:09:51.000Z",
"mime_type": "application/vnd.voog.design.custom+liquid"
},
"node": {
"id": 2,
"parent_id": 1,
"title": "Products",
"position": 2,
"created_at": "2026-01-03T09:19:04.000Z",
"updated_at": "2026-01-03T12:14:34.000Z",
"url": "http://helloworld.voog.co/admin/api/nodes/2",
"children_url": "http://helloworld.voog.co/admin/api/nodes?parent_id=2",
"parent_url": "http://helloworld.voog.co/admin/api/nodes/1",
"children_count": 0
},
"seo": {
"full_title": "Products – My new site",
"title_format": "<page_title> <separator> <site_title>",
"score": 87,
"metrics": [
{
"key": "title_length",
"score": 75,
"result": "warning"
},
{
"key": "description_length",
"score": 100,
"result": "pass"
}
]
}
}
]
Parameters
content_type- page type (e.g.?content_type=blog). Accepted values arepage,blog,elementsandlink.include_seo- includes SEO-related output.language_code- language code (e.g.?language_code=en). Returns only pages with requested language code.language_id- language id (e.g.?language_id=1). Returns only pages for requested language.node_id- page node id (e.g.?node_id=1). Returns only pages for requested node.page- requested page (default:1).parent_id- parent page id (e.g.?parent_id=1). Returns only children pages for requested parent page.path- path (e.g.?path=products/books). Returns only page with requested path.path_prefix- path prefix (e.g.?path_prefix=products/). Returns only those pages whose path begins with the given prefix.per_page- elements per response (default:50; maximum:250).search- a generic search string matching if eithertitle,menu_title,descriptionorpathcontains the passed value.
Filter attributes
Read more about filters.
- Object
pageattributes:id,language_id,node_id,layout_id,title,menu_title,path,content_type,keywords,description,hidden,publishing,privacy,isprivate,created_at,updated_at,published_at. - Object
languageattributes:id,code,title,position,default_language,created_at,updated_at. - Object
nodeattributes:id,parent_id,title,position,created_at,updated_at.
Create a new page for the current site
POST /admin/api/pages
Example data:
{
"title": "Contacts",
"slug": "contacts",
"layout_id": 2,
"parent_id": 1
}
Example response:
Status: 201 Created
{
"id": 3,
"title": "Contacts",
"menu_title": null,
"slug": "contacts",
"path": "contacts",
"content_type": "page",
"keywords": null,
"description": null,
"data": {},
"page_cache_ttl": null,
"root": false,
"hidden": false,
"publishing": true,
"isprivate": false,
"title_format": null,
"title_separator": null,
"created_at": "2026-01-10T09:19:04.000Z",
"updated_at": "2026-01-10T09:19:04.000Z",
"published_at": "2026-01-10T09:19:04.000Z",
"url": "http://helloworld.voog.co/admin/api/pages/3",
"public_url": "http://helloworld.voog.co/contacts",
"contents_url": "http://helloworld.voog.co/admin/api/pages/3/contents",
"children_url": "http://helloworld.voog.co/admin/api/pages/3?parent_id=3",
"robots_header": "noindex",
"language": {
"id": 1,
"code": "en",
"title": "ENG",
"position": 1,
"created_at": "2026-04-05T13:54:32.000Z",
"updated_at": "2026-04-11T10:09:51.000Z",
"url": "http://helloworld.voog.co/admin/api/languages/1"
},
"layout": {
"id": 2,
"title": "Common page",
"layout_name": "page_default",
"content_type": "page",
"url": "http://helloworld.voog.co/admin/api/layouts/2",
"created_at": "2026-04-05T13:54:32.000Z",
"updated_at": "2026-04-11T10:09:51.000Z",
"mime_type": "application/vnd.voog.design.custom+liquid"
},
"node": {
"id": 3,
"parent_id": 1,
"title": "Contacts",
"position": 3,
"created_at": "2026-01-10T09:19:04.000Z",
"updated_at": "2026-01-10T09:19:04.000Z",
"url": "http://helloworld.voog.co/admin/api/nodes/3",
"children_url": "http://helloworld.voog.co/admin/api/nodes?parent_id=3",
"parent_url": "http://helloworld.voog.co/admin/api/nodes/1"
},
"seo": {
"full_title": "Contacts – My new site",
"title_format": "<page_title> <separator> <site_title>",
"score": 87,
"metrics": [
{
"key": "title_length",
"score": 75,
"result": "warning"
},
{
"key": "description_length",
"score": 100,
"result": "pass"
}
]
}
}
Parameters
title- page title in the<title>tag.menu_title- page title in menu, defaults totitle.layout_id- page layout id.layout_name- page layout canonical name. Used iflayout_idis not provided.slug- page url part in current folder. Value''means the root page. Slug is unique in given subfolder. If not set thentitlevalue is used to generate it.parent_id- parent page id.parent_path- path of the parent page. Used ifparent_idis not provided.node_id- related node id.language_id- language id. Creates new page underlanguage_code- language code to create new page under. Used iflanguage_idis not provided.content_origin_id- page id to duplicate content from.content_type- page's content type (used only when creating a link)path- URL the link points to (used only when creating a link)description- page meta description.image_id- id of the page descriptive image (commonly used for OG tags) - should be id of asset with image type (default:null).hidden- hidden in site menu. (Default:false).publishing- publish changes automatically. If turned on then every page (or page content) update is published automatically. (Default:true).privacy(aliasisprivate) - enable or disable password protection for page and it's sub pages (default:false).data- key/value based custom hash store. (NB! Keys with prefixesinternal_are protected and read only.)contents- array of content blocks for the page. Each content block should include its type and associated data. See creating content blocks for more information.permanent_redirect_url- fully qualified url. If set then current page returns 301 redirect response to it (default:null). Example:http://www.mysite.com/some_subpage.robots_header- HTTPX-Robots-Tagheader value (read more). When set then HTTP headerX-Robots-Tagis added to current page response. Example values:noindexornoindex, nofollow(default:null).title_format- default title format for the page title tag. Defaults to sitetitle_formatvalue. Supported values and their corresponding patterns:page_site-<page_title> <separator> <site_title>site_page-<site_title> <separator> <page_title>page-<page_title>site-<site_title>
title_separator- default title format separator for the page title tag. Defaults to sitetitle_separatorvalue.include_seo- includes SEO-related output.page_cache_ttl- cache time to live in system cache in seconds. If set to non-null value then page public content is cached in system cache for the given time. This means that page content is not rendered on every request but served from cache instead. Defaults tonullwhich means that page content is cached until some change occurs on the site.keywords[deprecated] - page meta keywords.
Minimum required parameters when creating a page object
New subpage:
parent_id - creates a new page under the given parent page. Creates a new node and uses parent page's language.
Translation of existing page:
parent_id and node_id - creates a new page under the given parent page, bound to an existing node. Uses the parent page's language.
or
language_id and node_id - creates a new page for the given language, bound to the given node. (NB! parent page should already be created for the given language.)
To copy content from an existing page, use content_origin_id in conjunction with language_id and node_id.
Page creation flow precedence
When multiple placement keys are supplied, the API selects the first matching flow below. Keys listed as ignored do not affect the result.
| Flow | Used keys | Ignored placement keys | Outcome |
|---|---|---|---|
| Existing node and language | node_id + language_id |
language_code, parent_id, parent_path |
Creates the page on the existing node in the requested language. The parent page for that language must already exist. |
| Existing node and language code | node_id + language_code |
language_id, parent_id, parent_path |
Same as above, using the language resolved from language_code. |
| Parent page | parent_id (optionally with node_id) |
language_id, language_code, parent_path |
Without node_id, creates a new node below the parent and inherits the parent's language. With node_id, attaches the page to that existing child node, which must belong to the parent's node. |
| Parent path | parent_path without parent_id |
language_id, language_code when parent_path is non-empty |
Resolves the parent by path and creates the page below it, inheriting its language. For an empty parent_path, language_id or language_code selects the root page in that language. |
| Default placement | No parent_id or parent_path |
parent_id, parent_path |
Uses language_id or, when it is absent, language_code; if neither is supplied, it uses the first ordered language. It creates the page below the supplied node_id, or below the site root when node_id is absent. |
The normal placement precedence is:
node_id+language_idnode_id+language_codeparent_idparent_path- Default placement using the requested language or first language, and the supplied node or root node
Content translation flow
When content_origin_id is supplied, this flow takes precedence over normal
placement. It uses only node_id and language_id to select the destination;
parent_id, parent_path, and language_code are ignored. The destination
node and its parent page in the target language must already exist.
{
"title": "Kontakt",
"layout_id": 2,
"content_origin_id": 25,
"node_id": 10,
"language_id": 2,
"parent_id": 1,
"parent_path": "about",
"language_code": "et"
}
This copies content from page 25 to node 10 in language 2; the other placement keys in the example have no effect.
Additional required parameters when creating a page
title- page title in menulayout_id- page layout id
Addditional required parameters when creating a link
title- link title in menucontent_type- specifies the page as a link. Only valid value islink.path- URL the link points to
URL format
For full URLs, the protocol is mandatory. Allowed protocols are "http" and "https". HTTP query parameters are also supported.
Examples:
http://example.com/page?parameter=value&also=anotherhttps://www.google.com/search?q=test/products(initial slash is mandatory for relative paths)//subpage(double slash uses site's current protocol)
Get data for a single page
GET /admin/api/pages/1
Example request:
GET http://helloworld.voog.co/admin/api/pages/2
Example response:
Status: 200 OK
{
"id": 2,
"title": "Products",
"menu_title": null,
"slug": "products",
"path": "products",
"content_type": "page",
"keywords": null,
"description": null,
"data": {
"my_key_1": "Value 1",
"my_key_2": 2
},
"page_cache_ttl": null,
"root": false,
"hidden": false,
"publishing": true,
"isprivate": false,
"title_format": null,
"title_separator": null,
"created_at": "2026-01-03T09:19:04.000Z",
"updated_at": "2026-01-03T12:14:34.000Z",
"published_at": "2026-06-13T09:19:04.000Z",
"url": "http://helloworld.voog.co/admin/api/pages/2",
"public_url": "http://helloworld.voog.co/products",
"contents_url": "http://helloworld.voog.co/admin/api/pages/2/contents",
"children_url": "http://helloworld.voog.co/admin/api/pages?parent_id=2",
"language": {
"id": 1,
"code": "en",
"title": "ENG",
"position": 1,
"created_at": "2026-04-05T13:54:32.000Z",
"updated_at": "2026-04-11T10:09:51.000Z",
"url": "http://helloworld.voog.co/admin/api/languages/1"
},
"layout": {
"id": 2,
"title": "Common page",
"layout_name": "page_default",
"content_type": "page",
"url": "http://helloworld.voog.co/admin/api/layouts/2",
"created_at": "2026-04-05T13:54:32.000Z",
"updated_at": "2026-04-11T10:09:51.000Z",
"mime_type": "application/vnd.voog.design.custom+liquid"
},
"node": {
"id": 2,
"parent_id": 1,
"title": "Products",
"position": 2,
"created_at": "2026-01-03T09:19:04.000Z",
"updated_at": "2026-01-03T12:14:34.000Z",
"url": "http://helloworld.voog.co/admin/api/nodes/2",
"children_url": "http://helloworld.voog.co/admin/api/nodes?parent_id=2",
"parent_url": "http://helloworld.voog.co/admin/api/nodes/1"
},
"seo": {
"full_title": "Products – My new site",
"title_format": "<page_title> <separator> <site_title>",
"score": 87,
"metrics": [
{
"key": "title_length",
"score": 75,
"result": "warning"
},
{
"key": "description_length",
"score": 100,
"result": "pass"
}
]
},
"image": {
"id": 1,
"content_type": "image/jpeg",
"width": 1024,
"height": 768,
"url": "http://helloworld.voog.co/admin/api/assets/1",
"public_url": "http://media.voog.com/0000/0000/0001/photos/Chrysanthemum.jpg",
"sizes": [
{
"content_type": "image/jpeg",
"width": 600,
"height": 450,
"url": "http://media.voog.com/0000/0000/0001/photos/Chrysanthemum_block.jpg"
},
{
"content_type": "image/jpeg",
"width": 1024,
"height": 768,
"url": "http://media.voog.com/0000/0000/0001/photos/Chrysanthemum.jpg"
}
]
},
"contents": [
{
"id": 4,
"name": "body",
"position": 1,
"content_type": "text",
"url": "http://helloworld.voog.co/admin/api/pages/2/contents/4",
"created_at": "2026-06-13T09:19:05.000Z",
"updated_at": "2026-06-13T09:19:05.000Z"
},
{
"id": 5,
"name": "slogan",
"position": 1,
"content_type": "text",
"url": "http://helloworld.voog.co/admin/api/pages/2/contents/5",
"created_at": "2026-06-13T09:19:05.000Z",
"updated_at": "2026-06-13T09:19:05.000Z"
}
]
}
The output may depend on page content_type.
For "content_type="blog"" there are additional attributes:
{
"...": "...",
"articles_url": "http://helloworld.voog.co/admin/api/articles?page_id=4
"...": "..."
}
For "content_type="elements"" there are additional attributes:
{
"...": "...",
"elements_url": "http://helloworld.voog.co/admin/api/elements?page_id=4
"...": "..."
}
Parameters
include_children- includes list of subpages to response. (Eg?include_children=true)include_seo- includes SEO-related output.
Update attributes of a page
PUT /admin/api/pages/1
This request updates the page with provided attributes. It replaces data attribute with new key set if data attribute is present in request.
PATCH /admin/api/pages/1
This request updates the page with provided attributes. It merges provided keys to data attribute if data attribute is present in request.
Example request:
PUT http://helloworld.voog.co/admin/api/pages/3
Example data:
{
"title": "About",
"slug": "about",
"title_format": "site_page",
"description": "We are a small crew of designers and developers passionate about usability.",
"data": {
"key_1": "value_1",
"key_2": "value_2"
}
}
Example response:
Status: 200 OK
{
"id": 3,
"title": "About",
"menu_title": null,
"slug": "about",
"path": "about",
"content_type": "page",
"keywords": null,
"description": "We are a small crew of designers and developers passionate about usability.",
"data" : {
"key_1": "value_1",
"key_2": "value_2"
},
"page_cache_ttl": null,
"root": false,
"hidden": false,
"publishing": true,
"isprivate": false,
"title_format": "site_page",
"title_separator": null,
"created_at": "2026-01-10T09:19:04.000Z",
"updated_at": "2026-01-10T10:10:10.000Z",
"published_at": "2026-01-10T10:10:10.000Z",
"url": "http://helloworld.voog.co/admin/api/pages/3",
"public_url": "http://helloworld.voog.co/contacts",
"contents_url": "http://helloworld.voog.co/admin/api/pages/3/contents",
"children_url": "http://helloworld.voog.co/admin/api/pages?parent_id=3",
"language": {
"id": 1,
"code": "en",
"title": "ENG",
"position": 1,
"created_at": "2026-04-05T13:54:32.000Z",
"updated_at": "2026-04-11T10:09:51.000Z",
"url": "http://helloworld.voog.co/admin/api/languages/1"
},
"layout": {
"id": 2,
"title": "Common page",
"layout_name": "page_default",
"content_type": "page",
"url": "http://helloworld.voog.co/admin/api/layouts/2",
"created_at": "2026-04-05T13:54:32.000Z",
"updated_at": "2026-04-11T10:09:51.000Z",
"mime_type": "application/vnd.voog.design.custom+liquid"
},
"node": {
"id": 3,
"parent_id": 1,
"title": "About",
"position": 3,
"created_at": "2026-01-10T09:19:04.000Z",
"updated_at": "2026-01-10T09:19:04.000Z",
"url": "http://helloworld.voog.co/admin/api/nodes/3",
"children_url": "http://helloworld.voog.co/admin/api/nodes?parent_id=3",
"parent_url": "http://helloworld.voog.co/admin/api/nodes/1"
},
"seo": {
"full_title": "My new site – About",
"title_format": "<site_title> <separator> <page_title>",
"score": 87,
"metrics": [
{
"key": "title_length",
"score": 75,
"result": "warning"
},
{
"key": "description_length",
"score": 100,
"result": "pass"
}
]
}
}
Parameters
Optional parameters:
title- page title in the<title>tag.menu_title- page title in menu, defaults totitle.slug- page url part in current folder.layout_id- page layout id.description- page meta description.image_id- id of the page descriptive image (commonly used for OG tags) - should be id of asset with image type (default:null).hidden- hidden in site menu.publishing- publish changes automatically.privacy(aliasisprivate) - enable or disable password protection for page and it's sub pages.data- key/value based custom hash store. If attributedatais present in request then new value replaces existing data value. (NB! Keys with prefixesinternal_are protected and read only.)permanent_redirect_url- fully qualified url. If set then current page returns 301 redirect response to it (default:null). Example:http://www.mysite.com/some_subpage.robots_header- HTTPX-Robots-Tagheader value (read more). When set then HTTP headerX-Robots-Tagis added to current page response. Example values:noindexornoindex, nofollow(default:null).title_format- default title format for the page title tag. Defaults to sitetitle_formatvalue. Supported values and their corresponding patterns:page_site-<page_title> <separator> <site_title>site_page-<site_title> <separator> <page_title>page-<page_title>site-<site_title>
title_separator- default title format separator for the page title tag. Defaults to sitetitle_separatorvalue.include_seo- includes SEO-related output.page_cache_ttl- cache time to live in system cache in seconds. See Create page section for more details.keywords[deprecated] - page meta keywords.
Duplicate the page with content
POST /admin/api/pages/1/duplicate
This request creates new duplicate page from the source page with related content (including blog articles and element) to same page level. It also accepts same optional parameters as the page update method.
Example request:
POST http://helloworld.voog.co/admin/api/pages/3/duplicate
{
"id": 4,
"title": "About",
"menu_title": null,
"slug": "about-1",
"path": "about-1",
"content_type": "page",
"keywords": null,
"description": "We are a small crew of designers and developers passionate about usability.",
"data" : {
"key_1": "value_1",
"key_2": "value_2"
},
"page_cache_ttl": null,
"root": false,
"hidden": false,
"publishing": true,
"isprivate": false,
"title_format": "site_page",
"title_separator": null,
"created_at": "2026-06-14T09:19:00.000Z",
"updated_at": "2026-06-14T10:19:00.000Z",
"published_at": "2026-06-14T10:19:00.000Z",
"url": "http://helloworld.voog.co/admin/api/pages/4",
"public_url": "http://helloworld.voog.co/contacts",
"contents_url": "http://helloworld.voog.co/admin/api/pages/4/contents",
"children_url": "http://helloworld.voog.co/admin/api/pages?parent_id=4",
"language": {
"id": 1,
"code": "en",
"title": "ENG",
"position": 1,
"created_at": "2026-04-05T13:54:32.000Z",
"updated_at": "2026-04-11T10:09:51.000Z",
"url": "http://helloworld.voog.co/admin/api/languages/1"
},
"layout": {
"id": 2,
"title": "Common page",
"layout_name": "page_default",
"content_type": "page",
"url": "http://helloworld.voog.co/admin/api/layouts/2",
"created_at": "2026-04-05T13:54:32.000Z",
"updated_at": "2026-04-11T10:09:51.000Z",
"mime_type": "application/vnd.voog.design.custom+liquid"
},
"node": {
"id": 4,
"parent_id": 1,
"title": "About",
"position": 4,
"created_at": "2026-06-14T09:19:00.000Z",
"updated_at": "2026-06-14T09:19:00.000Z",
"url": "http://helloworld.voog.co/admin/api/nodes/4",
"children_url": "http://helloworld.voog.co/admin/api/nodes?parent_id=4",
"parent_url": "http://helloworld.voog.co/admin/api/nodes/1"
},
"seo": {
"full_title": "My new site – About",
"title_format": "<site_title> <separator> <page_title>",
"score": 87,
"metrics": [
{
"key": "title_length",
"score": 75,
"result": "warning"
},
{
"key": "description_length",
"score": 100,
"result": "pass"
}
]
}
}
Remove a page
DELETE /admin/api/pages/3
This request deletes the page from the database.
Example request:
DELETE http://helloworld.voog.co/admin/api/pages/3
Example response:
Status: 204 No Content
Limits:
- If page has at least one subpage, it will not be deleted.
Update custom data field of a page
PUT /admin/api/pages/1/data/key
Updates or adds a new key to page data keyset.
Example request:
PUT http://helloworld.voog.co/admin/api/pages/2/data/my_key_1
Example data:
{
"value": "new value"
}
Example response:
Status: 200 OK
{
"id": 2,
"title": "Products",
"menu_title": null,
"slug": "products",
"path": "products",
"content_type": "page",
"keywords": null,
"description": null,
"data": {
"my_key_1": "new value",
"my_key_2": "value_2"
},
"page_cache_ttl": null,
"root": false,
"hidden": false,
"publishing": true,
"isprivate": false,
"title_format": null,
"title_separator": null,
"created_at": "2026-01-10T09:19:04.000Z",
"updated_at": "2026-01-10T12:14:34.000Z",
"published_at": "2026-01-10T09:19:04.000Z",
"url": "http://helloworld.voog.co/admin/api/pages/2",
"public_url": "http://helloworld.voog.co/products",
"contents_url": "http://helloworld.voog.co/admin/api/pages/2/contents",
"children_url": "http://helloworld.voog.co/admin/api/pages?parent_id=2",
"language": {
"id": 1,
"code": "en",
"title": "ENG",
"position": 1,
"created_at": "2026-04-05T13:54:32.000Z",
"updated_at": "2026-04-11T10:09:51.000Z",
"url": "http://helloworld.voog.co/admin/api/languages/1"
},
"layout": {
"id": 2,
"title": "Common page",
"layout_name": "page_default",
"content_type": "page",
"url": "http://helloworld.voog.co/admin/api/layouts/2",
"created_at": "2026-04-05T13:54:32.000Z",
"updated_at": "2026-04-11T10:09:51.000Z",
"mime_type": "application/vnd.voog.design.custom+liquid"
},
"node": {
"id": 2,
"parent_id": 1,
"title": "Products",
"position": 2,
"created_at": "2026-01-03T09:19:04.000Z",
"updated_at": "2026-01-03T12:14:34.000Z",
"url": "http://helloworld.voog.co/admin/api/nodes/2",
"children_url": "http://helloworld.voog.co/admin/api/nodes?parent_id=2",
"parent_url": "http://helloworld.voog.co/admin/api/nodes/1"
}
}
Remove custom field of a page
DELETE /admin/api/pages/1/data/key
Example request:
DELETE http://helloworld.voog.co/admin/api/pages/2/data/my_key_1
Example response:
Status: 204 No Content