Get the site (public reader)

Embed
Preview of the card
<a href="https://forumulate.com/reference/forumulate-api-publicsite-overview"><img src="https://forumulate.com/reference/_api/public/orgs/046a9bc0-d530-43ae-9bae-af7945008cda/spaces/8042f004-e3d9-445f-b7a4-b6c1f86836e6/pages/941d5d1c-c61e-481f-9e78-e63ae4adcdc0/social-card.svg?v=3e7ae33eec8b" alt="Get the site (public reader)" width="600" height="315"></a>
GEThttps://forumulate.com/api/public/orgs/{orgId}/sites/{slug}

What an anonymous visitor is served for a whole site: its configuration, the member spaces, their published page trees and the tabs they are grouped into. One request for the navigation of everything under the address, which is why a reader shell fetches it first.

Parameters
orgIdstringpathrequired
slugstringpathrequired
previewstringquery
forumulate-versionstringheader
API version negotiation. Send forumulate-version: 2026-12-01 on every request from a new integration; it is optional only so that integrations written before versioning keep working. Each version includes everything before it:
Code samples
cURL
curl -X GET "https://forumulate.com/api/public/orgs/{orgId}/sites/{slug}?preview=" \
  -H "forumulate-version: <value>"
TypeScript
const res = await fetch('https://forumulate.com/api/public/orgs/{orgId}/sites/{slug}?preview=', {
  method: 'GET',
  headers: {
    'forumulate-version': '<value>',
  },
});
const data = await res.json();
Python
import requests

res = requests.request(
    "GET",
    "https://forumulate.com/api/public/orgs/{orgId}/sites/{slug}?preview=",
    headers={
    "forumulate-version": "<value>",
    },
)
data = res.json()
Go
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	req, _ := http.NewRequest("GET", "https://forumulate.com/api/public/orgs/{orgId}/sites/{slug}?preview=", nil)
	req.Header.Set("forumulate-version", "<value>")
	res, _ := http.DefaultClient.Do(req)
	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)
	fmt.Println(string(body))
}
PHP
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://forumulate.com/api/public/orgs/{orgId}/sites/{slug}?preview=');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['forumulate-version: <value>']);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
Ruby
require 'net/http'
require 'uri'

uri = URI('https://forumulate.com/api/public/orgs/{orgId}/sites/{slug}?preview=')
req = Net::HTTP::Get.new(uri)
req['forumulate-version'] = '<value>'
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|
  http.request(req)
end
puts res.body
Java
import java.net.URI;
import java.net.http.*;
import java.net.http.HttpRequest.BodyPublishers;

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://forumulate.com/api/public/orgs/{orgId}/sites/{slug}?preview="))
    .header("forumulate-version", "<value>")
    .GET()
    .build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
Responses
200 Success.
Example
{
  "config": {
    "copyright": "string",
    "cta": {
      "href": "string",
      "label": "string"
    },
    "footer": {
      "art": {
        "blur": 0,
        "clip": "none",
        "color": "string",
        "direction": "down-left",
        "fade": "both",
        "fit": "contain",
        "glowAlign": null,
        "glowBelow": 0,
        "glowWidth": null,
        "height": null,
        "image": "string",
        "offsetY": 0,
        "opacity": 0,
        "placement": "above",
        "position": "center",
        "preset": "glow"
      },
      "background": {
        "color": "string",
        "colorDark": "string",
        "edge": "string",
        "gradient": {
          "angle": null,
          "stops": null,
          "type": null
        },
        "image": "string"
      },
      "border": true,
      "bottomAlign": "columns",
      "bottomRule": true,
      "bottomSize": 0,
      "brandPlacement": "bottom",
      "brandWidth": "string",
      "breadcrumb": true,
      "breadcrumbPlacement": "bottom",
      "columnRule": true,
      "columns": 0,
      "columnWidth": 0,
      "contentWidth": "string",
      "cookieLinkPlacement": "bottom",
      "css": "string",
      "font": "body",
      "headingFont": "body",
      "headingGap": 0,
      "headingInk": "string",
      "headingInkDark": "string",
      "headingSize": 0,
      "headingStyle": "label",
      "headingWeight": 0,
      "hideOn": [
        "docs"
      ],
      "html": "string",
      "htmlLinkInk": "string",
      "htmlLinkInkDark": "string",
      "htmlLinkUnderline": true,
      "htmlPlacement": "above",
      "htmlSize": 0,
      "layout": "rows",
      "linkGap": 0,
      "linkInk": "string",
      "linkInkDark": "string",
      "linkSeparator": "dot",
      "linkSize": 0,
      "linkWeight": 0,
      "logo": "string",
      "logoMark": "string",
      "newsletter": {
        "button": {
          "background": null,
          "backgroundDark": null,
          "border": null,
          "ink": null,
          "inkDark": null
        },
        "consent": {
          "checkbox": null,
          "text": null
        },
        "consentPlacement": "form",
        "formId": "string",
        "heading": "string",
        "headingWidth": 0,
        "hideLabel": true,
        "layout": "split",
        "padding": {
          "bottom": null,
          "top": null
        },
        "placement": "above",
        "rule": true,
        "splitRatio": 0,
        "subheading": "string"
      },
      "padding": {
        "bottom": 0,
        "top": 0
      },
      "phone": "accordion",
      "scheme": "dark",
      "showBrandName": true,
      "socialSize": 0,
      "socialStyle": "circle",
      "status": {
        "case": "none",
        "color": "string",
        "dot": true,
        "font": "body",
        "monitorSpaceId": "string",
        "style": "pill"
      },
      "width": "string"
    },
    "footerColumns": [
      {
        "heading": "string",
        "links": [
          null
        ]
      }
    ],
    "footerDescription": "string",
    "footerLinks": [
      {
        "href": "string",
        "label": "string"
      }
    ],
    "headerLinks": [
      {
        "audience": "all",
        "border": "string",
        "borderDark": "string",
        "children": [
          null
        ],
        "divider": true,
        "githubRepo": "string",
        "highlight": true,
        "href": "string",
        "icon": "string",
        "iconDark": "string",
        "iconOnly": true,
        "ink": "string",
        "inkDark": "string",
        "kbd": "mod-i",
        "label": "string",
        "match": {
          "collection": null,
          "pathPrefix": null
        },
        "panel": {
          "align": null,
          "columns": null,
          "css": null,
          "featured": null,
          "footer": null,
          "html": null,
          "width": null
        },
        "phone": "bar",
        "placement": "bar",
        "style": "button"
      }
    ],
    "headerSpaceIds": [
      "string"
    ],
    "mobileNav": "bar",
    "navMenu": {
      "animation": "fade",
      "background": "string",
      "border": "string",
      "closeDelay": 0,
      "ink": "string",
      "openDelay": 0,
      "radius": 0,
      "shadow": "lg",
      "trigger": "click",
      "width": 0
    },
    "pageMounts": [
      {
        "page": "string",
        "path": "string",
        "spaceId": "string"
      }
    ],
    "socialLinks": [
      {
        "href": "string",
        "platform": "string"
      }
    ],
    "tabs": [
      {
        "slug": "string",
        "spaceIds": [
          null
        ],
        "title": "string"
      }
    ],
    "tagline": "string",
    "theme": {},
    "themeToggle": {
      "activeColor": "string",
      "border": true,
      "footerAlign": "end",
      "hideOn": [
        "desktop"
      ],
      "modes": [
        "dark"
      ],
      "phone": "menu",
      "position": "end",
      "radius": 0,
      "show": true,
      "style": "cycle"
    },
    "translations": {}
  },
  "frontPage": {
    "aside": {
      "doc": {
        "content": null,
        "type": null
      },
      "phone": "after",
      "width": "default"
    },
    "customization": {},
    "doc": {
      "content": [
        null
      ],
      "type": "doc"
    },
    "gap": "lg",
    "hideTitle": true,
    "paddingBottom": "string",
    "paddingTop": "string",
    "preset": "string",
    "sidebar": {
      "divider": {
        "color": null,
        "style": null,
        "width": null
      },
      "doc": {
        "content": null,
        "type": null
      },
      "gap": null,
      "phone": null,
      "position": "left",
      "source": "doc",
      "startAfter": 0,
      "width": "default"
    },
    "width": 0
  },
  "name": "string",
  "orgSlug": "string",
  "previewing": "site",
  "sections": [
    {
      "collections": [
        {
          "id": null,
          "isDefault": null,
          "name": null,
          "pages": null,
          "slug": null
        }
      ],
      "spaceId": "string",
      "spaceName": "string"
    }
  ],
  "slug": "string",
  "spaces": [
    {
      "addresses": [
        {
          "basePath": null,
          "hostname": null
        }
      ],
      "aiIngestion": true,
      "indexable": true,
      "locales": [
        "string"
      ],
      "localeUrlStyle": "path",
      "name": "string",
      "slug": "string",
      "spaceId": "string",
      "translations": {},
      "type": "string",
      "updatedAt": "string"
    }
  ],
  "tabs": [
    {
      "sections": [
        {
          "collections": null,
          "spaceId": null,
          "spaceName": null
        }
      ],
      "slug": "string",
      "title": "string"
    }
  ],
  "themeComponents": [
    {
      "css": "string",
      "id": "string",
      "outlets": {
        "above-main": {},
        "below-main": {},
        "blog-index-above-list": {},
        "blog-post-after": {},
        "blog-post-before": {},
        "blog-post-end": {},
        "careers-above-list": {},
        "category-header": {},
        "changelog-above-list": {},
        "courses-above-list": {},
        "courses-certificate-footer": {},
        "courses-landing-hero-after": {},
        "courses-lesson-above-body": {},
        "courses-lesson-after-body": {},
        "docs-page-footer": {},
        "docs-page-header": {},
        "docs-sidebar-end": {},
        "docs-sidebar-start": {},
        "events-above-list": {},
        "events-card-footer": {},
        "events-page-above-body": {},
        "events-page-after-body": {},
        "events-page-aside": {},
        "faq-above-list": {},
        "footer-after": {},
        "footer-before": {},
        "forum-categories-above": {},
        "forum-index-above-list": {},
        "forum-index-below-list": {},
        "forum-post-after-body": {},
        "forum-post-author-after": {},
        "forum-sidebar-bottom": {},
        "forum-sidebar-top": {},
        "forum-topic-above-title": {},
        "forum-topic-below-first-post": {},
        "forum-topic-below-title": {},
        "forum-topic-bottom": {},
        "forum-topic-row-after-title": {},
        "front-page-bottom": {},
        "front-page-top": {},
        "header-after": {},
        "header-before": {},
        "roadmap-above-board": {},
        "status-above-board": {},
        "user-card": {}
      },
      "settings": {},
      "slug": "string",
      "strings": {},
      "values": {}
    }
  ]
}
Schema
configobjectrequired
Show child parameters
copyrightstring
ctaobject
Show child parameters
hrefstringrequired
labelstringrequired
footerobject
Show child parameters
artobject
backgroundobject
borderboolean
bottomAlignstring
columns | frame
bottomRuleboolean
bottomSizenumber
brandPlacementstring
bottom | none | side | top
brandWidthstring | number
breadcrumbboolean
breadcrumbPlacementstring
bottom | top
columnRuleboolean
columnsnumber | string
columnWidthnumber
contentWidthstring
cookieLinkPlacementstring
bottom | brand | columns
cssstring
fontstring
body | heading | mono
headingFontstring
body | heading | mono
headingGapnumber
headingInkstring
headingInkDarkstring
headingSizenumber
headingStylestring
label | plain
headingWeightnumber
hideOnstring[]
htmlstring
htmlLinkInkstring
htmlLinkInkDarkstring
htmlLinkUnderlineboolean
htmlPlacementstring
above | below | replace
htmlSizenumber
layoutstring
rows | stack
linkGapnumber
linkInkstring
linkInkDarkstring
linkSeparatorstring
dot | none | pipe | slash
linkSizenumber
linkWeightnumber
logostring | boolean
logoMarkstring | boolean
newsletterobject
paddingobject
phonestring
accordion | stack
schemestring
dark | light
showBrandNameboolean
socialSizenumber
socialStylestring
circle | plain | square
statusobject
widthstring
footerColumnsobject[]
Show child parameters
headingstringrequired
linksobject[]required
footerDescriptionstring
footerLinksobject[]
Show child parameters
hrefstringrequired
labelstringrequired
headerLinksobject[]
Show child parameters
audiencestring
all | signedIn | signedOut
borderstring
borderDarkstring
childrenobject[]
dividerboolean
githubRepostring
highlightboolean
hrefstring
iconstring
iconDarkstring
iconOnlyboolean
inkstring
inkDarkstring
kbdstring
mod-i | mod-k | slash
labelstringrequired
matchobject
panelobject
phonestring
bar | menu
placementstring
bar | both | menu
stylestring
button | link | outline
headerSpaceIdsstring[]
mobileNavstring
bar | menu
navMenuobject
Show child parameters
animationstring
fade | none | scale | slide
backgroundstring
borderstring
closeDelaynumber
inkstring
openDelaynumber
radiusnumber
shadowstring
lg | md | none | sm
triggerstring
click | hover
widthnumber
pageMountsobject[]
Show child parameters
pagestringrequired
pathstringrequired
spaceIdstringrequired
socialLinksobject[]
Show child parameters
hrefstringrequired
platformstringrequired
tabsSiteTab[]
Show child parameters
slugstringrequired
spaceIdsstring[]required
titlestringrequired
taglinestring
themeobject
themeToggleobject
Show child parameters
activeColorstring
borderboolean
footerAlignstring
end | last-column
hideOnstring[]
modesstring[]
phonestring
menu | row
positionstring
end | footer | menu | sidebar | start
radiusnumber
showboolean
stylestring
cycle | icon | mono | select | switch
translationsobject
frontPageStoredFrontPagerequired
Show child parameters
asideobject
Show child parameters
docobjectrequired
phonestring
after | hide
widthstring
default | narrow | wide
customizationobject
docobjectrequired
Show child parameters
contentobject[]required
typestringrequired
doc
gapstring
lg | md | none | sm
hideTitleboolean
paddingBottomstring | number
paddingTopstring | number | IndexFrameSteps
presetstring
sidebarobject
Show child parameters
dividerobject
docobjectrequired
gapstring | number
phonestring | object
positionstringrequired
left | none | right
sourcestring
doc | docs-nav
startAfternumber
widthstring
default | narrow | wide
widthnumber | string
namestringrequired
orgSlugstringrequired
previewingstring
site
sectionsSiteSectionTree[]required
Show child parameters
collectionsSiteCollectionTree[]required
Show child parameters
idstringrequired
isDefaultbooleanrequired
namestringrequired
pagesPageNode[]required
slugstringrequired
spaceIdstringrequired
spaceNamestringrequired
slugstringrequired
spacesSiteSpaceRef[]required
Show child parameters
addressesobject[]
Show child parameters
basePathstringrequired
hostnamestringrequired
aiIngestionbooleanrequired
indexablebooleanrequired
localesstring[]
localeUrlStylestring
path | query
namestringrequired
slugstringrequired
spaceIdstringrequired
translationsobject
typestringrequired
updatedAtstring
tabsSiteTabView[]required
Show child parameters
sectionsSiteSectionTree[]required
Show child parameters
collectionsSiteCollectionTree[]required
spaceIdstringrequired
spaceNamestringrequired
slugstringrequired
titlestringrequired
themeComponentsReaderThemeComponent[]
Show child parameters
cssstringrequired
idstringrequired
outletsobjectrequired
Show child parameters
above-main
below-main
blog-index-above-list
blog-post-after
blog-post-before
blog-post-end
careers-above-list
category-header
changelog-above-list
courses-above-list
courses-certificate-footer
courses-landing-hero-after
courses-lesson-above-body
courses-lesson-after-body
docs-page-footer
docs-page-header
docs-sidebar-end
400 The request could not be understood — a malformed header, path or query value (request.malformed). A value that was understood but is not acceptable is a 422 validation.failed.
{
  "error": {
    "code": "string",
    "message": "string",
    "details": {},
    "docs": "string",
    "reason": "string",
    "slugs": [
      "string"
    ],
    "conflict": {
      "etag": "string",
      "ops": [
        null
      ]
    }
  },
  "requestId": "string"
}
404 No such thing — one of the ids in the path does not resolve, or resolves to something this caller may not see (*.not_found).
{
  "error": {
    "code": "string",
    "message": "string",
    "details": {},
    "docs": "string",
    "reason": "string",
    "slugs": [
      "string"
    ],
    "conflict": {
      "etag": "string",
      "ops": [
        null
      ]
    }
  },
  "requestId": "string"
}
429 Rate limited — see the RateLimit-* headers.
{
  "error": {
    "code": "string",
    "message": "string",
    "details": {},
    "docs": "string",
    "reason": "string",
    "slugs": [
      "string"
    ],
    "conflict": {
      "etag": "string",
      "ops": [
        null
      ]
    }
  },
  "requestId": "string"
}
default Error — the stable { error: { code, message } } envelope.
{
  "error": {
    "code": "string",
    "message": "string",
    "details": {},
    "docs": "string",
    "reason": "string",
    "slugs": [
      "string"
    ],
    "conflict": {
      "etag": "string",
      "ops": [
        null
      ]
    }
  },
  "requestId": "string"
}
The Forumulate teamUpdated