Get the space (public reader)

Embed
Preview of the card
<a href="https://forumulate.com/reference/forumulate-api-public-overview"><img src="https://forumulate.com/reference/_api/public/orgs/046a9bc0-d530-43ae-9bae-af7945008cda/spaces/8042f004-e3d9-445f-b7a4-b6c1f86836e6/pages/ba19a4e8-dd07-4cbc-b858-994e2e7e6035/social-card.svg?v=3e7ae33eec8b" alt="Get the space (public reader)" width="600" height="315"></a>
GEThttps://forumulate.com/api/public/orgs/{orgId}/spaces/{spaceId}

A reader surface’s whole navigation in one call: the collections, the glossary, the locales and versions on offer, and the chat widgets configured for it. What a custom front end fetches first to render chrome before it knows which page the visitor wants.

Parameters
orgIdstringpathrequired
spaceIdstringpathrequired
localestringqueryrequired
previewstringquery
sharestringquery
versionstringquery
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}/spaces/{spaceId}?locale=&preview=&share=&version=" \
  -H "forumulate-version: <value>"
TypeScript
const res = await fetch('https://forumulate.com/api/public/orgs/{orgId}/spaces/{spaceId}?locale=&preview=&share=&version=', {
  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}/spaces/{spaceId}?locale=&preview=&share=&version=",
    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}/spaces/{spaceId}?locale=&preview=&share=&version=", 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}/spaces/{spaceId}?locale=&preview=&share=&version=');
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}/spaces/{spaceId}?locale=&preview=&share=&version=')
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}/spaces/{spaceId}?locale=&preview=&share=&version="))
    .header("forumulate-version", "<value>")
    .GET()
    .build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
Responses
200 Success.
Example
{
  "aiEnabled": true,
  "analytics": {
    "customHead": "string",
    "fathom": "string",
    "ga4": "string",
    "gtm": "string",
    "intercom": "string",
    "matomo": "string",
    "matomoHost": "string",
    "plausible": "string",
    "plausibleHost": "string",
    "posthog": "string",
    "posthogHost": "string",
    "segment": "string",
    "simpleAnalytics": "string",
    "umami": "string",
    "umamiHost": "string"
  },
  "careersApplyUrl": "string",
  "chatWidgets": [
    {
      "connectOrigins": [
        "string"
      ],
      "consent": "analytics",
      "origin": "string",
      "placement": "anywhere",
      "providerId": "string",
      "providerName": "string",
      "script": "string",
      "src": "string",
      "theme": {}
    }
  ],
  "collections": [
    {
      "coverUrl": "string",
      "description": "string",
      "id": "string",
      "isDefault": true,
      "name": "string",
      "nav": {
        "backStyle": "link",
        "collapsed": true,
        "hubCards": true,
        "icon": "string",
        "linkHub": true,
        "navScope": "isolated"
      },
      "pages": [
        {
          "apiMethod": null,
          "audience": null,
          "badge": null,
          "childCount": null,
          "children": null,
          "description": null,
          "externalUrl": null,
          "fields": null,
          "hasLive": null,
          "hideFromNav": null,
          "icon": null,
          "id": null,
          "navFont": null,
          "navKind": null,
          "navTitle": null,
          "pageKind": null,
          "pagerLabel": null,
          "parentId": null,
          "readingMinutes": null,
          "shapeKey": null,
          "shapeLabel": null,
          "slug": null,
          "sortKey": null,
          "status": null,
          "tags": null,
          "title": null,
          "updatedAt": null
        }
      ],
      "seo": {
        "description": "string",
        "title": "string"
      },
      "slug": "string",
      "translations": {}
    }
  ],
  "commentsEnabled": true,
  "frontDoor": {},
  "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
  },
  "glossary": [
    {
      "definition": "string",
      "term": "string"
    }
  ],
  "homeDoc": {
    "type": "doc",
    "content": [
      {
        "type": "heading",
        "attrs": {
          "level": 1
        },
        "content": [
          {
            "type": "text",
            "text": "Getting started"
          }
        ]
      },
      {
        "type": "paragraph",
        "content": [
          {
            "type": "text",
            "text": "Install the SDK, then create your first page."
          }
        ]
      },
      {
        "type": "codeBlock",
        "attrs": {
          "language": "bash"
        },
        "content": [
          {
            "type": "text",
            "text": "npm i @forumulate/sdk"
          }
        ]
      }
    ]
  },
  "homeDocTranslations": {},
  "homePageId": "string",
  "homePageSlug": "string",
  "locale": "string",
  "locales": [
    {
      "code": "string",
      "isDefault": true,
      "label": "string"
    }
  ],
  "organization": {
    "id": "string",
    "name": "string",
    "slug": "string"
  },
  "piecePage": {
    "after": {
      "content": [
        {
          "attrs": null,
          "content": null,
          "type": null
        }
      ],
      "type": "doc"
    },
    "sidebar": {
      "doc": {
        "content": [
          null
        ],
        "type": "doc"
      },
      "position": "left"
    }
  },
  "preset": "string",
  "readerTools": {
    "aiActions": true,
    "copyMarkdown": true,
    "mcp": true,
    "pdf": true,
    "search": true
  },
  "seo": {
    "contentLanguage": "string",
    "description": "string",
    "indexHidden": true,
    "locales": [
      "string"
    ],
    "localeUrlStyle": "path",
    "noindex": true,
    "schemaType": "string",
    "siteName": "string",
    "socialCard": {
      "accent": "string",
      "accentBar": true,
      "background": "string",
      "backgroundTo": "string",
      "eyebrowColor": "string",
      "font": "mono",
      "footer": "string",
      "logoUrl": "string",
      "titleColor": "string"
    },
    "socialCardVersion": "string",
    "socialImageUrl": "string",
    "titleTemplate": "string",
    "twitterSite": "string",
    "verification": {
      "bing": "string",
      "google": "string"
    }
  },
  "shape": {
    "blockTypes": [
      {
        "description": "string",
        "fields": [
          null
        ],
        "group": "string",
        "icon": "string",
        "key": "string",
        "label": "string",
        "variants": [
          null
        ]
      }
    ],
    "params": [
      {
        "accept": [
          null
        ],
        "admin": {
          "collapsed": null,
          "collapsible": null,
          "row": null,
          "tab": null
        },
        "allowed": [
          null
        ],
        "allowedBlocks": [
          null
        ],
        "allowedGroups": [
          null
        ],
        "column": true,
        "condition": null,
        "default": {},
        "expr": null,
        "facet": true,
        "fields": [
          null
        ],
        "from": "string",
        "hasMany": true,
        "hint": "string",
        "indexed": true,
        "internal": true,
        "key": "string",
        "label": "string",
        "language": "string",
        "localized": true,
        "max": 0,
        "maxLength": 0,
        "meta": true,
        "min": 0,
        "minLength": 0,
        "options": [
          null
        ],
        "pattern": "string",
        "placeholder": "string",
        "relationSpaceId": "string",
        "required": true,
        "rowLabelField": "string",
        "schema": {},
        "schemaProperty": "string",
        "sortable": true,
        "to": [
          null
        ],
        "type": "array",
        "unique": true,
        "visibility": "internal"
      }
    ],
    "sections": [
      {
        "example": "string",
        "hint": "string",
        "key": "string",
        "kind": "list",
        "label": "string",
        "render": "labelled",
        "required": true,
        "role": "example",
        "schemaProperty": "string"
      }
    ],
    "settings": {
      "blockLibrary": true,
      "defaultSort": "string",
      "defaultVisibility": "internal",
      "group": "string",
      "icon": "string",
      "listColumns": [
        "string"
      ],
      "orderable": true,
      "previewUrl": "string",
      "routable": true,
      "searchableFields": [
        "string"
      ],
      "singleton": true,
      "slugField": "string",
      "strict": true,
      "titleField": "string",
      "versions": {
        "max": 0
      }
    },
    "space": {
      "index": "board",
      "nav": "categories",
      "order": "activity",
      "summary": [
        "string"
      ],
      "whoCreates": "anyone"
    },
    "unknown": [
      "string"
    ]
  },
  "space": {
    "description": "string",
    "id": "string",
    "name": "string",
    "slug": "string",
    "translations": {},
    "type": "BLOG"
  },
  "theme": {},
  "version": "string",
  "versionCanonical": "latest",
  "versions": [
    {
      "archived": true,
      "badge": "string",
      "banner": "none",
      "hidden": true,
      "isDefault": true,
      "key": "string",
      "label": "string"
    }
  ]
}
Schema
aiEnabledbooleanrequired
analyticsobjectrequired
Show child parameters
customHeadstring
fathomstring
ga4string
gtmstring
intercomstring
matomostring
matomoHoststring
plausiblestring
plausibleHoststring
posthogstring
posthogHoststring
segmentstring
simpleAnalyticsstring
umamistring
umamiHoststring
careersApplyUrlstringrequired
chatWidgetsWidgetDescriptor[]required
Show child parameters
connectOriginsstring[]required
consentstringrequired
analytics | functional | marketing
originstringrequired
placementstringrequired
anywhere | custom-domain-only
providerIdstringrequired
providerNamestringrequired
scriptstringrequired
srcstring
themeobjectrequired
collectionsReaderCollection[]required
Show child parameters
coverUrlstring
descriptionstring
idstringrequired
isDefaultbooleanrequired
namestringrequired
navobject
Show child parameters
backStylestring
link | title
collapsedboolean
hubCardsboolean
iconstring
linkHubboolean
navScopestring
isolated | shared
pagesPageNode[]required
Show child parameters
apiMethodstring
audienceobjectrequired
badgeobject
childCountnumberrequired
childrenPageNode[]required
descriptionstringrequired
externalUrlstringrequired
fieldsobjectrequired
hasLivebooleanrequired
hideFromNavbooleanrequired
iconstringrequired
idstringrequired
navFontstring
mono
navKindstring
heading | separator
navTitlestring
pageKindstringrequired
pagerLabelstringrequired
parentIdstringrequired
readingMinutesnumberrequired
shapeKeystringrequired
shapeLabelstringrequired
slugstringrequired
sortKeystringrequired
statusstringrequired
draft | published
tagsstring[]required
titlestringrequired
updatedAtstringrequired
seoobject
Show child parameters
descriptionstring
titlestring
slugstringrequired
translationsobject
commentsEnabledbooleanrequired
frontDoorobjectrequired
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
glossaryobject[]required
Show child parameters
definitionstringrequired
termstringrequired
homeDocBlockDocrequired
Show child parameters
typestringrequired
contentBlockNode[]required
The top-level block nodes.
Show child parameters
typestringrequired
The node kind, e.g. paragraph, heading, codeBlock, text. The full list is at GET /docs/block-schema.
attrsobject
Node-specific attributes, e.g. { "level": 2 } for a heading.
contentBlockNode[]
Child nodes, for container blocks.
textstring
The literal text, for a text node.
marksobject[]
Inline marks (bold, italic, link, …) on a text node.
homeDocTranslationsobject
homePageIdstringrequired
homePageSlugstring
localestringrequired
localesDocLocale[]required
Show child parameters
codestringrequired
isDefaultbooleanrequired
labelstringrequired
organizationobjectrequired
Show child parameters
idstringrequired
namestringrequired
slugstringrequired
piecePageobject
Show child parameters
afterobject
Show child parameters
contentobject[]required
typestringrequired
doc
sidebarobject
Show child parameters
docobjectrequired
positionstringrequired
left | right
presetstringrequired
readerToolsobjectrequired
Show child parameters
aiActionsbooleanrequired
copyMarkdownbooleanrequired
mcpbooleanrequired
pdfbooleanrequired
searchbooleanrequired
seoobjectrequired
Show child parameters
contentLanguagestringrequired
descriptionstringrequired
indexHiddenbooleanrequired
localesstring[]
localeUrlStylestring
path | query
noindexbooleanrequired
schemaTypestring
siteNamestringrequired
socialCardobject
Show child parameters
accentstring
accentBarboolean
backgroundstring
backgroundTostring
eyebrowColorstring
fontstring
mono | sans | serif
footerstring
logoUrlstring
titleColorstring
socialCardVersionstringrequired
socialImageUrlstringrequired
titleTemplatestringrequired
twitterSitestringrequired
verificationobjectrequired
Show child parameters
bingstringrequired
googlestringrequired
shapeobjectrequired
Show child parameters
blockTypesBlockType[]required
Show child parameters
descriptionstring
fieldsSpaceTypeField[]required
groupstring
iconstring
keystringrequired
labelstringrequired
variantsBlockVariant[]
paramsSpaceTypeField[]required
Show child parameters
acceptstring[]
adminobject
allowedstring[]
allowedBlocksstring[]
allowedGroupsstring[]
columnboolean
conditionstring | number | boolean | string | number | boolean | object[] | object[] | object
defaultobject
exprstring | number | boolean | string | number | boolean | object[] | object[] | object
facetboolean
fieldsSpaceTypeField[]
fromstring
hasManyboolean
hintstring
indexedboolean
internalboolean
keystringrequired
labelstringrequired
languagestring
localizedboolean
maxnumber
maxLengthnumber
metaboolean
minnumber
minLengthnumber
optionsstring[]
patternstring
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