/
Contents
Pages
Pages resolved by URL path and locale.
Base URL, authentication and conventions of this API are on the Content Delivery API page.
Endpoints
get
/pageGet a published page by path
Resolves path segment by segment through the translated slugs of the page tree in the given
locale. / (or no path) returns the page marked as home. Returns 404 when no page matches,
when the page has no translation in that locale, or when that translation is not published.
blocks and seo are returned exactly as edited in Nucleo (free-form JSON defined by the
page template): render them with your own components.
GET https://api-brain.nucleoplatform.com/api/delivery/v1/acme/sites/12/page
Authentication: Bearer token
Rate limit: 120 requests per 1m, per IP
Query parameters
pathstringURL path, with or without leading/trailing slashes. Default
/.default /Example:/about/teamlocalestringLocale code enabled on the site. Default the site's default locale.
Example:en
Responses
200The page.application/json
dataPageChild attributes
idintegertemplatestringis_homebooleantitlestringslugstringblocksarray of any | object | nullPage content as edited in Nucleo (template-defined JSON).
seoobject | nulllocalestringpublished_atstring (date-time) | null
401Missing or unknown delivery token.application/json
messagestring
404Page not found, not translated or not published (or wrong site/workspace). The text of
messagevaries with the case and can be reworded: branch on the404status only. application/jsonmessagestring
429More than 120 requests in a minute from the same IP.application/json
HeadersRetry-AfterX-RateLimit-LimitX-RateLimit-Remaining
messagestring
curl -X GET 'https://api-brain.nucleoplatform.com/api/delivery/v1/acme/sites/12/page?path=%2Fabout%2Fteam&locale=en' \
-H "Authorization: Bearer $NUCLEO_CMS_TOKEN" \
-H 'Accept: application/json'const res = await fetch("https://api-brain.nucleoplatform.com/api/delivery/v1/acme/sites/12/page?path=%2Fabout%2Fteam&locale=en", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.NUCLEO_CMS_TOKEN}`,
Accept: "application/json",
},
});
const data = await res.json();
console.log(res.status, data);<?php
require 'vendor/autoload.php';
$client = new GuzzleHttp\Client();
$response = $client->request('GET', 'https://api-brain.nucleoplatform.com/api/delivery/v1/acme/sites/12/page?path=%2Fabout%2Fteam&locale=en', [
'headers' => [
'Authorization' => 'Bearer ' . getenv('NUCLEO_CMS_TOKEN'),
'Accept' => 'application/json',
],
'http_errors' => false,
]);
echo $response->getStatusCode(), PHP_EOL;
echo $response->getBody();{
"data": {
"id": 87,
"template": "default",
"is_home": false,
"title": "Our team",
"slug": "team",
"blocks": [
{
"type": "hero",
"props": {
"heading": "Meet the people behind Acme Apparel",
"media_id": 311
}
},
{
"type": "rich_text",
"props": {
"html": "<p>Designed in Milano since 2009.</p>"
}
}
],
"seo": {
"title": "Our team · Acme Apparel",
"description": "The people behind Acme Apparel."
},
"locale": "en",
"published_at": "2026-09-30T10:15:00.000000Z"
}
}{
"message": "Delivery token required (Authorization: Bearer)."
}{
"message": "Invalid delivery token."
}{
"message": "Page not found."
}{
"message": "Page not translated."
}{
"message": "Page not published."
}{
"message": "Too Many Attempts."
}Was this page helpful?