Get the changelog in a space (public reader)

Embed
Preview of the card
<a href="https://forumulate.com/reference/forumulate-api-publicchangelog-list"><img src="https://forumulate.com/reference/_api/public/orgs/046a9bc0-d530-43ae-9bae-af7945008cda/spaces/8042f004-e3d9-445f-b7a4-b6c1f86836e6/pages/d28c1f75-82b1-4c0b-867a-2fbb6c033de3/social-card.svg?v=3e7ae33eec8b" alt="Get the changelog in a space (public reader)" width="600" height="315"></a>
GEThttps://forumulate.com/api/public/orgs/{orgId}/spaces/{spaceId}/changelog
Parameters
orgIdstringpathrequired
spaceIdstringpathrequired
limitintegerquery
Releases per page. Defaults to 20. 100 is the most this endpoint serves — a larger value is capped, not refused. A value that is not a whole number of 1 or more is a 422, never a silent default.
= 20
offsetintegerquery
Where in the archive to start. page.nextCursor is the same walk, opaque. Defaults to 0. 100000 is the most this endpoint serves — a larger value is capped, not refused. A value that is not a whole number of 0 or more is a 422, never a silent default.
= 0
sharestringquery
yearstringquery
sincestringquery
Use an ISO date (2026-01-31) or date-time (2026-01-31T09:00:00Z).
cursorstringquery
monthstringquery
versionstringquery
typestringquery
channelstringquery
familystringquery
fromstringquery
tostringquery
breakingstringquery
Use true or false (true/1/yes/on and false/0/no/off are accepted).
true | 1 | yes | on | false | 0 | no | off
qstringquery
pinnedstringquery
Use true or false (true/1/yes/on and false/0/no/off are accepted).
true | 1 | yes | on | false | 0 | no | off
featuredstringquery
Use true or false (true/1/yes/on and false/0/no/off are accepted).
true | 1 | yes | on | false | 0 | no | off
previewstringquery
localestringquery
tagstringquery
sortstringquery
latest | oldest
matchstringquery
any | all
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}/changelog?limit=&offset=&share=&year=&since=&cursor=&month=&version=&type=&channel=&family=&from=&to=&breaking=&q=&pinned=&featured=&preview=&locale=&tag=&sort=&match=" \
  -H "forumulate-version: <value>"
TypeScript
const res = await fetch('https://forumulate.com/api/public/orgs/{orgId}/spaces/{spaceId}/changelog?limit=&offset=&share=&year=&since=&cursor=&month=&version=&type=&channel=&family=&from=&to=&breaking=&q=&pinned=&featured=&preview=&locale=&tag=&sort=&match=', {
  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}/changelog?limit=&offset=&share=&year=&since=&cursor=&month=&version=&type=&channel=&family=&from=&to=&breaking=&q=&pinned=&featured=&preview=&locale=&tag=&sort=&match=",
    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}/changelog?limit=&offset=&share=&year=&since=&cursor=&month=&version=&type=&channel=&family=&from=&to=&breaking=&q=&pinned=&featured=&preview=&locale=&tag=&sort=&match=", 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}/changelog?limit=&offset=&share=&year=&since=&cursor=&month=&version=&type=&channel=&family=&from=&to=&breaking=&q=&pinned=&featured=&preview=&locale=&tag=&sort=&match=');
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}/changelog?limit=&offset=&share=&year=&since=&cursor=&month=&version=&type=&channel=&family=&from=&to=&breaking=&q=&pinned=&featured=&preview=&locale=&tag=&sort=&match=')
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}/changelog?limit=&offset=&share=&year=&since=&cursor=&month=&version=&type=&channel=&family=&from=&to=&breaking=&q=&pinned=&featured=&preview=&locale=&tag=&sort=&match="))
    .header("forumulate-version", "<value>")
    .GET()
    .build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
Responses
200 Success.
Example
{
  "changelog": "string",
  "comments": {
    "enabled": true
  },
  "facets": {
    "breaking": 0,
    "channels": [
      {
        "channel": null,
        "count": null
      }
    ],
    "families": [
      {
        "count": null,
        "family": null
      }
    ],
    "tags": [
      {
        "color": null,
        "colorDark": null,
        "count": null,
        "coverUrl": null,
        "description": null,
        "gradient": null,
        "icon": null,
        "label": null,
        "pagePalette": null,
        "pageScheme": null,
        "slug": null,
        "tag": null,
        "textColor": null,
        "textColorDark": null
      }
    ],
    "types": [
      {
        "count": null,
        "type": null
      }
    ],
    "versions": [
      {
        "count": null,
        "version": null
      }
    ]
  },
  "familyOverview": {
    "answerCount": 0,
    "answerPostId": null,
    "assignedGroupId": null,
    "assigneeId": null,
    "authorAvatarSeed": "string",
    "authorAvatarUrl": "string",
    "authorId": null,
    "authorKind": "anonymous",
    "authorName": null,
    "authorPoints": 0,
    "authors": [
      null
    ],
    "authorTitle": "string",
    "authorUsername": "string",
    "bookmarked": true,
    "byline": null,
    "bylines": [
      null
    ],
    "categoryId": null,
    "commentsEnabled": true,
    "contentChangedAt": "2024-01-01T00:00:00Z",
    "coverUrl": null,
    "customization": null,
    "deletedAt": "2024-01-01T00:00:00Z",
    "excerpt": "string",
    "expiresAt": "2024-01-01T00:00:00Z",
    "featured": true,
    "featuredLink": null,
    "fields": {},
    "firstImageUrl": "string",
    "furtherReading": [
      null
    ],
    "id": "string",
    "isNew": true,
    "kind": "ARTICLE",
    "lastActivityAt": "2024-01-01T00:00:00Z",
    "lastPostedAt": "string",
    "lastPosterName": "string",
    "likeCount": 0,
    "linkedTopics": [
      null
    ],
    "listed": true,
    "mergedIntoId": null,
    "number": null,
    "onThisPage": "always",
    "op": {
      "actionCode": null,
      "actionData": null,
      "authorAvatarSeed": null,
      "authorAvatarUrl": null,
      "authorBadges": null,
      "authorBadgeTiers": null,
      "authorFlair": null,
      "authorId": null,
      "authorKind": null,
      "authorName": null,
      "authorPoints": null,
      "authorRole": null,
      "authorStatus": null,
      "authorTitle": null,
      "authorTrust": null,
      "authorUsername": null,
      "content": null,
      "createdAt": null,
      "editedAt": null,
      "flagCount": null,
      "id": null,
      "isOp": null,
      "likeCount": null,
      "parentAuthorName": null,
      "parentPostId": null,
      "parentPostNumber": null,
      "postNumber": null,
      "reactions": null,
      "status": null,
      "voteCount": null,
      "whisper": null,
      "wiki": null
    },
    "pinned": true,
    "pinnedGlobally": true,
    "pinnedUntil": null,
    "posters": [
      null
    ],
    "promotedPage": null,
    "promotedPageId": null,
    "publishedAt": null,
    "readingMinutes": 0,
    "releaseVersion": null,
    "replies": [
      null
    ],
    "replyCount": 0,
    "replyPreviews": [
      null
    ],
    "review": {
      "note": null,
      "requestedAt": null,
      "requestedBy": null,
      "reviewedAt": null,
      "reviewedBy": null,
      "state": null
    },
    "roadmapStatus": null,
    "scheduledFor": null,
    "seo": {
      "noindex": null,
      "seoDescription": null,
      "seoTitle": null
    },
    "series": null,
    "shippedTopicIds": [
      null
    ],
    "slowModeSeconds": 0,
    "slug": "string",
    "state": "ARCHIVED",
    "status": "archived",
    "subtitle": "string",
    "tagInfo": [
      null
    ],
    "tags": [
      null
    ],
    "title": "string",
    "unread": 0,
    "updatedAt": "2024-01-01T00:00:00Z",
    "viewCount": 0,
    "voteCount": 0
  },
  "frontDoor": {},
  "frontPage": {
    "aside": {
      "doc": null,
      "phone": null,
      "width": null
    },
    "customization": {},
    "doc": {
      "content": null,
      "type": null
    },
    "gap": "lg",
    "hideTitle": true,
    "paddingBottom": null,
    "paddingTop": null,
    "preset": "string",
    "sidebar": {
      "divider": null,
      "doc": null,
      "gap": null,
      "phone": null,
      "position": null,
      "source": null,
      "startAfter": null,
      "width": null
    },
    "width": null
  },
  "homeDoc": {},
  "homeDocTranslations": {},
  "locale": "string",
  "locales": [
    {
      "available": true,
      "code": "string",
      "isDefault": true,
      "label": "string"
    }
  ],
  "months": [
    {
      "count": 0,
      "month": "string"
    }
  ],
  "page": {
    "hasMore": true,
    "limit": 0,
    "offset": 0,
    "total": 0
  },
  "preset": "string",
  "reactions": {
    "enabled": true,
    "palette": [
      "string"
    ]
  },
  "releases": [
    {
      "answerCount": 0,
      "answerPostId": null,
      "assignedGroupId": null,
      "assigneeId": null,
      "authorAvatarSeed": "string",
      "authorAvatarUrl": "string",
      "authorId": null,
      "authorKind": "anonymous",
      "authorName": null,
      "authorPoints": 0,
      "authors": [
        null
      ],
      "authorTitle": "string",
      "authorUsername": "string",
      "bookmarked": true,
      "byline": null,
      "bylines": [
        null
      ],
      "categoryId": null,
      "commentsEnabled": true,
      "contentChangedAt": "2024-01-01T00:00:00Z",
      "coverUrl": null,
      "customization": null,
      "deletedAt": "2024-01-01T00:00:00Z",
      "excerpt": "string",
      "expiresAt": "2024-01-01T00:00:00Z",
      "featured": true,
      "featuredLink": null,
      "fields": {},
      "firstImageUrl": "string",
      "furtherReading": [
        null
      ],
      "id": "string",
      "isNew": true,
      "kind": "ARTICLE",
      "lastActivityAt": "2024-01-01T00:00:00Z",
      "lastPostedAt": "string",
      "lastPosterName": "string",
      "likeCount": 0,
      "linkedTopics": [
        null
      ],
      "listed": true,
      "mergedIntoId": null,
      "number": null,
      "onThisPage": "always",
      "op": {
        "actionCode": null,
        "actionData": null,
        "authorAvatarSeed": null,
        "authorAvatarUrl": null,
        "authorBadges": null,
        "authorBadgeTiers": null,
        "authorFlair": null,
        "authorId": null,
        "authorKind": null,
        "authorName": null,
        "authorPoints": null,
        "authorRole": null,
        "authorStatus": null,
        "authorTitle": null,
        "authorTrust": null,
        "authorUsername": null,
        "content": null,
        "createdAt": null,
        "editedAt": null,
        "flagCount": null,
        "id": null,
        "isOp": null,
        "likeCount": null,
        "parentAuthorName": null,
        "parentPostId": null,
        "parentPostNumber": null,
        "postNumber": null,
        "reactions": null,
        "status": null,
        "voteCount": null,
        "whisper": null,
        "wiki": null
      },
      "pinned": true,
      "pinnedGlobally": true,
      "pinnedUntil": null,
      "posters": [
        null
      ],
      "promotedPage": null,
      "promotedPageId": null,
      "publishedAt": null,
      "readingMinutes": 0,
      "releaseVersion": null,
      "replies": [
        null
      ],
      "replyCount": 0,
      "replyPreviews": [
        null
      ],
      "review": {
        "note": null,
        "requestedAt": null,
        "requestedBy": null,
        "reviewedAt": null,
        "reviewedBy": null,
        "state": null
      },
      "roadmapStatus": null,
      "scheduledFor": null,
      "seo": {
        "noindex": null,
        "seoDescription": null,
        "seoTitle": null
      },
      "series": null,
      "shippedTopicIds": [
        null
      ],
      "slowModeSeconds": 0,
      "slug": "string",
      "state": "ARCHIVED",
      "status": "archived",
      "subtitle": "string",
      "tagInfo": [
        null
      ],
      "tags": [
        null
      ],
      "title": "string",
      "unread": 0,
      "updatedAt": "2024-01-01T00:00:00Z",
      "viewCount": 0,
      "voteCount": 0
    }
  ],
  "years": [
    {
      "count": 0,
      "year": 0
    }
  ]
}
ChangelogArchiveLegacy
changelogstringrequired
commentsobjectrequired
Show child parameters
enabledbooleanrequired
facetsobjectrequired
Show child parameters
breakingnumberrequired
channelsobject[]required
Show child parameters
channelstringrequired
countnumberrequired
familiesobject[]required
Show child parameters
countnumberrequired
familystringrequired
tagsChangelogTagFacet[]required
Show child parameters
colorstringrequired
colorDarkstringrequired
countnumberrequired
coverUrlstringrequired
descriptionstringrequired
gradientarrayrequired
iconstring
labelstringrequired
pagePaletteobjectrequired
pageSchemestringrequired
dark | light
slugstringrequired
tagstringrequired
textColorstringrequired
textColorDarkstringrequired
typesobject[]required
Show child parameters
countnumberrequired
typestringrequired
versionsobject[]required
Show child parameters
countnumberrequired
versionstringrequired
familyOverviewArticleDetailrequired
Show child parameters
answerCountnumber
answerPostIdstringrequired
assignedGroupIdstringrequired
assigneeIdstringrequired
authorAvatarSeedstring
authorAvatarUrlstring
authorIdstringrequired
authorKindstring
anonymous | guest | member | persona | service | staged
authorNamestringrequired
authorPointsnumber
authorsobject[]required
Show child parameters
namestringrequired
userIdstringrequired
authorTitlestring
authorUsernamestring
bookmarkedboolean
bylineBylinerequired
Show child parameters
avatarUrlstring
namestring
urlstring
bylinesBylineView[]
Show child parameters
authorstringrequired
avatarUrlstringrequired
biostringrequired
handlestring
namestringrequired
rolestringrequired
urlstringrequired
userIdstringrequired
categoryIdstringrequired
commentsEnabledbooleanrequired
contentChangedAtstring
coverUrlstringrequired
customizationPieceCustomizationrequired
Show child parameters
customCssstring
jsonLdstring
ogDescriptionstring
ogTitlestring
shareImageUrlstring
themeobject
twitterCardstring
summary | summary_large_image
deletedAtstring
excerptstringrequired
expiresAtstring
featuredbooleanrequired
featuredLinkstringrequired
fieldsobjectrequired
firstImageUrlstring
furtherReadingobject[]required
Show child parameters
hrefstringrequired
labelstringrequired
idstringrequired
isNewboolean
kindstringrequired
ARTICLE | DISCUSSION | FEATURE | QUESTION | RELEASE
lastActivityAtstringrequired
lastPostedAtstring
lastPosterNamestring
likeCountnumber
linkedTopicsLinkedTopic[]required
Show child parameters
createdAtstringrequired
fromPostNumbernumberrequired
idstringrequired
slugstringrequired
titlestringrequired
listedbooleanrequired
mergedIntoIdstringrequired
numbernumberrequired
onThisPagestringrequired
always | auto | never
opobjectrequired
Show child parameters
actionCodestringrequired
actionDataobjectrequired
authorAvatarSeedstring
authorAvatarUrlstring
authorBadgesobject[]
authorBadgeTiersobject
authorFlairobject
authorIdstringrequired
authorKindstring
anonymous | guest | member | persona | service | staged
authorNamestringrequired
authorPointsnumber
authorRolestring
moderator | staff
authorStatusobject
authorTitlestring
authorTrustnumberrequired
authorUsernamestring
contentobjectrequired
A page as a block document: TipTap/ProseMirror JSON, the canonical content model shared by the editor, the reader and the Markdown converters. Send this as content when creating a page or on PUT /pages/{pageId}/content. It is the shape GET /pages/{pageId}/markdown round-trips from. Author in Markdown instead by sending body (whole page) or sections (Markdown per named slot) — use exactly ONE of the three. Every block has a Markdown spelling: :::name{attrs} directives for callouts, tabs, cards, steppers, columns and buttons, listed at GET /docs/markdown-dialect.
createdAtstringrequired
editedAtstringrequired
flagCountnumberrequired
idstringrequired
isOpbooleanrequired
likeCountnumber
parentAuthorNamestring
parentPostIdstringrequired
parentPostNumbernumber
postNumbernumberrequired
reactionsobjectrequired
statusstringrequired
hidden | pending | visible
voteCountnumberrequired
whisperbooleanrequired
wikibooleanrequired
pinnedbooleanrequired
pinnedGloballybooleanrequired
pinnedUntilstringrequired
postersForumPoster[]
Show child parameters
avatarSeedstringrequired
avatarUrlstringrequired
kindstringrequired
anonymous | guest | member | persona | service | staged
namestringrequired
rolestringrequired
frequent | latest | op
usernamestringrequired
promotedPageobjectrequired
Show child parameters
idstringrequired
spaceIdstringrequired
titlestringrequired
promotedPageIdstringrequired
publishedAtstringrequired
readingMinutesnumberrequired
releaseVersionstringrequired
repliesPostSummary[]required
Show child parameters
actionCodestringrequired
actionDataobjectrequired
authorAvatarSeedstring
authorAvatarUrlstring
authorBadgesobject[]
authorBadgeTiersobject
authorFlairobject
authorIdstringrequired
authorKindstring
anonymous | guest | member | persona | service | staged
authorNamestringrequired
authorPointsnumber
authorRolestring
moderator | staff
authorStatusobject
authorTitlestring
authorTrustnumberrequired
authorUsernamestring
contentobjectrequired
A page as a block document: TipTap/ProseMirror JSON, the canonical content model shared by the editor, the reader and the Markdown converters. Send this as content when creating a page or on PUT /pages/{pageId}/content. It is the shape GET /pages/{pageId}/markdown round-trips from. Author in Markdown instead by sending body (whole page) or sections (Markdown per named slot) — use exactly ONE of the three. Every block has a Markdown spelling: :::name{attrs} directives for callouts, tabs, cards, steppers, columns and buttons, listed at GET /docs/markdown-dialect.
createdAtstringrequired
editedAtstringrequired
flagCountnumberrequired
idstringrequired
isOpbooleanrequired
likeCountnumber
parentAuthorNamestring
parentPostIdstringrequired
parentPostNumbernumber
postNumbernumberrequired
reactionsobjectrequired
statusstringrequired
hidden | pending | visible
voteCountnumberrequired
whisperbooleanrequired
wikibooleanrequired
replyCountnumberrequired
replyPreviewsReplyPreview[]
Show child parameters
authorstringrequired
authorAvatarstringrequired
authorSeedstringrequired
textstringrequired
reviewobject
Show child parameters
notestringrequired
requestedAtstringrequired
requestedBystringrequired
reviewedAtstringrequired
reviewedBystringrequired
statestringrequired
approved | changes_requested | in_review
roadmapStatusstringrequired
scheduledForstringrequired
ChangelogArchiveEnveloped
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