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

StatusMessage
403Feed 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

StatusMessage
403Feed 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

StatusMessage
403Feed 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

StatusMessage
403Feed 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 parameterDescription
:userIdA 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

StatusMessage
403Feed 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 parameterDescription
:userIdA member's user id (usr_…).
Query parameterTypeRequiredDefaultNotes
tabstringNo"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

StatusMessage
403Feed 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 parameterDescription
:userIdA 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

StatusMessage
403Feed 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 parameterDescription
:userIdA 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

StatusMessage
403Feed 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 parameterDescription
:userIdA member's user id (usr_…).

Response 200

{
  state: "active" | "requested"
}

Errors

StatusMessage
403Feed 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 parameterDescription
:userIdA member's user id (usr_…).

Response 200

{
  state: "active" | "requested"
  notify: boolean
}

Errors

StatusMessage
403Feed 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 parameterDescription
:userIdA member's user id (usr_…).

Response 204 with no body.

Errors

StatusMessage
403Feed 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

StatusMessage
403Feed 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 parameterDescription
:userIdA member's user id (usr_…).

Response 204 with no body.

Errors

StatusMessage
403Feed 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 parameterDescription
:userIdA member's user id (usr_…).

Response 204 with no body.

Errors

StatusMessage
403Feed 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 parameterDescription
:userIdA member's user id (usr_…).

Response 204 with no body.

Errors

StatusMessage
403Feed 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

StatusMessage
403Feed 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 parameterDescription
:userIdA member's user id (usr_…).

Response 204 with no body.

Errors

StatusMessage
403Feed 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 parameterDescription
:userIdA member's user id (usr_…).

Response 204 with no body.

Errors

StatusMessage
403Feed 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

StatusMessage
403Feed 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 parameterDescription
:userIdA member's user id (usr_…).

Response 204 with no body.

Errors

StatusMessage
403Feed is only for the person signed in.

DELETE /v1/messaging/social/mutes/:userId

Unmutes someone.

Auth: user access token or platform agent key

Path parameterDescription
:userIdA member's user id (usr_…).

Response 204 with no body.

Errors

StatusMessage
403Feed 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

StatusMessage
403Feed 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

StatusMessage
403Feed 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 parameterDescription
:postIdA 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

StatusMessage
403Feed 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 parameterDescription
:postIdA 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

StatusMessage
403Feed 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 parameterDescription
:postIdA Feed post id (pst_…).

Response 204 with no body.

Errors

StatusMessage
403Feed 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 parameterDescription
:postIdA 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

StatusMessage
403Feed 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 parameterDescription
:postIdA Feed post id (pst_…).

Response 200

{
  versions: {
    content: string
    at: number
  }[]
}

Errors

StatusMessage
403Feed 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 parameterDescription
:postIdA 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

StatusMessage
403Feed 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 parameterDescription
:postIdA Feed post id (pst_…).

Response 200

{
  people: {
    userId: string
    name: string
    avatarUrl: null | string
    following: null | "active" | "requested"
  }[]
}

Errors

StatusMessage
403Feed 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 parameterDescription
:postIdA 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

StatusMessage
403Feed 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 parameterDescription
:postIdA 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

StatusMessage
403Feed 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 parameterDescription
:postIdA Feed post id (pst_…).

Response 200

{
  people: {
    userId: string
    name: string
    avatarUrl: null | string
    following: null | "active" | "requested"
  }[]
}

Errors

StatusMessage
403Feed 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 parameterDescription
:postIdA 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

StatusMessage
403Feed 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 parameterDescription
:postIdA 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

StatusMessage
403Feed 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 parameterDescription
:postIdA 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

StatusMessage
403Feed 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 parameterDescription
:postIdA 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

StatusMessage
403Feed 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 parameterDescription
:postIdA Feed post id (pst_…).
:answerIdA 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

StatusMessage
403Feed 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 parameterDescription
:postIdA Feed post id (pst_…).
:answerIdA 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

StatusMessage
403Feed 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 parameterDescription
:postIdA Feed post id (pst_…).

Response 204 with no body.

Errors

StatusMessage
403Feed 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

StatusMessage
403Feed 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

StatusMessage
403Feed 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

StatusMessage
403Feed 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

StatusMessage
403Feed 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 parameterDescription
:tagA 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

StatusMessage
403Feed 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

StatusMessage
403Feed is only for the person signed in.

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 parameterTypeRequiredDefaultNotes
qstringNo""
typestringNo
cursorstringNo

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

StatusMessage
403Feed 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 parameterTypeRequiredDefaultNotes
qstringNo""

Response 200

{
  people: {
    userId: string
    name: string
    avatarUrl: null | string
  }[]
}

Errors

StatusMessage
403Feed 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

StatusMessage
403Feed 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

StatusMessage
403Feed 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

StatusMessage
403Feed 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 parameterDescription
:storyIdA story id (sty_…).

Response 200

{
  seen: boolean
}

Errors

StatusMessage
403Feed 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 parameterDescription
:storyIdA story id (sty_…).

Response 200

{
  liked: boolean
}

Errors

StatusMessage
403Feed 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 parameterDescription
:storyIdA story id (sty_…).

Response 200

{
  liked: boolean
}

Errors

StatusMessage
403Feed 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 parameterDescription
:storyIdA story id (sty_…).

Response 200

{
  viewers: {
    userId: string
    name: string
    avatarUrl: null | string
    liked: boolean
    at: number
  }[]
}

Errors

StatusMessage
403Feed 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 parameterDescription
:storyIdA story id (sty_…).

Response 204 with no body.

Errors

StatusMessage
403Feed 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 parameterDescription
:userIdA 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

StatusMessage
403Feed 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 parameterDescription
:userIdA 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

StatusMessage
403Feed 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 parameterDescription
:userIdA member's user id (usr_…).
:highlightIdA 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

StatusMessage
403Feed 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

StatusMessage
403Feed 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 parameterDescription
:highlightIdA 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

StatusMessage
403Feed 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 parameterDescription
:highlightIdA highlight id (shl_…).

Response 204 with no body.

Errors

StatusMessage
403Feed 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 parameterDescription
:serverIdMirage 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

StatusMessage
403Feed 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 parameterDescription
:serverIdMirage 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

StatusMessage
403Feed 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 parameterDescription
:serverIdMirage 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

StatusMessage
403Feed 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 parameterDescription
:serverIdMirage 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

StatusMessage
403Feed 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 parameterDescription
:serverIdMirage server id (gld_…).
:eventIdEvent 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

StatusMessage
403Feed 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 parameterDescription
:serverIdMirage server id (gld_…).
:eventIdEvent 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

StatusMessage
403Feed 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

StatusMessage
403Feed 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

StatusMessage
403Feed 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 parameterDescription
:pageIdPage 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

StatusMessage
403Feed 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 parameterDescription
:pageIdPage 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

StatusMessage
403Feed 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 parameterDescription
:pageIdPage 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

StatusMessage
403Feed 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 parameterDescription
:pageIdPage id: a Notes page (doc_…), or a Feed page (pgx_…) under /v1/messaging/social; under marketing a landing page (mkp_…).
:userIdA member's user id (usr_…).

Response 204 with no body.

Errors

StatusMessage
403Feed 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 parameterDescription
:pageIdPage id: a Notes page (doc_…), or a Feed page (pgx_…) under /v1/messaging/social; under marketing a landing page (mkp_…).
:userIdA member's user id (usr_…).

Response 204 with no body.

Errors

StatusMessage
403Feed 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

StatusMessage
403Feed 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

StatusMessage
403Feed is only for the person signed in.