API reference
Mirage social
Feed: profiles, follows, posts, timelines, stories, pages, server feeds and notifications, on the same people and servers as chat.
See Mirage. These routes are under /v1/messaging/social, for people signed in. Feed uses each person's Cactive profile, the same one chat shows, and the blocks they set in chat.
Who can use it. Feed is for people 16 and over. How strictly that's checked is a platform setting: off (everyone signed in, except someone known to be under 16), the person's date of birth, or a face check in their Cactive ID account. While the gate is closed, every social route answers 403 with code: "age_assurance", the reason (unchecked or under_16) and what would open it (check: date_of_birth, sent once with PUT /v1/messaging/social/me/date-of-birth, or estimation, the face check at https://id.cactive.com.au/age-check). GET /v1/messaging/social/me always answers, with the gate. Chat isn't affected.
Timelines. Following lists the posts of people and pages you follow, newest first. For You ranks posts by relevance and freshness, and each post can say why it's there. Not Interested lowers similar posts.
Server feeds. A server's feed follows the server's permissions, AutoMod and moderators, and can be off, for members only or public.
Phone notifications. Likes, replies, reposts and quotes, mentions, follows and posts from people whose bell is on also push to the Mirage app. GET /v1/messaging/social/me shows which kinds do (profile.pushes), and PATCH /v1/messaging/social/me with { "pushes": { "likes": false } } turns one off; everything still shows in notifications.
GET /v1/messaging/social/me
Your Feed: the age gate (gate: open, or why not: unchecked or under_16, with recheckAfter and what would open it, check: date_of_birth or estimation) and, once it's open, your social profile (visibility, public likes, muted words, pinned post, counts, unread activity and waiting follow requests). Always answers, so apps can show the gate. How strict the gate is is data (Admin → Feed): off (everyone signed in, except someone known to be under 16), your date of birth, or a face check in ID (Australia's Social Media Minimum Age); while it's closed, every other social route answers 403 with code: "age_assurance", reason and check.
Auth: user access token or platform agent key
Response 200
{
gate: {
open: false
reason: "under_16" | "unchecked"
recheckAfter: null | number
check?: "estimation" | "date_of_birth"
}
profile: null
}
| {
gate: {
open: true
method: "none" | "document" | "dev" | "self_declared" | "estimation" | "digital_id" | "bank" | "inference" | "staff"
checkedAt: number
}
profile: {
userId: string
visibility: "private" | "public" | "followers"
likesPublic: boolean
mutedWords: string[]
pushes: {
mentions: boolean
follows: boolean
posts: boolean
likes: boolean
replies: boolean
reposts: boolean
}
pinnedPostId: null | string
counts: {
followers: number
following: number
posts: number
}
unread: number
requests: number
}
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
PUT /v1/messaging/social/me/date-of-birth
Declares your date of birth for the age gate: dateOfBirth (YYYY-MM-DD, from 1900, not in the future). Kept on your Cactive ID account, once: 409 once it's set (support corrects it). Under 16 keeps Feed closed until your 16th birthday, worked out when read. Answers as GET /me: the gate, and your social profile once it's open.
Auth: user access token or platform agent key
Response 200
{
gate: {
open: true
method: "none" | "document" | "dev" | "self_declared" | "estimation" | "digital_id" | "bank" | "inference" | "staff"
checkedAt: number
} | {
open: false
reason: "under_16" | "unchecked"
recheckAfter: null | number
check?: "estimation" | "date_of_birth"
}
profile: null | {
userId: string
visibility: "private" | "public" | "followers"
likesPublic: boolean
mutedWords: string[]
pushes: {
mentions: boolean
follows: boolean
posts: boolean
likes: boolean
replies: boolean
reposts: boolean
}
pinnedPostId: null | string
counts: {
followers: number
following: number
posts: number
}
unread: number
requests: number
}
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
PATCH /v1/messaging/social/me
Changes your social settings: visibility (public; followers: people ask to follow; private: as followers, and hidden from search and suggestions, with requests only from people you share a server with or chat friends; going public approves waiting requests), likesPublic (others see your Likes tab) and mutedWords (up to 200; posts with them stay out of your feeds and activity).
Auth: user access token or platform agent key
Response 200
{
profile: {
userId: string
visibility: "private" | "public" | "followers"
likesPublic: boolean
mutedWords: string[]
pushes: {
mentions: boolean
follows: boolean
posts: boolean
likes: boolean
replies: boolean
reposts: boolean
}
pinnedPostId: null | string
counts: {
followers: number
following: number
posts: number
}
unread: number
requests: number
}
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
PUT /v1/messaging/social/me/pinned
Pins one of your posts to the top of your profile (postId; empty unpins).
Auth: user access token or platform agent key
Response 200
{
pinnedPostId: null
} | {
pinnedPostId: string
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
GET /v1/messaging/social/people/:userId
Someone's profile on Feed (a person's Cactive ID profile, or a page's): counts, when they joined, your follow (active, requested or null) and bell, whether they follow you, whether they're on your close friends or muted, and whether you can see their posts. 404 for people who aren't on Feed, were deactivated, or blocked you (or you them).
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:userId | A member's user id (usr_…). |
Response 200
{
profile: {
userId: string
kind: "page"
name: string
avatarUrl: null | string
banner: null | string
accent: null | string
about: null | string
category: null | string
website: null | string
visibility: "public"
likesPublic: boolean
pinnedPostId: null | string
counts: {
followers: number
following: number
posts: number
}
joinedAt: number
self: boolean
role: null | "owner" | "admin"
following: null | "active" | "requested"
notify: boolean
followsYou: null
closeFriend: boolean
muted: boolean
canSeePosts: boolean
} | {
userId: string
kind: "person"
name: string
avatarUrl: null | string
banner: null | string
accent: null | string
about: null | string
visibility: "private" | "public" | "followers"
likesPublic: boolean
pinnedPostId: null | string
counts: {
followers: number
following: number
posts: number
}
joinedAt: number
self: boolean
following: null | "active" | "requested"
notify: boolean
followsYou: null | "active" | "requested"
closeFriend: boolean
muted: boolean
canSeePosts: boolean
}
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
GET /v1/messaging/social/people/:userId/posts
A profile's posts, newest first: tab posts (posts, quotes and reposts), replies (everything), media (posts with photos or videos) or likes (theirs when they made likes public, or yours). 403 when only their followers see their posts. cursor for the next page.
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:userId | A member's user id (usr_…). |
| Query parameter | Type | Required | Default | Notes |
|---|---|---|---|---|
tab | string | No | "posts" |
Response 200
{
posts: {
postId: string
kind: "post" | "reply" | "quote" | "repost"
author: {
userId: string
name: string
avatarUrl: null | string
kind: "page" | "person"
visibility: "private" | "public" | "followers"
}
content: string
media: {
mediaId: string
url: string
mime: string
kind: "image" | "video"
width: null | number
height: null | number
alt: null | string
durationSecs: null | number
posterUrl: null | string
}[]
poll: null | {
question: string
answers: {
answerId: string
text: string
emoji: null | string
count: number
}[]
multiple: boolean
expiresAt: number
closed: boolean
total: number
mine: string[]
}
mentions: {
userId: string
name: string
}[]
hashtags: string[]
audience: "followers" | "everyone" | "close_friends"
replyPolicy: "following" | "mentioned" | "everyone"
replyTo: null | {
postId: string
author: null | {
userId: string
name: string
}
}
rootId: null | string
quote: null | object | {
postId: string
unavailable: true
}
repostOf: null | object | {
postId: string
unavailable: true
}
serverId: null | string
group: null | {
serverId: string
name: string
icon: null | string
}
event: null | {
serverId: string
eventId: string
serverName: null | string
name: string
description: null | string
startAt: number
endAt: null | number
place: null | string
inVoice: boolean
status: "canceled" | "live" | "upcoming" | "over"
interestedCount: number
goingCount: number
coverUrl: null | string
mine: null | "interested" | "going"
member: boolean
}
counts: {
likes: number
replies: number
reposts: number
quotes: number
bookmarks: number
views: number
}
viewer: {
liked: boolean
reposted: boolean
bookmarked: boolean
canReply: boolean
canQuote: boolean
canRepost: boolean
canEdit: boolean
canDelete: boolean
}
pinned: boolean
editedAt: null | number
edits: number
createdAt: number
why?: string[]
}[]
cursor: null | string
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
GET /v1/messaging/social/people/:userId/followers
Someone's followers, newest first, with your follow state toward each; hidden (403) when their posts are.
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:userId | A member's user id (usr_…). |
Response 200
{
people: {
userId: string
name: unknown
avatarUrl: unknown
about: null | string
kind: "page" | "person"
following: null | "active" | "requested"
visibility: "private" | "public" | "followers"
}[]
cursor: null | string
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
GET /v1/messaging/social/people/:userId/following
Who someone follows, with your follow state toward each; hidden (403) when their posts are.
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:userId | A member's user id (usr_…). |
Response 200
{
people: {
userId: string
name: unknown
avatarUrl: unknown
about: null | string
kind: "page" | "person"
following: null | "active" | "requested"
visibility: "private" | "public" | "followers"
}[]
cursor: null | string
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
PUT /v1/messaging/social/people/:userId/follow
Follows someone (state: "active"), or asks to when their account is followers-only or private (requested; private accounts take requests only from people they share a server with or are chat friends with). notify: true turns on post notifications. Up to 5,000 accounts and 400 new follows a day (platform settings).
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:userId | A member's user id (usr_…). |
Response 200
{
state: "active" | "requested"
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
PATCH /v1/messaging/social/people/:userId/follow
Turns post notifications for someone you follow on or off (notify).
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:userId | A member's user id (usr_…). |
Response 200
{
state: "active" | "requested"
notify: boolean
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
DELETE /v1/messaging/social/people/:userId/follow
Unfollows someone, or withdraws a request. Their posts leave your Following timeline at once.
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:userId | A member's user id (usr_…). |
Response 204 with no body.
Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
GET /v1/messaging/social/requests
People asking to follow you, newest first.
Auth: user access token or platform agent key
Response 200
{
people: {
userId: string
name: unknown
avatarUrl: unknown
about: null | string
kind: "page" | "person"
following: null | "active" | "requested"
visibility: "private" | "public" | "followers"
}[]
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
PUT /v1/messaging/social/requests/:userId
Approves a follow request; they're told.
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:userId | A member's user id (usr_…). |
Response 204 with no body.
Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
DELETE /v1/messaging/social/requests/:userId
Declines a follow request; they aren't told.
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:userId | A member's user id (usr_…). |
Response 204 with no body.
Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
DELETE /v1/messaging/social/followers/:userId
Removes one of your followers; they aren't told.
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:userId | A member's user id (usr_…). |
Response 204 with no body.
Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
GET /v1/messaging/social/close-friends
Your close friends: the people who see your close-friends posts and stories (when they follow you).
Auth: user access token or platform agent key
Response 200
{
people: {
userId: string
name: unknown
avatarUrl: unknown
about: null | string
kind: "page" | "person"
following: null | "active" | "requested"
visibility: "private" | "public" | "followers"
}[]
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
PUT /v1/messaging/social/close-friends/:userId
Adds someone to your close friends.
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:userId | A member's user id (usr_…). |
Response 204 with no body.
Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
DELETE /v1/messaging/social/close-friends/:userId
Takes someone off your close friends.
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:userId | A member's user id (usr_…). |
Response 204 with no body.
Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
GET /v1/messaging/social/mutes
People you muted.
Auth: user access token or platform agent key
Response 200
{
people: {
userId: string
name: unknown
avatarUrl: unknown
about: null | string
kind: "page" | "person"
following: null | "active" | "requested"
visibility: "private" | "public" | "followers"
}[]
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
PUT /v1/messaging/social/mutes/:userId
Mutes someone: their posts and activity stay out of your feeds and notifications; they aren't told and their profile still shows them.
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:userId | A member's user id (usr_…). |
Response 204 with no body.
Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
DELETE /v1/messaging/social/mutes/:userId
Unmutes someone.
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:userId | A member's user id (usr_…). |
Response 204 with no body.
Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
POST /v1/messaging/social/uploads
Where to PUT a photo (JPEG, PNG, WebP or GIF) or video (MP4, WebM or MOV) before posting it (name, mime, size; limits in the platform settings): answers mediaId, url and the headers to send. Then post with the media's mediaId, name, mime, size in pixels and alt text.
Auth: user access token or platform agent key
Response 200
{
mediaId: string
url: string
headers: {
"content-type": string
}
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
POST /v1/messaging/social/posts
Posts: content (up to 4,000 characters; Markdown's chat profile, mentions as <@usr_…>, #hashtags), up to 10 media (each mediaId, name, mime, width, height, alt, a video's durationSecs and poster) or a poll (as in chat), audience (everyone, followers or close_friends) and replyPolicy (everyone, following or mentioned). replyTo makes a reply (within the post's reply controls), quoteOf a quote (of posts everyone can see), serverId a post in that server's feed, asPage posts as a page you run, event shares a server's scheduled event. Mentioned people who can see it are told; followers get it in their Following timeline. Up to 60 posts an hour (platform settings).
Auth: user access token or platform agent key
Response 201
{
post: {
postId: string
kind: "post" | "reply" | "quote" | "repost"
author: {
userId: string
name: string
avatarUrl: null | string
kind: "page" | "person"
visibility: "private" | "public" | "followers"
}
content: string
media: {
mediaId: string
url: string
mime: string
kind: "image" | "video"
width: null | number
height: null | number
alt: null | string
durationSecs: null | number
posterUrl: null | string
}[]
poll: null | {
question: string
answers: {
answerId: string
text: string
emoji: null | string
count: number
}[]
multiple: boolean
expiresAt: number
closed: boolean
total: number
mine: string[]
}
mentions: {
userId: string
name: string
}[]
hashtags: string[]
audience: "followers" | "everyone" | "close_friends"
replyPolicy: "following" | "mentioned" | "everyone"
replyTo: null | {
postId: string
author: null | {
userId: string
name: string
}
}
rootId: null | string
quote: null | object | {
postId: string
unavailable: true
}
repostOf: null | object | {
postId: string
unavailable: true
}
serverId: null | string
group: null | {
serverId: string
name: string
icon: null | string
}
event: null | {
serverId: string
eventId: string
serverName: null | string
name: string
description: null | string
startAt: number
endAt: null | number
place: null | string
inVoice: boolean
status: "canceled" | "live" | "upcoming" | "over"
interestedCount: number
goingCount: number
coverUrl: null | string
mine: null | "interested" | "going"
member: boolean
}
counts: {
likes: number
replies: number
reposts: number
quotes: number
bookmarks: number
views: number
}
viewer: {
liked: boolean
reposted: boolean
bookmarked: boolean
canReply: boolean
canQuote: boolean
canRepost: boolean
canEdit: boolean
canDelete: boolean
}
pinned: boolean
editedAt: null | number
edits: number
createdAt: number
why?: string[]
}
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
GET /v1/messaging/social/posts/:postId
A post as you see it: its author, media (presigned for an hour), poll, what it quotes or reposts, counts, and what you've done and may do. 404 when you can't see it.
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:postId | A Feed post id (pst_…). |
Response 200
{
post: {
postId: string
kind: "post" | "reply" | "quote" | "repost"
author: {
userId: string
name: string
avatarUrl: null | string
kind: "page" | "person"
visibility: "private" | "public" | "followers"
}
content: string
media: {
mediaId: string
url: string
mime: string
kind: "image" | "video"
width: null | number
height: null | number
alt: null | string
durationSecs: null | number
posterUrl: null | string
}[]
poll: null | {
question: string
answers: {
answerId: string
text: string
emoji: null | string
count: number
}[]
multiple: boolean
expiresAt: number
closed: boolean
total: number
mine: string[]
}
mentions: {
userId: string
name: string
}[]
hashtags: string[]
audience: "followers" | "everyone" | "close_friends"
replyPolicy: "following" | "mentioned" | "everyone"
replyTo: null | {
postId: string
author: null | {
userId: string
name: string
}
}
rootId: null | string
quote: null | object | {
postId: string
unavailable: true
}
repostOf: null | object | {
postId: string
unavailable: true
}
serverId: null | string
group: null | {
serverId: string
name: string
icon: null | string
}
event: null | {
serverId: string
eventId: string
serverName: null | string
name: string
description: null | string
startAt: number
endAt: null | number
place: null | string
inVoice: boolean
status: "canceled" | "live" | "upcoming" | "over"
interestedCount: number
goingCount: number
coverUrl: null | string
mine: null | "interested" | "going"
member: boolean
}
counts: {
likes: number
replies: number
reposts: number
quotes: number
bookmarks: number
views: number
}
viewer: {
liked: boolean
reposted: boolean
bookmarked: boolean
canReply: boolean
canQuote: boolean
canRepost: boolean
canEdit: boolean
canDelete: boolean
}
pinned: boolean
editedAt: null | number
edits: number
createdAt: number
why?: string[]
}
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
PATCH /v1/messaging/social/posts/:postId
Edits your post's content (and its media's alt text, alts by media id) within an hour of posting, up to 5 times (platform settings); the earlier version is kept.
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:postId | A Feed post id (pst_…). |
Response 200
{
post: {
postId: string
kind: "post" | "reply" | "quote" | "repost"
author: {
userId: string
name: string
avatarUrl: null | string
kind: "page" | "person"
visibility: "private" | "public" | "followers"
}
content: string
media: {
mediaId: string
url: string
mime: string
kind: "image" | "video"
width: null | number
height: null | number
alt: null | string
durationSecs: null | number
posterUrl: null | string
}[]
poll: null | {
question: string
answers: {
answerId: string
text: string
emoji: null | string
count: number
}[]
multiple: boolean
expiresAt: number
closed: boolean
total: number
mine: string[]
}
mentions: {
userId: string
name: string
}[]
hashtags: string[]
audience: "followers" | "everyone" | "close_friends"
replyPolicy: "following" | "mentioned" | "everyone"
replyTo: null | {
postId: string
author: null | {
userId: string
name: string
}
}
rootId: null | string
quote: null | object | {
postId: string
unavailable: true
}
repostOf: null | object | {
postId: string
unavailable: true
}
serverId: null | string
group: null | {
serverId: string
name: string
icon: null | string
}
event: null | {
serverId: string
eventId: string
serverName: null | string
name: string
description: null | string
startAt: number
endAt: null | number
place: null | string
inVoice: boolean
status: "canceled" | "live" | "upcoming" | "over"
interestedCount: number
goingCount: number
coverUrl: null | string
mine: null | "interested" | "going"
member: boolean
}
counts: {
likes: number
replies: number
reposts: number
quotes: number
bookmarks: number
views: number
}
viewer: {
liked: boolean
reposted: boolean
bookmarked: boolean
canReply: boolean
canQuote: boolean
canRepost: boolean
canEdit: boolean
canDelete: boolean
}
pinned: boolean
editedAt: null | number
edits: number
createdAt: number
why?: string[]
}
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
DELETE /v1/messaging/social/posts/:postId
Deletes your post (or a page's you run, or a group post as one of the server's moderators) with its likes, reposts, bookmarks and poll votes; replies stay.
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:postId | A Feed post id (pst_…). |
Response 204 with no body.
Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
GET /v1/messaging/social/posts/:postId/thread
A post with its conversation: the posts it replies to (oldest first; gap when one is gone or hidden from you), then its replies, the author's first (cursor for more).
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:postId | A Feed post id (pst_…). |
Response 200
{
ancestors: {
postId: string
kind: "post" | "reply" | "quote" | "repost"
author: {
userId: string
name: string
avatarUrl: null | string
kind: "page" | "person"
visibility: "private" | "public" | "followers"
}
content: string
media: {
mediaId: string
url: string
mime: string
kind: "image" | "video"
width: null | number
height: null | number
alt: null | string
durationSecs: null | number
posterUrl: null | string
}[]
poll: null | {
question: string
answers: {
answerId: string
text: string
emoji: null | string
count: number
}[]
multiple: boolean
expiresAt: number
closed: boolean
total: number
mine: string[]
}
mentions: {
userId: string
name: string
}[]
hashtags: string[]
audience: "followers" | "everyone" | "close_friends"
replyPolicy: "following" | "mentioned" | "everyone"
replyTo: null | {
postId: string
author: null | {
userId: string
name: string
}
}
rootId: null | string
quote: null | object | {
postId: string
unavailable: true
}
repostOf: null | object | {
postId: string
unavailable: true
}
serverId: null | string
group: null | {
serverId: string
name: string
icon: null | string
}
event: null | {
serverId: string
eventId: string
serverName: null | string
name: string
description: null | string
startAt: number
endAt: null | number
place: null | string
inVoice: boolean
status: "canceled" | "live" | "upcoming" | "over"
interestedCount: number
goingCount: number
coverUrl: null | string
mine: null | "interested" | "going"
member: boolean
}
counts: {
likes: number
replies: number
reposts: number
quotes: number
bookmarks: number
views: number
}
viewer: {
liked: boolean
reposted: boolean
bookmarked: boolean
canReply: boolean
canQuote: boolean
canRepost: boolean
canEdit: boolean
canDelete: boolean
}
pinned: boolean
editedAt: null | number
edits: number
createdAt: number
why?: string[]
}[]
gap: boolean
post: {
postId: string
kind: "post" | "reply" | "quote" | "repost"
author: {
userId: string
name: string
avatarUrl: null | string
kind: "page" | "person"
visibility: "private" | "public" | "followers"
}
content: string
media: {
mediaId: string
url: string
mime: string
kind: "image" | "video"
width: null | number
height: null | number
alt: null | string
durationSecs: null | number
posterUrl: null | string
}[]
poll: null | {
question: string
answers: {
answerId: string
text: string
emoji: null | string
count: number
}[]
multiple: boolean
expiresAt: number
closed: boolean
total: number
mine: string[]
}
mentions: {
userId: string
name: string
}[]
hashtags: string[]
audience: "followers" | "everyone" | "close_friends"
replyPolicy: "following" | "mentioned" | "everyone"
replyTo: null | {
postId: string
author: null | {
userId: string
name: string
}
}
rootId: null | string
quote: null | object | {
postId: string
unavailable: true
}
repostOf: null | object | {
postId: string
unavailable: true
}
serverId: null | string
group: null | {
serverId: string
name: string
icon: null | string
}
event: null | {
serverId: string
eventId: string
serverName: null | string
name: string
description: null | string
startAt: number
endAt: null | number
place: null | string
inVoice: boolean
status: "canceled" | "live" | "upcoming" | "over"
interestedCount: number
goingCount: number
coverUrl: null | string
mine: null | "interested" | "going"
member: boolean
}
counts: {
likes: number
replies: number
reposts: number
quotes: number
bookmarks: number
views: number
}
viewer: {
liked: boolean
reposted: boolean
bookmarked: boolean
canReply: boolean
canQuote: boolean
canRepost: boolean
canEdit: boolean
canDelete: boolean
}
pinned: boolean
editedAt: null | number
edits: number
createdAt: number
why?: string[]
}
replies: {
postId: string
kind: "post" | "reply" | "quote" | "repost"
author: {
userId: string
name: string
avatarUrl: null | string
kind: "page" | "person"
visibility: "private" | "public" | "followers"
}
content: string
media: {
mediaId: string
url: string
mime: string
kind: "image" | "video"
width: null | number
height: null | number
alt: null | string
durationSecs: null | number
posterUrl: null | string
}[]
poll: null | {
question: string
answers: {
answerId: string
text: string
emoji: null | string
count: number
}[]
multiple: boolean
expiresAt: number
closed: boolean
total: number
mine: string[]
}
mentions: {
userId: string
name: string
}[]
hashtags: string[]
audience: "followers" | "everyone" | "close_friends"
replyPolicy: "following" | "mentioned" | "everyone"
replyTo: null | {
postId: string
author: null | {
userId: string
name: string
}
}
rootId: null | string
quote: null | object | {
postId: string
unavailable: true
}
repostOf: null | object | {
postId: string
unavailable: true
}
serverId: null | string
group: null | {
serverId: string
name: string
icon: null | string
}
event: null | {
serverId: string
eventId: string
serverName: null | string
name: string
description: null | string
startAt: number
endAt: null | number
place: null | string
inVoice: boolean
status: "canceled" | "live" | "upcoming" | "over"
interestedCount: number
goingCount: number
coverUrl: null | string
mine: null | "interested" | "going"
member: boolean
}
counts: {
likes: number
replies: number
reposts: number
quotes: number
bookmarks: number
views: number
}
viewer: {
liked: boolean
reposted: boolean
bookmarked: boolean
canReply: boolean
canQuote: boolean
canRepost: boolean
canEdit: boolean
canDelete: boolean
}
pinned: boolean
editedAt: null | number
edits: number
createdAt: number
why?: string[]
}[]
cursor: null | string
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
GET /v1/messaging/social/posts/:postId/edits
A post's earlier versions, oldest first, then as it is now.
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:postId | A Feed post id (pst_…). |
Response 200
{
versions: {
content: string
at: number
}[]
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
GET /v1/messaging/social/posts/:postId/quotes
Posts quoting a post, newest first.
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:postId | A Feed post id (pst_…). |
Response 200
{
posts: {
postId: string
kind: "post" | "reply" | "quote" | "repost"
author: {
userId: string
name: string
avatarUrl: null | string
kind: "page" | "person"
visibility: "private" | "public" | "followers"
}
content: string
media: {
mediaId: string
url: string
mime: string
kind: "image" | "video"
width: null | number
height: null | number
alt: null | string
durationSecs: null | number
posterUrl: null | string
}[]
poll: null | {
question: string
answers: {
answerId: string
text: string
emoji: null | string
count: number
}[]
multiple: boolean
expiresAt: number
closed: boolean
total: number
mine: string[]
}
mentions: {
userId: string
name: string
}[]
hashtags: string[]
audience: "followers" | "everyone" | "close_friends"
replyPolicy: "following" | "mentioned" | "everyone"
replyTo: null | {
postId: string
author: null | {
userId: string
name: string
}
}
rootId: null | string
quote: null | object | {
postId: string
unavailable: true
}
repostOf: null | object | {
postId: string
unavailable: true
}
serverId: null | string
group: null | {
serverId: string
name: string
icon: null | string
}
event: null | {
serverId: string
eventId: string
serverName: null | string
name: string
description: null | string
startAt: number
endAt: null | number
place: null | string
inVoice: boolean
status: "canceled" | "live" | "upcoming" | "over"
interestedCount: number
goingCount: number
coverUrl: null | string
mine: null | "interested" | "going"
member: boolean
}
counts: {
likes: number
replies: number
reposts: number
quotes: number
bookmarks: number
views: number
}
viewer: {
liked: boolean
reposted: boolean
bookmarked: boolean
canReply: boolean
canQuote: boolean
canRepost: boolean
canEdit: boolean
canDelete: boolean
}
pinned: boolean
editedAt: null | number
edits: number
createdAt: number
why?: string[]
}[]
cursor: null | string
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
GET /v1/messaging/social/posts/:postId/likes
Who liked your post (only its author sees this), newest first.
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:postId | A Feed post id (pst_…). |
Response 200
{
people: {
userId: string
name: string
avatarUrl: null | string
following: null | "active" | "requested"
}[]
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
PUT /v1/messaging/social/posts/:postId/likes
Likes a post (a repost's post); its author is told (grouped per post for a day). Answers the post as you now see it.
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:postId | A Feed post id (pst_…). |
Response 200
{
post: {
postId: string
kind: "post" | "reply" | "quote" | "repost"
author: {
userId: string
name: string
avatarUrl: null | string
kind: "page" | "person"
visibility: "private" | "public" | "followers"
}
content: string
media: {
mediaId: string
url: string
mime: string
kind: "image" | "video"
width: null | number
height: null | number
alt: null | string
durationSecs: null | number
posterUrl: null | string
}[]
poll: null | {
question: string
answers: {
answerId: string
text: string
emoji: null | string
count: number
}[]
multiple: boolean
expiresAt: number
closed: boolean
total: number
mine: string[]
}
mentions: {
userId: string
name: string
}[]
hashtags: string[]
audience: "followers" | "everyone" | "close_friends"
replyPolicy: "following" | "mentioned" | "everyone"
replyTo: null | {
postId: string
author: null | {
userId: string
name: string
}
}
rootId: null | string
quote: null | object | {
postId: string
unavailable: true
}
repostOf: null | object | {
postId: string
unavailable: true
}
serverId: null | string
group: null | {
serverId: string
name: string
icon: null | string
}
event: null | {
serverId: string
eventId: string
serverName: null | string
name: string
description: null | string
startAt: number
endAt: null | number
place: null | string
inVoice: boolean
status: "canceled" | "live" | "upcoming" | "over"
interestedCount: number
goingCount: number
coverUrl: null | string
mine: null | "interested" | "going"
member: boolean
}
counts: {
likes: number
replies: number
reposts: number
quotes: number
bookmarks: number
views: number
}
viewer: {
liked: boolean
reposted: boolean
bookmarked: boolean
canReply: boolean
canQuote: boolean
canRepost: boolean
canEdit: boolean
canDelete: boolean
}
pinned: boolean
editedAt: null | number
edits: number
createdAt: number
why?: string[]
}
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
DELETE /v1/messaging/social/posts/:postId/likes
Takes your like back.
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:postId | A Feed post id (pst_…). |
Response 200
{
post: {
postId: string
kind: "post" | "reply" | "quote" | "repost"
author: {
userId: string
name: string
avatarUrl: null | string
kind: "page" | "person"
visibility: "private" | "public" | "followers"
}
content: string
media: {
mediaId: string
url: string
mime: string
kind: "image" | "video"
width: null | number
height: null | number
alt: null | string
durationSecs: null | number
posterUrl: null | string
}[]
poll: null | {
question: string
answers: {
answerId: string
text: string
emoji: null | string
count: number
}[]
multiple: boolean
expiresAt: number
closed: boolean
total: number
mine: string[]
}
mentions: {
userId: string
name: string
}[]
hashtags: string[]
audience: "followers" | "everyone" | "close_friends"
replyPolicy: "following" | "mentioned" | "everyone"
replyTo: null | {
postId: string
author: null | {
userId: string
name: string
}
}
rootId: null | string
quote: null | object | {
postId: string
unavailable: true
}
repostOf: null | object | {
postId: string
unavailable: true
}
serverId: null | string
group: null | {
serverId: string
name: string
icon: null | string
}
event: null | {
serverId: string
eventId: string
serverName: null | string
name: string
description: null | string
startAt: number
endAt: null | number
place: null | string
inVoice: boolean
status: "canceled" | "live" | "upcoming" | "over"
interestedCount: number
goingCount: number
coverUrl: null | string
mine: null | "interested" | "going"
member: boolean
}
counts: {
likes: number
replies: number
reposts: number
quotes: number
bookmarks: number
views: number
}
viewer: {
liked: boolean
reposted: boolean
bookmarked: boolean
canReply: boolean
canQuote: boolean
canRepost: boolean
canEdit: boolean
canDelete: boolean
}
pinned: boolean
editedAt: null | number
edits: number
createdAt: number
why?: string[]
}
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
GET /v1/messaging/social/posts/:postId/reposts
Who reposted a post, newest first.
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:postId | A Feed post id (pst_…). |
Response 200
{
people: {
userId: string
name: string
avatarUrl: null | string
following: null | "active" | "requested"
}[]
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
PUT /v1/messaging/social/posts/:postId/reposts
Reposts a post everyone can see: it shows on your profile and in your followers' Following timelines. Once per post.
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:postId | A Feed post id (pst_…). |
Response 200
{
post: {
postId: string
kind: "post" | "reply" | "quote" | "repost"
author: {
userId: string
name: string
avatarUrl: null | string
kind: "page" | "person"
visibility: "private" | "public" | "followers"
}
content: string
media: {
mediaId: string
url: string
mime: string
kind: "image" | "video"
width: null | number
height: null | number
alt: null | string
durationSecs: null | number
posterUrl: null | string
}[]
poll: null | {
question: string
answers: {
answerId: string
text: string
emoji: null | string
count: number
}[]
multiple: boolean
expiresAt: number
closed: boolean
total: number
mine: string[]
}
mentions: {
userId: string
name: string
}[]
hashtags: string[]
audience: "followers" | "everyone" | "close_friends"
replyPolicy: "following" | "mentioned" | "everyone"
replyTo: null | {
postId: string
author: null | {
userId: string
name: string
}
}
rootId: null | string
quote: null | object | {
postId: string
unavailable: true
}
repostOf: null | object | {
postId: string
unavailable: true
}
serverId: null | string
group: null | {
serverId: string
name: string
icon: null | string
}
event: null | {
serverId: string
eventId: string
serverName: null | string
name: string
description: null | string
startAt: number
endAt: null | number
place: null | string
inVoice: boolean
status: "canceled" | "live" | "upcoming" | "over"
interestedCount: number
goingCount: number
coverUrl: null | string
mine: null | "interested" | "going"
member: boolean
}
counts: {
likes: number
replies: number
reposts: number
quotes: number
bookmarks: number
views: number
}
viewer: {
liked: boolean
reposted: boolean
bookmarked: boolean
canReply: boolean
canQuote: boolean
canRepost: boolean
canEdit: boolean
canDelete: boolean
}
pinned: boolean
editedAt: null | number
edits: number
createdAt: number
why?: string[]
}
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
DELETE /v1/messaging/social/posts/:postId/reposts
Undoes your repost.
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:postId | A Feed post id (pst_…). |
Response 200
{
post: {
postId: string
kind: "post" | "reply" | "quote" | "repost"
author: {
userId: string
name: string
avatarUrl: null | string
kind: "page" | "person"
visibility: "private" | "public" | "followers"
}
content: string
media: {
mediaId: string
url: string
mime: string
kind: "image" | "video"
width: null | number
height: null | number
alt: null | string
durationSecs: null | number
posterUrl: null | string
}[]
poll: null | {
question: string
answers: {
answerId: string
text: string
emoji: null | string
count: number
}[]
multiple: boolean
expiresAt: number
closed: boolean
total: number
mine: string[]
}
mentions: {
userId: string
name: string
}[]
hashtags: string[]
audience: "followers" | "everyone" | "close_friends"
replyPolicy: "following" | "mentioned" | "everyone"
replyTo: null | {
postId: string
author: null | {
userId: string
name: string
}
}
rootId: null | string
quote: null | object | {
postId: string
unavailable: true
}
repostOf: null | object | {
postId: string
unavailable: true
}
serverId: null | string
group: null | {
serverId: string
name: string
icon: null | string
}
event: null | {
serverId: string
eventId: string
serverName: null | string
name: string
description: null | string
startAt: number
endAt: null | number
place: null | string
inVoice: boolean
status: "canceled" | "live" | "upcoming" | "over"
interestedCount: number
goingCount: number
coverUrl: null | string
mine: null | "interested" | "going"
member: boolean
}
counts: {
likes: number
replies: number
reposts: number
quotes: number
bookmarks: number
views: number
}
viewer: {
liked: boolean
reposted: boolean
bookmarked: boolean
canReply: boolean
canQuote: boolean
canRepost: boolean
canEdit: boolean
canDelete: boolean
}
pinned: boolean
editedAt: null | number
edits: number
createdAt: number
why?: string[]
}
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
PUT /v1/messaging/social/posts/:postId/bookmarks
Bookmarks a post (private: only the count shows).
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:postId | A Feed post id (pst_…). |
Response 200
{
post: {
postId: string
kind: "post" | "reply" | "quote" | "repost"
author: {
userId: string
name: string
avatarUrl: null | string
kind: "page" | "person"
visibility: "private" | "public" | "followers"
}
content: string
media: {
mediaId: string
url: string
mime: string
kind: "image" | "video"
width: null | number
height: null | number
alt: null | string
durationSecs: null | number
posterUrl: null | string
}[]
poll: null | {
question: string
answers: {
answerId: string
text: string
emoji: null | string
count: number
}[]
multiple: boolean
expiresAt: number
closed: boolean
total: number
mine: string[]
}
mentions: {
userId: string
name: string
}[]
hashtags: string[]
audience: "followers" | "everyone" | "close_friends"
replyPolicy: "following" | "mentioned" | "everyone"
replyTo: null | {
postId: string
author: null | {
userId: string
name: string
}
}
rootId: null | string
quote: null | object | {
postId: string
unavailable: true
}
repostOf: null | object | {
postId: string
unavailable: true
}
serverId: null | string
group: null | {
serverId: string
name: string
icon: null | string
}
event: null | {
serverId: string
eventId: string
serverName: null | string
name: string
description: null | string
startAt: number
endAt: null | number
place: null | string
inVoice: boolean
status: "canceled" | "live" | "upcoming" | "over"
interestedCount: number
goingCount: number
coverUrl: null | string
mine: null | "interested" | "going"
member: boolean
}
counts: {
likes: number
replies: number
reposts: number
quotes: number
bookmarks: number
views: number
}
viewer: {
liked: boolean
reposted: boolean
bookmarked: boolean
canReply: boolean
canQuote: boolean
canRepost: boolean
canEdit: boolean
canDelete: boolean
}
pinned: boolean
editedAt: null | number
edits: number
createdAt: number
why?: string[]
}
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
DELETE /v1/messaging/social/posts/:postId/bookmarks
Removes a bookmark.
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:postId | A Feed post id (pst_…). |
Response 200
{
post: {
postId: string
kind: "post" | "reply" | "quote" | "repost"
author: {
userId: string
name: string
avatarUrl: null | string
kind: "page" | "person"
visibility: "private" | "public" | "followers"
}
content: string
media: {
mediaId: string
url: string
mime: string
kind: "image" | "video"
width: null | number
height: null | number
alt: null | string
durationSecs: null | number
posterUrl: null | string
}[]
poll: null | {
question: string
answers: {
answerId: string
text: string
emoji: null | string
count: number
}[]
multiple: boolean
expiresAt: number
closed: boolean
total: number
mine: string[]
}
mentions: {
userId: string
name: string
}[]
hashtags: string[]
audience: "followers" | "everyone" | "close_friends"
replyPolicy: "following" | "mentioned" | "everyone"
replyTo: null | {
postId: string
author: null | {
userId: string
name: string
}
}
rootId: null | string
quote: null | object | {
postId: string
unavailable: true
}
repostOf: null | object | {
postId: string
unavailable: true
}
serverId: null | string
group: null | {
serverId: string
name: string
icon: null | string
}
event: null | {
serverId: string
eventId: string
serverName: null | string
name: string
description: null | string
startAt: number
endAt: null | number
place: null | string
inVoice: boolean
status: "canceled" | "live" | "upcoming" | "over"
interestedCount: number
goingCount: number
coverUrl: null | string
mine: null | "interested" | "going"
member: boolean
}
counts: {
likes: number
replies: number
reposts: number
quotes: number
bookmarks: number
views: number
}
viewer: {
liked: boolean
reposted: boolean
bookmarked: boolean
canReply: boolean
canQuote: boolean
canRepost: boolean
canEdit: boolean
canDelete: boolean
}
pinned: boolean
editedAt: null | number
edits: number
createdAt: number
why?: string[]
}
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
PUT /v1/messaging/social/posts/:postId/poll/answers/:answerId
Votes in a post's poll (one answer each replaces your vote unless it takes several).
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:postId | A Feed post id (pst_…). |
:answerId | A poll answer's id (1–10). |
Response 200
{
poll: {
question: string
answers: {
answerId: string
text: string
emoji: null | string
count: number
}[]
multiple: boolean
expiresAt: number
closed: boolean
total: number
mine: string[]
}
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
DELETE /v1/messaging/social/posts/:postId/poll/answers/:answerId
Takes your vote back.
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:postId | A Feed post id (pst_…). |
:answerId | A poll answer's id (1–10). |
Response 200
{
poll: {
question: string
answers: {
answerId: string
text: string
emoji: null | string
count: number
}[]
multiple: boolean
expiresAt: number
closed: boolean
total: number
mine: string[]
}
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
POST /v1/messaging/social/posts/:postId/not-interested
"Not interested": the post leaves your For You, and its author and hashtags weigh less there for 30 days.
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:postId | A Feed post id (pst_…). |
Response 204 with no body.
Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
POST /v1/messaging/social/views
Counts views: the posts (postIds, up to 50) that were on your screen for a second; each counts once a day per person.
Auth: user access token or platform agent key
Response 200
{
counted: number
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
GET /v1/messaging/social/feed/following
Your Following timeline, newest first: posts, quotes and reposts from the people and pages you follow (and your own), as you may see them now. cursor (the last post's id) for older ones.
Auth: user access token or platform agent key
Response 200
{
posts: {
postId: string
kind: "post" | "reply" | "quote" | "repost"
author: {
userId: string
name: string
avatarUrl: null | string
kind: "page" | "person"
visibility: "private" | "public" | "followers"
}
content: string
media: {
mediaId: string
url: string
mime: string
kind: "image" | "video"
width: null | number
height: null | number
alt: null | string
durationSecs: null | number
posterUrl: null | string
}[]
poll: null | {
question: string
answers: {
answerId: string
text: string
emoji: null | string
count: number
}[]
multiple: boolean
expiresAt: number
closed: boolean
total: number
mine: string[]
}
mentions: {
userId: string
name: string
}[]
hashtags: string[]
audience: "followers" | "everyone" | "close_friends"
replyPolicy: "following" | "mentioned" | "everyone"
replyTo: null | {
postId: string
author: null | {
userId: string
name: string
}
}
rootId: null | string
quote: null | object | {
postId: string
unavailable: true
}
repostOf: null | object | {
postId: string
unavailable: true
}
serverId: null | string
group: null | {
serverId: string
name: string
icon: null | string
}
event: null | {
serverId: string
eventId: string
serverName: null | string
name: string
description: null | string
startAt: number
endAt: null | number
place: null | string
inVoice: boolean
status: "canceled" | "live" | "upcoming" | "over"
interestedCount: number
goingCount: number
coverUrl: null | string
mine: null | "interested" | "going"
member: boolean
}
counts: {
likes: number
replies: number
reposts: number
quotes: number
bookmarks: number
views: number
}
viewer: {
liked: boolean
reposted: boolean
bookmarked: boolean
canReply: boolean
canQuote: boolean
canRepost: boolean
canEdit: boolean
canDelete: boolean
}
pinned: boolean
editedAt: null | number
edits: number
createdAt: number
why?: string[]
}[]
cursor: null | string
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
GET /v1/messaging/social/feed/for-you
For You: recent posts from your timeline, your servers' feeds, likes people made public and what's popular, ranked by relevance and freshness (weights in the platform settings), each with why it's there. cursor continues the same ranking.
Auth: user access token or platform agent key
Response 200
{
posts: {
postId: string
kind: "post" | "reply" | "quote" | "repost"
author: {
userId: string
name: string
avatarUrl: null | string
kind: "page" | "person"
visibility: "private" | "public" | "followers"
}
content: string
media: {
mediaId: string
url: string
mime: string
kind: "image" | "video"
width: null | number
height: null | number
alt: null | string
durationSecs: null | number
posterUrl: null | string
}[]
poll: null | {
question: string
answers: {
answerId: string
text: string
emoji: null | string
count: number
}[]
multiple: boolean
expiresAt: number
closed: boolean
total: number
mine: string[]
}
mentions: {
userId: string
name: string
}[]
hashtags: string[]
audience: "followers" | "everyone" | "close_friends"
replyPolicy: "following" | "mentioned" | "everyone"
replyTo: null | {
postId: string
author: null | {
userId: string
name: string
}
}
rootId: null | string
quote: null | object | {
postId: string
unavailable: true
}
repostOf: null | object | {
postId: string
unavailable: true
}
serverId: null | string
group: null | {
serverId: string
name: string
icon: null | string
}
event: null | {
serverId: string
eventId: string
serverName: null | string
name: string
description: null | string
startAt: number
endAt: null | number
place: null | string
inVoice: boolean
status: "canceled" | "live" | "upcoming" | "over"
interestedCount: number
goingCount: number
coverUrl: null | string
mine: null | "interested" | "going"
member: boolean
}
counts: {
likes: number
replies: number
reposts: number
quotes: number
bookmarks: number
views: number
}
viewer: {
liked: boolean
reposted: boolean
bookmarked: boolean
canReply: boolean
canQuote: boolean
canRepost: boolean
canEdit: boolean
canDelete: boolean
}
pinned: boolean
editedAt: null | number
edits: number
createdAt: number
why?: string[]
}[]
cursor: null | string
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
GET /v1/messaging/social/bookmarks
Your bookmarks, newest first.
Auth: user access token or platform agent key
Response 200
{
posts: {
postId: string
kind: "post" | "reply" | "quote" | "repost"
author: {
userId: string
name: string
avatarUrl: null | string
kind: "page" | "person"
visibility: "private" | "public" | "followers"
}
content: string
media: {
mediaId: string
url: string
mime: string
kind: "image" | "video"
width: null | number
height: null | number
alt: null | string
durationSecs: null | number
posterUrl: null | string
}[]
poll: null | {
question: string
answers: {
answerId: string
text: string
emoji: null | string
count: number
}[]
multiple: boolean
expiresAt: number
closed: boolean
total: number
mine: string[]
}
mentions: {
userId: string
name: string
}[]
hashtags: string[]
audience: "followers" | "everyone" | "close_friends"
replyPolicy: "following" | "mentioned" | "everyone"
replyTo: null | {
postId: string
author: null | {
userId: string
name: string
}
}
rootId: null | string
quote: null | object | {
postId: string
unavailable: true
}
repostOf: null | object | {
postId: string
unavailable: true
}
serverId: null | string
group: null | {
serverId: string
name: string
icon: null | string
}
event: null | {
serverId: string
eventId: string
serverName: null | string
name: string
description: null | string
startAt: number
endAt: null | number
place: null | string
inVoice: boolean
status: "canceled" | "live" | "upcoming" | "over"
interestedCount: number
goingCount: number
coverUrl: null | string
mine: null | "interested" | "going"
member: boolean
}
counts: {
likes: number
replies: number
reposts: number
quotes: number
bookmarks: number
views: number
}
viewer: {
liked: boolean
reposted: boolean
bookmarked: boolean
canReply: boolean
canQuote: boolean
canRepost: boolean
canEdit: boolean
canDelete: boolean
}
pinned: boolean
editedAt: null | number
edits: number
createdAt: number
why?: string[]
}[]
cursor: null | string
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
GET /v1/messaging/social/tags/:tag
Posts with a hashtag, newest first (posts everyone can see).
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:tag | A hashtag without its # (case and accents don't matter). |
Response 200
{
tag: string
posts: {
postId: string
kind: "post" | "reply" | "quote" | "repost"
author: {
userId: string
name: string
avatarUrl: null | string
kind: "page" | "person"
visibility: "private" | "public" | "followers"
}
content: string
media: {
mediaId: string
url: string
mime: string
kind: "image" | "video"
width: null | number
height: null | number
alt: null | string
durationSecs: null | number
posterUrl: null | string
}[]
poll: null | {
question: string
answers: {
answerId: string
text: string
emoji: null | string
count: number
}[]
multiple: boolean
expiresAt: number
closed: boolean
total: number
mine: string[]
}
mentions: {
userId: string
name: string
}[]
hashtags: string[]
audience: "followers" | "everyone" | "close_friends"
replyPolicy: "following" | "mentioned" | "everyone"
replyTo: null | {
postId: string
author: null | {
userId: string
name: string
}
}
rootId: null | string
quote: null | object | {
postId: string
unavailable: true
}
repostOf: null | object | {
postId: string
unavailable: true
}
serverId: null | string
group: null | {
serverId: string
name: string
icon: null | string
}
event: null | {
serverId: string
eventId: string
serverName: null | string
name: string
description: null | string
startAt: number
endAt: null | number
place: null | string
inVoice: boolean
status: "canceled" | "live" | "upcoming" | "over"
interestedCount: number
goingCount: number
coverUrl: null | string
mine: null | "interested" | "going"
member: boolean
}
counts: {
likes: number
replies: number
reposts: number
quotes: number
bookmarks: number
views: number
}
viewer: {
liked: boolean
reposted: boolean
bookmarked: boolean
canReply: boolean
canQuote: boolean
canRepost: boolean
canEdit: boolean
canDelete: boolean
}
pinned: boolean
editedAt: null | number
edits: number
createdAt: number
why?: string[]
}[]
cursor: null | string
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
GET /v1/messaging/social/explore
Explore: trending hashtags over the last day, popular posts, and people to follow (followed by people you follow, or in your servers; never private accounts).
Auth: user access token or platform agent key
Response 200
{
trends: {
tag: string
count: number
}[]
posts: {
postId: string
kind: "post" | "reply" | "quote" | "repost"
author: {
userId: string
name: string
avatarUrl: null | string
kind: "page" | "person"
visibility: "private" | "public" | "followers"
}
content: string
media: {
mediaId: string
url: string
mime: string
kind: "image" | "video"
width: null | number
height: null | number
alt: null | string
durationSecs: null | number
posterUrl: null | string
}[]
poll: null | {
question: string
answers: {
answerId: string
text: string
emoji: null | string
count: number
}[]
multiple: boolean
expiresAt: number
closed: boolean
total: number
mine: string[]
}
mentions: {
userId: string
name: string
}[]
hashtags: string[]
audience: "followers" | "everyone" | "close_friends"
replyPolicy: "following" | "mentioned" | "everyone"
replyTo: null | {
postId: string
author: null | {
userId: string
name: string
}
}
rootId: null | string
quote: null | object | {
postId: string
unavailable: true
}
repostOf: null | object | {
postId: string
unavailable: true
}
serverId: null | string
group: null | {
serverId: string
name: string
icon: null | string
}
event: null | {
serverId: string
eventId: string
serverName: null | string
name: string
description: null | string
startAt: number
endAt: null | number
place: null | string
inVoice: boolean
status: "canceled" | "live" | "upcoming" | "over"
interestedCount: number
goingCount: number
coverUrl: null | string
mine: null | "interested" | "going"
member: boolean
}
counts: {
likes: number
replies: number
reposts: number
quotes: number
bookmarks: number
views: number
}
viewer: {
liked: boolean
reposted: boolean
bookmarked: boolean
canReply: boolean
canQuote: boolean
canRepost: boolean
canEdit: boolean
canDelete: boolean
}
pinned: boolean
editedAt: null | number
edits: number
createdAt: number
why?: string[]
}[]
people: {
userId: string
name: unknown
avatarUrl: unknown
about: null | string
kind: "page" | "person"
visibility: "private" | "public" | "followers"
reason: string
}[]
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
GET /v1/messaging/social/search
Searches posts (q: every word must match; #tags, from:usr_…, has:media, has:poll), newest first, or people by name (type=people). Only posts everyone can see are searchable.
Auth: user access token or platform agent key
| Query parameter | Type | Required | Default | Notes |
|---|---|---|---|---|
q | string | No | "" | |
type | string | No | ||
cursor | string | No |
Response 200
{
posts: []
people: {
userId: string
name: unknown
avatarUrl: unknown
kind: "page" | "person"
visibility: "private" | "public" | "followers"
following: null | "active" | "requested"
}[]
cursor: null
} | {
posts: {
postId: string
kind: "post" | "reply" | "quote" | "repost"
author: {
userId: string
name: string
avatarUrl: null | string
kind: "page" | "person"
visibility: "private" | "public" | "followers"
}
content: string
media: {
mediaId: string
url: string
mime: string
kind: "image" | "video"
width: null | number
height: null | number
alt: null | string
durationSecs: null | number
posterUrl: null | string
}[]
poll: null | {
question: string
answers: {
answerId: string
text: string
emoji: null | string
count: number
}[]
multiple: boolean
expiresAt: number
closed: boolean
total: number
mine: string[]
}
mentions: {
userId: string
name: string
}[]
hashtags: string[]
audience: "followers" | "everyone" | "close_friends"
replyPolicy: "following" | "mentioned" | "everyone"
replyTo: null | {
postId: string
author: null | {
userId: string
name: string
}
}
rootId: null | string
quote: null | object | {
postId: string
unavailable: true
}
repostOf: null | object | {
postId: string
unavailable: true
}
serverId: null | string
group: null | {
serverId: string
name: string
icon: null | string
}
event: null | {
serverId: string
eventId: string
serverName: null | string
name: string
description: null | string
startAt: number
endAt: null | number
place: null | string
inVoice: boolean
status: "canceled" | "live" | "upcoming" | "over"
interestedCount: number
goingCount: number
coverUrl: null | string
mine: null | "interested" | "going"
member: boolean
}
counts: {
likes: number
replies: number
reposts: number
quotes: number
bookmarks: number
views: number
}
viewer: {
liked: boolean
reposted: boolean
bookmarked: boolean
canReply: boolean
canQuote: boolean
canRepost: boolean
canEdit: boolean
canDelete: boolean
}
pinned: boolean
editedAt: null | number
edits: number
createdAt: number
why?: string[]
}[]
people: []
cursor: null | string
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
GET /v1/messaging/social/mention-candidates
People to complete an @mention with (q): who you follow, who follows you, and people found by name.
Auth: user access token or platform agent key
| Query parameter | Type | Required | Default | Notes |
|---|---|---|---|---|
q | string | No | "" |
Response 200
{
people: {
userId: string
name: string
avatarUrl: null | string
}[]
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
POST /v1/messaging/social/stories
Shares a story: one photo or video (media, uploaded as for posts, with alt), an optional caption (up to 500) and closeFriends. It shows for 24 hours (platform settings) to your followers (close friends who follow you for close-friends stories; anyone on your profile when your account is public), then stays in your archive.
Auth: user access token or platform agent key
Response 201
{
story: {
views?: number
storyId: string
authorId: string
media: {
mediaId: string
url: string
mime: string
kind: "image" | "video"
width: null | number
height: null | number
alt: null | string
durationSecs: null | number
posterUrl: null | string
}
caption: null | string
closeFriends: boolean
createdAt: number
activeUntil: number
seen: boolean
liked: boolean
}
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
GET /v1/messaging/social/stories/tray
Who has stories up for you: yourself first, then people whose stories you haven't seen, newest first, with how many and whether you've seen them all.
Auth: user access token or platform agent key
Response 200
{
tray: {
userId: string
name: string
avatarUrl: null | string
count: number
latestAt: number
allSeen: boolean
closeFriends: boolean
preview: {
mediaId: string
url: string
mime: string
kind: "image" | "video"
width: null | number
height: null | number
alt: null | string
durationSecs: null | number
posterUrl: null | string
}
}[]
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
GET /v1/messaging/social/stories/archive
Every story you've shared, newest first (only you see this); cursor for more.
Auth: user access token or platform agent key
Response 200
{
stories: {
views?: number
storyId: string
authorId: string
media: {
mediaId: string
url: string
mime: string
kind: "image" | "video"
width: null | number
height: null | number
alt: null | string
durationSecs: null | number
posterUrl: null | string
}
caption: null | string
closeFriends: boolean
createdAt: number
activeUntil: number
seen: boolean
liked: boolean
}[]
cursor: null | string
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
POST /v1/messaging/social/stories/:storyId/views
Marks a story seen; its author's view count goes up once per person.
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:storyId | A story id (sty_…). |
Response 200
{
seen: boolean
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
PUT /v1/messaging/social/stories/:storyId/likes
Likes a story; its author is told.
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:storyId | A story id (sty_…). |
Response 200
{
liked: boolean
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
DELETE /v1/messaging/social/stories/:storyId/likes
Takes your like back.
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:storyId | A story id (sty_…). |
Response 200
{
liked: boolean
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
GET /v1/messaging/social/stories/:storyId/viewers
Who saw your story and who liked it, newest first. Only its author.
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:storyId | A story id (sty_…). |
Response 200
{
viewers: {
userId: string
name: string
avatarUrl: null | string
liked: boolean
at: number
}[]
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
DELETE /v1/messaging/social/stories/:storyId
Deletes your story; it also leaves your highlights.
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:storyId | A story id (sty_…). |
Response 204 with no body.
Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
GET /v1/messaging/social/people/:userId/stories
Someone's stories up now that you may see, oldest first, with whether you've seen and liked each (and the view counts of your own).
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:userId | A member's user id (usr_…). |
Response 200
{
stories: {
views?: number
storyId: string
authorId: string
media: {
mediaId: string
url: string
mime: string
kind: "image" | "video"
width: null | number
height: null | number
alt: null | string
durationSecs: null | number
posterUrl: null | string
}
caption: null | string
closeFriends: boolean
createdAt: number
activeUntil: number
seen: boolean
liked: boolean
}[]
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
GET /v1/messaging/social/people/:userId/highlights
Someone's highlights (named sets of their stories), with each one's cover and count; empty when their content is for followers only.
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:userId | A member's user id (usr_…). |
Response 200
{
highlights: {
highlightId: string
name: string
count: number
cover: null | {
mediaId: string
url: string
mime: string
kind: "image" | "video"
width: null | number
height: null | number
alt: null | string
durationSecs: null | number
posterUrl: null | string
}
}[]
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
GET /v1/messaging/social/people/:userId/highlights/:highlightId
A highlight's stories in order (close-friends stories only for their close friends).
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:userId | A member's user id (usr_…). |
:highlightId | A highlight id (shl_…). |
Response 200
{
name: string
stories: {
views?: number
storyId: string
authorId: string
media: {
mediaId: string
url: string
mime: string
kind: "image" | "video"
width: null | number
height: null | number
alt: null | string
durationSecs: null | number
posterUrl: null | string
}
caption: null | string
closeFriends: boolean
createdAt: number
activeUntil: number
seen: boolean
liked: boolean
}[]
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
POST /v1/messaging/social/highlights
Makes a highlight from your stories (name, up to 40 characters; storyIds, up to 100; optional coverStoryId). Up to 50 a profile.
Auth: user access token or platform agent key
Response 201
{
highlight: {
highlightId: string
name: string
count: number
cover: null | {
mediaId: string
url: string
mime: string
kind: "image" | "video"
width: null | number
height: null | number
alt: null | string
durationSecs: null | number
posterUrl: null | string
}
}
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
PATCH /v1/messaging/social/highlights/:highlightId
Renames a highlight or changes its stories or cover.
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:highlightId | A highlight id (shl_…). |
Response 200
{
highlight: {
highlightId: string
name: string
count: number
cover: null | {
mediaId: string
url: string
mime: string
kind: "image" | "video"
width: null | number
height: null | number
alt: null | string
durationSecs: null | number
posterUrl: null | string
}
}
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
DELETE /v1/messaging/social/highlights/:highlightId
Deletes a highlight (its stories stay in your archive).
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:highlightId | A highlight id (shl_…). |
Response 204 with no body.
Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
GET /v1/messaging/social/groups/:serverId
A server's posts feed (Facebook's groups): feed (off, members or public), posting (everyone who can send messages, or moderators with Manage Messages), and whether you're a member, can post and can change it. Members, or anyone on Feed when the feed is public.
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:serverId | Mirage server id (gld_…). |
Response 200
{
group: {
serverId: string
name: string
icon: null | string
feed: "off" | "public" | "members"
posting: "everyone" | "moderators"
member: boolean
canPost: boolean
canManage: boolean
}
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
PATCH /v1/messaging/social/groups/:serverId
Turns a server's feed on (feed: members or public) or off, and chooses who posts (posting). Manage Server; in the server's audit log.
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:serverId | Mirage server id (gld_…). |
Response 200
{
group: {
serverId: string
name: string
icon: null | string
feed: "off" | "public" | "members"
posting: "everyone" | "moderators"
member: boolean
canPost: boolean
canManage: boolean
}
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
GET /v1/messaging/social/groups/:serverId/posts
A server's posts, newest first. Post to it with serverId on POST /social/posts; the server's AutoMod applies and its moderators (Manage Messages) can delete them. Public feeds' posts also reach their authors' followers.
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:serverId | Mirage server id (gld_…). |
Response 200
{
posts: {
postId: string
kind: "post" | "reply" | "quote" | "repost"
author: {
userId: string
name: string
avatarUrl: null | string
kind: "page" | "person"
visibility: "private" | "public" | "followers"
}
content: string
media: {
mediaId: string
url: string
mime: string
kind: "image" | "video"
width: null | number
height: null | number
alt: null | string
durationSecs: null | number
posterUrl: null | string
}[]
poll: null | {
question: string
answers: {
answerId: string
text: string
emoji: null | string
count: number
}[]
multiple: boolean
expiresAt: number
closed: boolean
total: number
mine: string[]
}
mentions: {
userId: string
name: string
}[]
hashtags: string[]
audience: "followers" | "everyone" | "close_friends"
replyPolicy: "following" | "mentioned" | "everyone"
replyTo: null | {
postId: string
author: null | {
userId: string
name: string
}
}
rootId: null | string
quote: null | object | {
postId: string
unavailable: true
}
repostOf: null | object | {
postId: string
unavailable: true
}
serverId: null | string
group: null | {
serverId: string
name: string
icon: null | string
}
event: null | {
serverId: string
eventId: string
serverName: null | string
name: string
description: null | string
startAt: number
endAt: null | number
place: null | string
inVoice: boolean
status: "canceled" | "live" | "upcoming" | "over"
interestedCount: number
goingCount: number
coverUrl: null | string
mine: null | "interested" | "going"
member: boolean
}
counts: {
likes: number
replies: number
reposts: number
quotes: number
bookmarks: number
views: number
}
viewer: {
liked: boolean
reposted: boolean
bookmarked: boolean
canReply: boolean
canQuote: boolean
canRepost: boolean
canEdit: boolean
canDelete: boolean
}
pinned: boolean
editedAt: null | number
edits: number
createdAt: number
why?: string[]
}[]
cursor: null | string
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
GET /v1/messaging/social/groups/:serverId/events
A server's upcoming and live events you can see, as cards to share in a post (event on POST /social/posts).
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:serverId | Mirage server id (gld_…). |
Response 200
{
events: {
serverId: string
eventId: string
serverName: null | string
name: string
description: null | string
startAt: number
endAt: null | number
place: null | string
inVoice: boolean
status: "canceled" | "live" | "upcoming" | "over"
interestedCount: number
goingCount: number
coverUrl: null | string
mine: null | "interested" | "going"
member: boolean
}[]
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
PUT /v1/messaging/social/events/:serverId/:eventId/rsvp
Says you're going to a server's event, interested in it, or neither (status: going, interested or null); its counts follow and people in the server see them change.
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:serverId | Mirage server id (gld_…). |
:eventId | Event id: a calendar event (evt_…; a recurring event's occurrences share it), or a Mirage server's event (mev_…). |
Response 200
{
event: {
serverId: string
eventId: string
serverName: null | string
name: string
description: null | string
startAt: number
endAt: null | number
place: null | string
inVoice: boolean
status: "canceled" | "live" | "upcoming" | "over"
interestedCount: number
goingCount: number
coverUrl: null | string
mine: null | "interested" | "going"
member: boolean
}
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
PUT /v1/messaging/social/events/:serverId/:eventId/cover
Sets an event's cover photo (media, uploaded as for posts), or removes it (null). Manage Events.
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:serverId | Mirage server id (gld_…). |
:eventId | Event id: a calendar event (evt_…; a recurring event's occurrences share it), or a Mirage server's event (mev_…). |
Response 200
{
event: {
serverId: string
eventId: string
serverName: null | string
name: string
description: null | string
startAt: number
endAt: null | number
place: null | string
inVoice: boolean
status: "canceled" | "live" | "upcoming" | "over"
interestedCount: number
goingCount: number
coverUrl: null | string
mine: null | "interested" | "going"
member: boolean
}
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
GET /v1/messaging/social/pages/mine
The pages you run (as their owner or an admin), with their follower counts.
Auth: user access token or platform agent key
Response 200
{
pages: {
pageId: string
name: string
category: null | string
avatarUrl: null | string
role: "owner" | "admin"
followers: number
}[]
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
POST /v1/messaging/social/pages
Makes a page for a business, place or creator (name, category, about, website, accent, a picture as avatar); you're its owner. People follow it like a person; post as it with asPage. Up to 10 a person.
Auth: user access token or platform agent key
Response 201
{
page: {
userId: string
kind: "page"
name: string
avatarUrl: null | string
banner: null | string
accent: null | string
about: null | string
category: null | string
website: null | string
visibility: "public"
likesPublic: boolean
pinnedPostId: null | string
counts: {
followers: number
following: number
posts: number
}
joinedAt: number
self: boolean
role: null | "owner" | "admin"
following: null | "active" | "requested"
notify: boolean
followsYou: null
closeFriend: boolean
muted: boolean
canSeePosts: boolean
}
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
PATCH /v1/messaging/social/pages/:pageId
Changes a page's details (null clears one). Its owner or admins.
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:pageId | Page id: a Notes page (doc_…), or a Feed page (pgx_…) under /v1/messaging/social; under marketing a landing page (mkp_…). |
Response 200
{
page: {
userId: string
kind: "page"
name: string
avatarUrl: null | string
banner: null | string
accent: null | string
about: null | string
category: null | string
website: null | string
visibility: "public"
likesPublic: boolean
pinnedPostId: null | string
counts: {
followers: number
following: number
posts: number
}
joinedAt: number
self: boolean
role: null | "owner" | "admin"
following: null | "active" | "requested"
notify: boolean
followsYou: null
closeFriend: boolean
muted: boolean
canSeePosts: boolean
}
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
DELETE /v1/messaging/social/pages/:pageId
Deactivates a page: its profile and posts stop showing and it can't be followed. Its owner.
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:pageId | Page id: a Notes page (doc_…), or a Feed page (pgx_…) under /v1/messaging/social; under marketing a landing page (mkp_…). |
Response 204 with no body.
Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
GET /v1/messaging/social/pages/:pageId/admins
Who runs a page: its owner and admins. For them.
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:pageId | Page id: a Notes page (doc_…), or a Feed page (pgx_…) under /v1/messaging/social; under marketing a landing page (mkp_…). |
Response 200
{
admins: {
userId: string
name: string
avatarUrl: null | string
role: "owner" | "admin"
}[]
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
PUT /v1/messaging/social/pages/:pageId/admins/:userId
Makes someone on Feed an admin of your page (up to 20). Its owner.
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:pageId | Page id: a Notes page (doc_…), or a Feed page (pgx_…) under /v1/messaging/social; under marketing a landing page (mkp_…). |
:userId | A member's user id (usr_…). |
Response 204 with no body.
Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
DELETE /v1/messaging/social/pages/:pageId/admins/:userId
Removes an admin. Its owner.
Auth: user access token or platform agent key
| Path parameter | Description |
|---|---|
:pageId | Page id: a Notes page (doc_…), or a Feed page (pgx_…) under /v1/messaging/social; under marketing a landing page (mkp_…). |
:userId | A member's user id (usr_…). |
Response 204 with no body.
Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
GET /v1/messaging/social/notifications
Your activity, newest first: follows, requests and approvals, likes and reposts (grouped per post), replies, quotes, mentions, new posts from people whose bell you turned on, and moderation notices; with unread and waiting requests. Open apps also hear social_activity over the socket.
Auth: user access token or platform agent key
Response 200
{
notifications: {
notificationId: string
type: "post" | "removed" | "poll" | "reply" | "follow" | "quote" | "repost" | "like" | "follow_request" | "follow_accept" | "mention" | "story_reply" | "story_like"
actors: {
userId: string
name: string
avatarUrl: null | string
kind: "page" | "person"
}[]
actorCount: number
post: null | {
postId: unknown
authorId: unknown
text: string
media: unknown
}
ref: null | {
postId: unknown
authorId: unknown
text: string
media: unknown
}
text: null | string
read: boolean
createdAt: number
}[]
cursor: null | string
unread: number
requests: number
}Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |
POST /v1/messaging/social/notifications/read
Marks your activity seen.
Auth: user access token or platform agent key
Response 204 with no body.
Errors
| Status | Message |
|---|---|
403 | Feed is only for the person signed in. |