API reference
Notes pages
/ v1/ orgs/ :orgId/ pages/ liveA one-time ticket for this tab's socket (2 minutes): the org's change events, and co-editing of the page it joins. socket is null where the stage has none.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- knowledge:read
Path parameters
orgIdOrganization id (
org_…).
Query parameters
tabstringrequiredMatches
^[\w-]{8,64}$.devicestringUp to 60 characters.
Errors
404Page not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/pages/live?tab=example' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
socket: null
}
| {
socket: {
url: string
ticket: string
}
}/ v1/ orgs/ :orgId/ pagesThe page tree, or the trash with archived=1.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- knowledge:read
Path parameters
orgIdOrganization id (
org_…).
Query parameters
archived"0" | "1"
Errors
404Page not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/pages' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
pages: {
pageId: string
parentId: string
kind: "database" | "doc"
title: string
icon?: string
fullWidth?: boolean
position: number
archived: boolean
archivedAt?: number
contentVersion: number
createdAt: number
updatedAt: number
createdBy: string
updatedBy?: string
}[]
truncated: boolean
}/ v1/ orgs/ :orgId/ pagesCreates a page or database, at the top level or under a parent.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- knowledge:write
Path parameters
orgIdOrganization id (
org_…).
Request body
parentIdstring | "root"Matches
^[A-Za-z0-9_-]{1,64}$.titlestringUp to 200 characters.
iconstringUp to 16 characters. Trimmed.
kind"doc" | "database"propertiesobjectKeys match
^[A-Za-z0-9_-]{1,32}$. Values: string (up to 4,000 characters), number, boolean, string[] (up to 50 items, each up to 32 characters) or null.
Errors
400Parent page not found.400The parent page is in the trash.400Unknown property.404Page not found
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/pages' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"parentId": "<parentId>",
"title": "Example",
"icon": "example"
}'Response 201
{
page: {
pageId: string
parentId: string
kind: "database" | "doc"
title: string
icon?: string
fullWidth?: boolean
position: number
archived: boolean
archivedAt?: number
contentVersion: number
createdAt: number
updatedAt: number
createdBy: string
updatedBy?: string
schema?: {
id: string
name: string
type: "number" | "text" | "url" | "date" | "select" | "checkbox" | "multi_select" | "relation"
options?: {
id: string
name: string
color?: "gray" | "brown" | "orange" | "yellow" | "green" | "blue" | "purple" | "pink" | "red"
}[]
databaseId?: string
}[]
views?: {
name: string
layout: "calendar" | "table" | "board"
filters: {
property: string
op: "after" | "before" | "contains" | "not_contains" | "is" | "is_not" | "gt" | "lt" | "is_empty" | "is_not_empty"
value?: boolean | string | number | string[]
}[]
id: string
sort?: null | {
by: string
desc: boolean
}
groupBy?: string
dateProperty?: string
hidden?: string[]
widths?: {
[key: string]: number
}
}[]
properties?: {
[key: string]: boolean | string | number | string[]
}
}
}/ v1/ orgs/ :orgId/ pages/ searchSearches page titles and text.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- knowledge:read
Path parameters
orgIdOrganization id (
org_…).
Query parameters
qstringDefault
"". Up to 200 characters.
Errors
404Page not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/pages/search' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
results: {
updatedAt: number
kind: "database" | "doc"
title: string
icon?: string
parentId: string
pageId: string
snippet?: string
}[]
}/ v1/ orgs/ :orgId/ pages/ :pageIdA page with its content. Databases include their rows; rows include their database's schema.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- knowledge:read
Path parameters
orgIdOrganization id (
org_…).pageIdPage id: a Notes page (
doc_…), or a Feed page (pgx_…) under/v1/messaging/social; undermarketinga landing page (mkp_…).
Errors
404Page not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/pages/{pageId}' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
page: {
pageId: string
parentId: string
kind: "database" | "doc"
title: string
icon?: string
fullWidth?: boolean
position: number
archived: boolean
archivedAt?: number
contentVersion: number
createdAt: number
updatedAt: number
createdBy: string
updatedBy?: string
schema?: {
id: string
name: string
type: "number" | "text" | "url" | "date" | "select" | "checkbox" | "multi_select" | "relation"
options?: {
id: string
name: string
color?: "gray" | "brown" | "orange" | "yellow" | "green" | "blue" | "purple" | "pink" | "red"
}[]
databaseId?: string
}[]
views?: {
name: string
layout: "calendar" | "table" | "board"
filters: {
property: string
op: "after" | "before" | "contains" | "not_contains" | "is" | "is_not" | "gt" | "lt" | "is_empty" | "is_not_empty"
value?: boolean | string | number | string[]
}[]
id: string
sort?: null | {
by: string
desc: boolean
}
groupBy?: string
dateProperty?: string
hidden?: string[]
widths?: {
[key: string]: number
}
}[]
properties?: {
[key: string]: boolean | string | number | string[]
}
}
content: null | {
version: number
blocks: null | unknown[]
markdown: string
}
rows?: {
pageId: string
parentId: string
kind: "database" | "doc"
title: string
icon?: string
fullWidth?: boolean
position: number
archived: boolean
archivedAt?: number
contentVersion: number
createdAt: number
updatedAt: number
createdBy: string
updatedBy?: string
schema?: {
id: string
name: string
type: "number" | "text" | "url" | "date" | "select" | "checkbox" | "multi_select" | "relation"
options?: {
id: string
name: string
color?: "gray" | "brown" | "orange" | "yellow" | "green" | "blue" | "purple" | "pink" | "red"
}[]
databaseId?: string
}[]
views?: {
name: string
layout: "calendar" | "table" | "board"
filters: {
property: string
op: "after" | "before" | "contains" | "not_contains" | "is" | "is_not" | "gt" | "lt" | "is_empty" | "is_not_empty"
value?: boolean | string | number | object
}[]
id: string
sort?: null | {
by: string
desc: boolean
}
groupBy?: string
dateProperty?: string
hidden?: string[]
widths?: {
[key: string]: number
}
}[]
properties?: {
[key: string]: boolean | string | number | string[]
}
}[]
database?: {
pageId: string
title: string
icon?: string
schema: {
id: string
name: string
type: "number" | "text" | "url" | "date" | "select" | "checkbox" | "multi_select" | "relation"
options?: {
id: string
name: string
color?: "gray" | "brown" | "orange" | "yellow" | "green" | "blue" | "purple" | "pink" | "red"
}[]
databaseId?: string
}[]
}
}/ v1/ orgs/ :orgId/ pages/ :pageIdRenames, moves, trashes or restores a page, or edits a database's properties or a row's values.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- knowledge:write
Path parameters
orgIdOrganization id (
org_…).pageIdPage id: a Notes page (
doc_…), or a Feed page (pgx_…) under/v1/messaging/social; undermarketinga landing page (mkp_…).
Request body
titlestringUp to 200 characters.
iconstringor nullUp to 16 characters. Trimmed.
fullWidthbooleanparentIdstring | "root"Matches
^[A-Za-z0-9_-]{1,64}$.positioninteger≥ 0.
archivedbooleanschemaobject[]Up to 50 items.
schema[].idstringMatches
^[A-Za-z0-9_-]{1,32}$.schema[].namestringrequired1–100 characters. Trimmed.
schema[].type"text" | "number" | "select" | "multi_select" | "date" | "checkbox" | "url" | "relation"requiredschema[].optionsobject[]Up to 100 items.
schema[].options[].idstringMatches
^[A-Za-z0-9_-]{1,32}$.schema[].options[].namestringrequired1–100 characters. Trimmed.
schema[].options[].color"gray" | "brown" | "orange" | "yellow" | "green" | "blue" | "purple" | "pink" | "red"schema[].databaseIdstringMatches
^[A-Za-z0-9_-]{1,64}$.viewsobject[]Up to 20 items.
views[].idstringMatches
^[A-Za-z0-9_-]{1,32}$.views[].namestringrequired1–100 characters. Trimmed.
views[].layout"table" | "board" | "calendar"requiredviews[].filtersobject[]Default
[]. Up to 20 items.views[].filters[].propertystringrequiredMatches
^[A-Za-z0-9_-]{1,32}$.views[].filters[].op"contains" | "not_contains" | "is" | "is_not" | "gt" | "lt" | "before" | "after" | "is_empty" | "is_not_empty"requiredviews[].filters[].valuestring | number | boolean | string[]Up to 2,000 characters. Up to 50 items. Each up to 64 characters.
views[].sortobjector nullviews[].sort.bystringrequiredMatches
^[A-Za-z0-9_-]{1,32}$.views[].sort.descbooleanrequiredviews[].groupBystringMatches
^[A-Za-z0-9_-]{1,32}$.views[].datePropertystringMatches
^[A-Za-z0-9_-]{1,32}$.views[].hiddenstring[]Up to 50 items. Each matches
^[A-Za-z0-9_-]{1,32}$.views[].widthsobjectKeys match
^[A-Za-z0-9_-]{1,32}$. Values: integer (80–1000).propertiesobjectKeys match
^[A-Za-z0-9_-]{1,32}$. Values: string (up to 4,000 characters), number, boolean, string[] (up to 50 items, each up to 32 characters) or null.
Errors
400A page can't be moved into itself.400Target page not found.400The target page is in the trash.400A page can't be moved into one of its subpages.400Pages are nested too deeply.400Only databases have properties.400Only databases have views.400Only database rows have property values.400Unknown property.404Page not found409The page changed. Try again.
curl -X PATCH 'https://api.cactive.com.au/v1/orgs/{orgId}/pages/{pageId}' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"title": "Example",
"icon": "example",
"fullWidth": true
}'Response 200
{
page: {
pageId: string
parentId: string
kind: "database" | "doc"
title: string
icon?: string
fullWidth?: boolean
position: number
archived: boolean
archivedAt?: number
contentVersion: number
createdAt: number
updatedAt: number
createdBy: string
updatedBy?: string
schema?: {
id: string
name: string
type: "number" | "text" | "url" | "date" | "select" | "checkbox" | "multi_select" | "relation"
options?: {
id: string
name: string
color?: "gray" | "brown" | "orange" | "yellow" | "green" | "blue" | "purple" | "pink" | "red"
}[]
databaseId?: string
}[]
views?: {
name: string
layout: "calendar" | "table" | "board"
filters: {
property: string
op: "after" | "before" | "contains" | "not_contains" | "is" | "is_not" | "gt" | "lt" | "is_empty" | "is_not_empty"
value?: boolean | string | number | string[]
}[]
id: string
sort?: null | {
by: string
desc: boolean
}
groupBy?: string
dateProperty?: string
hidden?: string[]
widths?: {
[key: string]: number
}
}[]
properties?: {
[key: string]: boolean | string | number | string[]
}
}
}/ v1/ orgs/ :orgId/ pages/ :pageId/ contentSaves page content. baseVersion is the version you started from; if the page has changed since, the save fails with 409.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- knowledge:write
Path parameters
orgIdOrganization id (
org_…).pageIdPage id: a Notes page (
doc_…), or a Feed page (pgx_…) under/v1/messaging/social; undermarketinga landing page (mkp_…).
Request body (up to 1,041 KB)
blocksany JSON[]requiredor nullmarkdownstringrequiredbaseVersionintegerrequired≥ 0.
collabbooleanepochstring1–64 characters.
Errors
404Page not found409This page is in the trash. Restore it to edit.409This page was changed elsewhere and reloaded.409This page changed since you opened it.413Pages can be up to 1 MB.
curl -X PUT 'https://api.cactive.com.au/v1/orgs/{orgId}/pages/{pageId}/content' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"blocks": [
{}
],
"markdown": "example",
"baseVersion": 1
}'Response 200
{
version: number
updatedAt: number
}/ v1/ orgs/ :orgId/ pages/ :pageId/ collabCo-editing: the page's shared document (base64 Yjs state, epoch: null before anyone opened it this way), and a one-time ticket for the socket (socket is null where co-editing isn't set up).
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- knowledge:read
Path parameters
orgIdOrganization id (
org_…).pageIdPage id: a Notes page (
doc_…), or a Feed page (pgx_…) under/v1/messaging/social; undermarketinga landing page (mkp_…).
Query parameters
ticket"0" | "1"
Errors
404Page not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/pages/{pageId}/collab' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
contentVersion: number
canWrite: boolean
socket: null | {
url: string
ticket: string
} | {
url: string
ticket: null
}
epoch: null | string
seq: number
state: null | string
baseVersion: number
}/ v1/ orgs/ :orgId/ pages/ :pageId/ collab/ seedThe first editor's document, made from the stored content. 409 if someone else's came first.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- knowledge:write
Path parameters
orgIdOrganization id (
org_…).pageIdPage id: a Notes page (
doc_…), or a Feed page (pgx_…) under/v1/messaging/social; undermarketinga landing page (mkp_…).
Request body (up to 2,867 KB)
updatestringrequiredAt least 1 character.
baseVersionintegerrequired≥ 0.
Errors
404Page not found409This page is in the trash. Restore it to edit.413Too large.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/pages/{pageId}/collab/seed' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"update": "2026-01-01",
"baseVersion": 1
}'Response 201
{
epoch: string
seq: number
}/ v1/ orgs/ :orgId/ pages/ :pageId/ collab/ updatesAn update too large for the socket (a big paste); relayed like socket updates.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- knowledge:write
Path parameters
orgIdOrganization id (
org_…).pageIdPage id: a Notes page (
doc_…), or a Feed page (pgx_…) under/v1/messaging/social; undermarketinga landing page (mkp_…).
Request body (up to 2,867 KB)
epochstringrequired1–64 characters.
updatestringrequiredAt least 1 character.
Errors
404Page not found409This page is in the trash. Restore it to edit.413Too large.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/pages/{pageId}/collab/updates' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"epoch": "example",
"update": "2026-01-01"
}'Response 200
{
seq: number
}/ v1/ orgs/ :orgId/ pages/ :pageId/ threadsComment threads on the page (kept apart from the shared document; they survive a reset).
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- knowledge:read
Path parameters
orgIdOrganization id (
org_…).pageIdPage id: a Notes page (
doc_…), or a Feed page (pgx_…) under/v1/messaging/social; undermarketinga landing page (mkp_…).
Errors
404Page not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/pages/{pageId}/threads' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
threads: {
id: string
createdAt: number
updatedAt: number
comments: {
id: string
userId: string
createdAt: number
updatedAt: number
body?: unknown
deletedAt?: number
reactions: {
emoji: string
createdAt: number
userIds: object
}[]
metadata?: unknown
}[]
resolved: boolean
resolvedUpdatedAt?: number
resolvedBy?: string
anchor?: {
blockId?: string
quote?: string
}
metadata?: unknown
}[]
}/ v1/ orgs/ :orgId/ pages/ :pageId/ threadsA new thread with its first comment (anchor: the block and text it is about).
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- knowledge:write
Path parameters
orgIdOrganization id (
org_…).pageIdPage id: a Notes page (
doc_…), or a Feed page (pgx_…) under/v1/messaging/social; undermarketinga landing page (mkp_…).
Request body (up to 64 KB)
bodyany JSON[]requiredAt least 1 item.
metadataany JSONanchorobjectanchor.blockIdstringUp to 64 characters.
anchor.quotestringUp to 2,000 characters.
Errors
400That isn't an emoji.403You can read comments here but not add or change them.403Only its author can change a comment.404Page not found404Thread not found.404Comment not found.409This page is in the trash. Restore it to comment.409This page has too many comment threads.409That thread already exists.409This thread has too many replies.409That comment was deleted.409That comment was already deleted.409Too many reactions.413Comments can be up to 16 KB.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/pages/{pageId}/threads' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"body": [
{}
]
}'Response 201
{
thread: null | {
id: string
createdAt: number
updatedAt: number
comments: {
id: string
userId: string
createdAt: number
updatedAt: number
body?: unknown
deletedAt?: number
reactions: {
emoji: string
createdAt: number
userIds: string[]
}[]
metadata?: unknown
}[]
resolved: boolean
resolvedUpdatedAt?: number
resolvedBy?: string
anchor?: {
blockId?: string
quote?: string
}
metadata?: unknown
}
}/ v1/ orgs/ :orgId/ pages/ :pageId/ threads/ :threadIdReplies, edits, deletions, resolving and reactions. thread is null once it's gone.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- knowledge:write
Path parameters
orgIdOrganization id (
org_…).pageIdPage id: a Notes page (
doc_…), or a Feed page (pgx_…) under/v1/messaging/social; undermarketinga landing page (mkp_…).threadIdConversation id (
thr_…), or in Mirage a thread id (mth_…).
Request body (up to 64 KB)
op"comment" | "edit" | "delete-comment" | "delete-thread" | "resolve" | "unresolve" | "react" | "unreact"requiredcommentIdstring1–64 characters.
bodyany JSON[]At least 1 item.
metadataany JSONsoftbooleanemojistring1–16 characters.
Errors
400Which comment? SendcommentId.400A comment needs some text.400Send theemoji.400That isn't an emoji.403You can read comments here but not add or change them.403Only its author can change a comment.404Page not found404Thread not found.404Comment not found.409This page is in the trash. Restore it to comment.409This page has too many comment threads.409That thread already exists.409This thread has too many replies.409That comment was deleted.409That comment was already deleted.409Too many reactions.413Comments can be up to 16 KB.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/pages/{pageId}/threads/{threadId}' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"op": "comment"
}'Response 200
{
thread: null | {
id: string
createdAt: number
updatedAt: number
comments: {
id: string
userId: string
createdAt: number
updatedAt: number
body?: unknown
deletedAt?: number
reactions: {
emoji: string
createdAt: number
userIds: string[]
}[]
metadata?: unknown
}[]
resolved: boolean
resolvedUpdatedAt?: number
resolvedBy?: string
anchor?: {
blockId?: string
quote?: string
}
metadata?: unknown
}
}/ v1/ orgs/ :orgId/ pages/ :pageId/ collab/ updatesUpdates after after (a gap, or one announced as pull); reset when the document was replaced.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- knowledge:read
Path parameters
orgIdOrganization id (
org_…).pageIdPage id: a Notes page (
doc_…), or a Feed page (pgx_…) under/v1/messaging/social; undermarketinga landing page (mkp_…).
Query parameters
epochstringrequired1–64 characters.
afterintegerrequired≥ 0. Coerced from a string.
Errors
404Page not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/pages/{pageId}/collab/updates?epoch=example&after=1' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
reset: true
} | {
reset: false
updates: {
seq: number
update: string
}[]
state?: null | string
seq?: number
}/ v1/ orgs/ :orgId/ pages/ :pageIdMoves a page to the trash.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- knowledge:write
Path parameters
orgIdOrganization id (
org_…).pageIdPage id: a Notes page (
doc_…), or a Feed page (pgx_…) under/v1/messaging/social; undermarketinga landing page (mkp_…).
Query parameters
permanent"1"
Errors
400Move the page to the trash first.400A page can't be moved into itself.400Target page not found.400The target page is in the trash.400A page can't be moved into one of its subpages.400Pages are nested too deeply.400Only databases have properties.400Only databases have views.400Only database rows have property values.400Unknown property.404Page not found409The page changed. Try again.
curl -X DELETE 'https://api.cactive.com.au/v1/orgs/{orgId}/pages/{pageId}' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
deleted: number
}
| {
page: {
pageId: string
parentId: string
kind: "database" | "doc"
title: string
icon?: string
fullWidth?: boolean
position: number
archived: boolean
archivedAt?: number
contentVersion: number
createdAt: number
updatedAt: number
createdBy: string
updatedBy?: string
schema?: {
id: string
name: string
type: "number" | "text" | "url" | "date" | "select" | "checkbox" | "multi_select" | "relation"
options?: {
id: string
name: string
color?: "gray" | "brown" | "orange" | "yellow" | "green" | "blue" | "purple" | "pink" | "red"
}[]
databaseId?: string
}[]
views?: {
name: string
layout: "calendar" | "table" | "board"
filters: {
property: string
op: "after" | "before" | "contains" | "not_contains" | "is" | "is_not" | "gt" | "lt" | "is_empty" | "is_not_empty"
value?: boolean | string | number | string[]
}[]
id: string
sort?: null | {
by: string
desc: boolean
}
groupBy?: string
dateProperty?: string
hidden?: string[]
widths?: {
[key: string]: number
}
}[]
properties?: {
[key: string]: boolean | string | number | string[]
}
}
}/ v1/ orgs/ :orgId/ pages/ :pageId/ historySaved versions of a page's content, newest first (kept 30 days after they're replaced).
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- knowledge:read
Path parameters
orgIdOrganization id (
org_…).pageIdPage id: a Notes page (
doc_…), or a Feed page (pgx_…) under/v1/messaging/social; undermarketinga landing page (mkp_…).
Errors
404Page not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/pages/{pageId}/history' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
versions: {
versionId: string
savedAt: number
size: number
current: boolean
}[]
}/ v1/ orgs/ :orgId/ pages/ :pageId/ history/ :versionIdOne saved version's content, to preview or restore (restoring saves it as a new version).
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- knowledge:read
Path parameters
orgIdOrganization id (
org_…).pageIdPage id: a Notes page (
doc_…), or a Feed page (pgx_…) under/v1/messaging/social; undermarketinga landing page (mkp_…).versionIdVersion id: a saved page version, as listed by the page history, an issue space's version (release,
ver_…), or a Drive file's version (fvr_…).
Errors
404Page not found404Version not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/pages/{pageId}/history/{versionId}' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
content: {
version: number
blocks: null | unknown[]
markdown: string
}
}/ v1/ orgs/ :orgId/ pages/ :pageId/ filesA link to upload an image or file into a page (PUT the bytes with the declared type within 15 minutes).
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- knowledge:write
Path parameters
orgIdOrganization id (
org_…).pageIdPage id: a Notes page (
doc_…), or a Feed page (pgx_…) under/v1/messaging/social; undermarketinga landing page (mkp_…).
Request body
filenamestringrequired1–255 characters. Trimmed.
contentTypestringDefault
"application/octet-stream". Up to 255 characters. Matches^[\w.+-]+\/[\w.+-]+$. Trimmed.sizeintegerrequired≥ 1.
Errors
400This page is in the trash.404Page not found413Files can be up to 20 MB.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/pages/{pageId}/files' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"filename": "Example",
"size": 1
}'Response 201
{
fileId: string
uploadUrl: string
}/ v1/ orgs/ :orgId/ pages/ :pageId/ files/ :fileIdA one-hour link to a file in a page.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- knowledge:read
Path parameters
orgIdOrganization id (
org_…).pageIdPage id: a Notes page (
doc_…), or a Feed page (pgx_…) under/v1/messaging/social; undermarketinga landing page (mkp_…).fileIdFile id, as returned when the upload was created.
Errors
404Page not found404File not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/pages/{pageId}/files/{fileId}' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
url: string
}/ v1/ orgs/ :orgId/ favoritesThe caller's favorite pages, oldest first.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- knowledge:read
Path parameters
orgIdOrganization id (
org_…).
Errors
404Page not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/favorites' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
favorites: {
pageId: string
createdAt: number
}[]
}/ v1/ orgs/ :orgId/ favoritesReorders the caller's favorites: page ids in the new order.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- knowledge:read
Path parameters
orgIdOrganization id (
org_…).
Request body
pageIdsstring[]requiredUp to 500 items. Each matches
^[A-Za-z0-9_-]{1,64}$.
Errors
404Page not found
curl -X PUT 'https://api.cactive.com.au/v1/orgs/{orgId}/favorites' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"pageIds": [
"example"
]
}'Response 200
{
favorites: {
pageId: string
createdAt: number
}[]
}/ v1/ orgs/ :orgId/ favorites/ :pageIdAdds a page to the caller's favorites. Adding it again keeps its place.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- knowledge:read
Path parameters
orgIdOrganization id (
org_…).pageIdPage id: a Notes page (
doc_…), or a Feed page (pgx_…) under/v1/messaging/social; undermarketinga landing page (mkp_…).
Errors
400This page is in the trash.400You can have up to 200 favorites.404Page not found
curl -X PUT 'https://api.cactive.com.au/v1/orgs/{orgId}/favorites/{pageId}' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
favorite: {
pageId: string
createdAt: number
}
}/ v1/ orgs/ :orgId/ favorites/ :pageIdRemoves a page from the caller's favorites.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- knowledge:read
Path parameters
orgIdOrganization id (
org_…).pageIdPage id: a Notes page (
doc_…), or a Feed page (pgx_…) under/v1/messaging/social; undermarketinga landing page (mkp_…).
Errors
404Page not found
curl -X DELETE 'https://api.cactive.com.au/v1/orgs/{orgId}/favorites/{pageId}' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
ok: true
}