← Changelog

Official templates for every space type, a section library, and page experiments

2026.10.14-api-templates
The Forumulate team
2 min read
apitemplatespages+1

Changed

Every space type has official templates. GET /orgs/{orgId}/space-templates now lists official templates for all 13 space types: 80 templates, up from 30. Status, events, roadmap, courses, careers, contact, FAQ, legal and custom spaces join docs, blog, forum and changelog.

POST /orgs/{orgId}/spaces/{spaceId}/apply-template now applies the content specific to each type, and every write goes through the same checks as the API:

  • status components, groups, sample incidents and sample metrics

  • events, speakers and sessions

  • roadmap lanes, items, comments and official answers

  • course quizzes, details, access rules and learning paths

  • contact topics and form wording

  • careers roles and pages

Re-applying a template merges: anything you have already set is kept.

A template manifest can carry settings and a shape patch. Both are applied through the normal settings and shape checks, before any content.

Apply reports template.not_poured. If a template carries content that cannot be applied yet, the apply still returns 200. The skipped part is listed in failed with the code template.not_poured; it is never dropped silently.

New custom spaces start with a home page. A new CUSTOM space gets a draft (unpublished) home page with a hero, three cards and a call to action. The seed rules are unchanged: send seed: false to skip it. A personal access token gets no seed unless it asks for one.

Added

The section library. GET /section-library[?family=] and GET /section-library/{id} serve 20 ready-made page bands: heroes, features, proof, pricing, company and conversion. Each one is a block document you can insert as it is. The agent MCP server exposes it too, as forumulate://section-library. Two new blocks come with it: hero and person.

Page goals and A/B tests.

  • Put goal on any block to count a click or form submit inside it.

  • Put experiment, abVariant (a–d) and abWeight on blocks to split readers between versions.

  • Readers' browsers report to POST /public/…/pages/{pageId}/goal and …/exposure. Each reader counts once per goal per day, and crawlers are not counted.

  • GET /orgs/{orgId}/analytics/conversions reports goals and test results, for the whole org or one space.

  • PUT /orgs/{orgId}/spaces/{spaceId}/pages/{pageId}/experiments/{key} decides, stops or resumes a test. It also sets autoPick, the goal the test is judged on, and minVisitors.

  • The cached page HTML is the same for every reader. Variants are picked in the browser, so crawlers and readers without JavaScript see the control.

Space authors. GET/PUT/DELETE /orgs/{orgId}/spaces/{spaceId}/authors[/{key}] manages a space's author registry. GET /public/…/authors[/{ref}] reads it. Event hosts, course instructors, changelog bylines and blog bylines all resolve against it.