API reference

Mirage social

Feed: profiles, follows, posts, timelines, stories, pages, server feeds and notifications, on the same people and servers as chat.
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
A person's token or an API key, as Authorization: Bearer.
Get an API key

Errors

  • 403Feed is only for the person signed in.
curl 'https://api.cactive.com.au/v1/messaging/social/me' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a 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
    }
    storiesToPhotos: boolean
    storiesKeepOriginal: boolean
    pinnedPostId: null | string
    counts: {
      followers: number
      following: number
      posts: number
    }
    unread: number
    requests: number
  }
}
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
A person's token or an API key, as Authorization: Bearer.
Get an API key

Errors

  • 403Feed is only for the person signed in.
curl -X PUT 'https://api.cactive.com.au/v1/messaging/social/me/date-of-birth' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a 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
    }
    storiesToPhotos: boolean
    storiesKeepOriginal: boolean
    pinnedPostId: null | string
    counts: {
      followers: number
      following: number
      posts: number
    }
    unread: number
    requests: number
  }
}
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
A person's token or an API key, as Authorization: Bearer.
Get an API key

Errors

  • 403Feed is only for the person signed in.
curl -X PATCH 'https://api.cactive.com.au/v1/messaging/social/me' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a 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
    }
    storiesToPhotos: boolean
    storiesKeepOriginal: boolean
    pinnedPostId: null | string
    counts: {
      followers: number
      following: number
      posts: number
    }
    unread: number
    requests: number
  }
}
PUT/v1/messaging/social/me/pinned

Pins one of your posts to the top of your profile (postId; empty unpins).

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Errors

  • 403Feed is only for the person signed in.
curl -X PUT 'https://api.cactive.com.au/v1/messaging/social/me/pinned' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  pinnedPostId: null
} | {
  pinnedPostId: string
}
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
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • userId

    A member's user id (usr_…).

Errors

  • 403Feed is only for the person signed in.
curl 'https://api.cactive.com.au/v1/messaging/social/people/{userId}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

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
    friend: boolean
    muted: boolean
    canSeePosts: boolean
    gridFirst: 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
    friend: boolean
    muted: boolean
    canSeePosts: boolean
    gridFirst: boolean
  }
}
GET/v1/messaging/social/people/:userId/posts

A profile's posts, newest first: tab grid (their own photo and video posts; the first page also has the ones they feature, in their order, as featured), 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
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • userId

    A member's user id (usr_…).

Query parameters

  • tabstring

    Default "posts".

Errors

  • 403Feed is only for the person signed in.
curl 'https://api.cactive.com.au/v1/messaging/social/people/{userId}/posts' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  featured?: {
    postId: string
    kind: "post" | "reply" | "quote" | "repost"
    author: {
      userId: string
      name: string
      avatarUrl: null | string
      kind: "person" | "page"
      visibility: "private" | "public" | "followers"
    }
    content: string
    media: {
      mediaId: string
      url: string
      mime: string
      kind: "video" | "image"
      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" | "everyone" | "mentioned"
    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[]
  }[]
  posts: {
    postId: string
    kind: "post" | "reply" | "quote" | "repost"
    author: {
      userId: string
      name: string
      avatarUrl: null | string
      kind: "person" | "page"
      visibility: "private" | "public" | "followers"
    }
    content: string
    media: {
      mediaId: string
      url: string
      mime: string
      kind: "video" | "image"
      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" | "everyone" | "mentioned"
    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
}
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
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • userId

    A member's user id (usr_…).

Errors

  • 403Feed is only for the person signed in.
curl 'https://api.cactive.com.au/v1/messaging/social/people/{userId}/followers' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  people: {
    userId: string
    name: unknown
    avatarUrl: unknown
    about: null | string
    kind: "person" | "page"
    following: null | "active" | "requested"
    visibility: "private" | "public" | "followers"
  }[]
  cursor: null | string
}
GET/v1/messaging/social/people/:userId/following

Who someone follows, with your follow state toward each; hidden (403) when their posts are.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • userId

    A member's user id (usr_…).

Errors

  • 403Feed is only for the person signed in.
curl 'https://api.cactive.com.au/v1/messaging/social/people/{userId}/following' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  people: {
    userId: string
    name: unknown
    avatarUrl: unknown
    about: null | string
    kind: "person" | "page"
    following: null | "active" | "requested"
    visibility: "private" | "public" | "followers"
  }[]
  cursor: null | string
}
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
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • userId

    A member's user id (usr_…).

Errors

  • 403Feed is only for the person signed in.
curl -X PUT 'https://api.cactive.com.au/v1/messaging/social/people/{userId}/follow' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  state: "active" | "requested"
}
PATCH/v1/messaging/social/people/:userId/follow

Turns post notifications for someone you follow on or off (notify).

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • userId

    A member's user id (usr_…).

Errors

  • 403Feed is only for the person signed in.
curl -X PATCH 'https://api.cactive.com.au/v1/messaging/social/people/{userId}/follow' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  state: "active" | "requested"
  notify: boolean
}
DELETE/v1/messaging/social/people/:userId/follow

Unfollows someone, or withdraws a request. Their posts leave your Following timeline at once.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • userId

    A member's user id (usr_…).

Errors

  • 403Feed is only for the person signed in.
curl -X DELETE 'https://api.cactive.com.au/v1/messaging/social/people/{userId}/follow' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 204 with no body

GET/v1/messaging/social/requests

People asking to follow you, newest first.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Errors

  • 403Feed is only for the person signed in.
curl 'https://api.cactive.com.au/v1/messaging/social/requests' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  people: {
    userId: string
    name: unknown
    avatarUrl: unknown
    about: null | string
    kind: "person" | "page"
    following: null | "active" | "requested"
    visibility: "private" | "public" | "followers"
  }[]
}
PUT/v1/messaging/social/requests/:userId

Approves a follow request; they're told.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • userId

    A member's user id (usr_…).

Errors

  • 403Feed is only for the person signed in.
curl -X PUT 'https://api.cactive.com.au/v1/messaging/social/requests/{userId}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 204 with no body

DELETE/v1/messaging/social/requests/:userId

Declines a follow request; they aren't told.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • userId

    A member's user id (usr_…).

Errors

  • 403Feed is only for the person signed in.
curl -X DELETE 'https://api.cactive.com.au/v1/messaging/social/requests/{userId}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 204 with no body

DELETE/v1/messaging/social/followers/:userId

Removes one of your followers; they aren't told.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • userId

    A member's user id (usr_…).

Errors

  • 403Feed is only for the person signed in.
curl -X DELETE 'https://api.cactive.com.au/v1/messaging/social/followers/{userId}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 204 with no body

GET/v1/messaging/social/close-friends

Your close friends: the people who see your close-friends posts and stories (when they follow you).

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Errors

  • 403Feed is only for the person signed in.
curl 'https://api.cactive.com.au/v1/messaging/social/close-friends' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  people: {
    userId: string
    name: unknown
    avatarUrl: unknown
    about: null | string
    kind: "person" | "page"
    following: null | "active" | "requested"
    visibility: "private" | "public" | "followers"
  }[]
}
PUT/v1/messaging/social/close-friends/:userId

Adds someone to your close friends.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • userId

    A member's user id (usr_…).

Errors

  • 403Feed is only for the person signed in.
curl -X PUT 'https://api.cactive.com.au/v1/messaging/social/close-friends/{userId}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 204 with no body

DELETE/v1/messaging/social/close-friends/:userId

Takes someone off your close friends.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • userId

    A member's user id (usr_…).

Errors

  • 403Feed is only for the person signed in.
curl -X DELETE 'https://api.cactive.com.au/v1/messaging/social/close-friends/{userId}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 204 with no body

GET/v1/messaging/social/mutes

People you muted.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Errors

  • 403Feed is only for the person signed in.
curl 'https://api.cactive.com.au/v1/messaging/social/mutes' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  people: {
    userId: string
    name: unknown
    avatarUrl: unknown
    about: null | string
    kind: "person" | "page"
    following: null | "active" | "requested"
    visibility: "private" | "public" | "followers"
  }[]
}
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
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • userId

    A member's user id (usr_…).

Errors

  • 403Feed is only for the person signed in.
curl -X PUT 'https://api.cactive.com.au/v1/messaging/social/mutes/{userId}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 204 with no body

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

Unmutes someone.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • userId

    A member's user id (usr_…).

Errors

  • 403Feed is only for the person signed in.
curl -X DELETE 'https://api.cactive.com.au/v1/messaging/social/mutes/{userId}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 204 with no body

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
A person's token or an API key, as Authorization: Bearer.
Get an API key

Errors

  • 403Feed is only for the person signed in.
curl -X POST 'https://api.cactive.com.au/v1/messaging/social/uploads' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  mediaId: string
  url: string
  headers: {
    "content-type": string
  }
}
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
A person's token or an API key, as Authorization: Bearer.
Get an API key

Errors

  • 403Feed is only for the person signed in.
curl -X POST 'https://api.cactive.com.au/v1/messaging/social/posts' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 201

{
  post: {
    postId: string
    kind: "post" | "reply" | "quote" | "repost"
    author: {
      userId: string
      name: string
      avatarUrl: null | string
      kind: "person" | "page"
      visibility: "private" | "public" | "followers"
    }
    content: string
    media: {
      mediaId: string
      url: string
      mime: string
      kind: "video" | "image"
      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" | "everyone" | "mentioned"
    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[]
  }
}
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
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • postId

    A Feed post id (pst_…).

Errors

  • 403Feed is only for the person signed in.
curl 'https://api.cactive.com.au/v1/messaging/social/posts/{postId}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  post: {
    postId: string
    kind: "post" | "reply" | "quote" | "repost"
    author: {
      userId: string
      name: string
      avatarUrl: null | string
      kind: "person" | "page"
      visibility: "private" | "public" | "followers"
    }
    content: string
    media: {
      mediaId: string
      url: string
      mime: string
      kind: "video" | "image"
      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" | "everyone" | "mentioned"
    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[]
  }
}
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
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • postId

    A Feed post id (pst_…).

Errors

  • 403Feed is only for the person signed in.
curl -X PATCH 'https://api.cactive.com.au/v1/messaging/social/posts/{postId}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  post: {
    postId: string
    kind: "post" | "reply" | "quote" | "repost"
    author: {
      userId: string
      name: string
      avatarUrl: null | string
      kind: "person" | "page"
      visibility: "private" | "public" | "followers"
    }
    content: string
    media: {
      mediaId: string
      url: string
      mime: string
      kind: "video" | "image"
      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" | "everyone" | "mentioned"
    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[]
  }
}
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
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • postId

    A Feed post id (pst_…).

Errors

  • 403Feed is only for the person signed in.
curl -X DELETE 'https://api.cactive.com.au/v1/messaging/social/posts/{postId}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 204 with no body

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
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • postId

    A Feed post id (pst_…).

Errors

  • 403Feed is only for the person signed in.
curl 'https://api.cactive.com.au/v1/messaging/social/posts/{postId}/thread' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  ancestors: {
    postId: string
    kind: "post" | "reply" | "quote" | "repost"
    author: {
      userId: string
      name: string
      avatarUrl: null | string
      kind: "person" | "page"
      visibility: "private" | "public" | "followers"
    }
    content: string
    media: {
      mediaId: string
      url: string
      mime: string
      kind: "video" | "image"
      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" | "everyone" | "mentioned"
    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: "person" | "page"
      visibility: "private" | "public" | "followers"
    }
    content: string
    media: {
      mediaId: string
      url: string
      mime: string
      kind: "video" | "image"
      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" | "everyone" | "mentioned"
    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: "person" | "page"
      visibility: "private" | "public" | "followers"
    }
    content: string
    media: {
      mediaId: string
      url: string
      mime: string
      kind: "video" | "image"
      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" | "everyone" | "mentioned"
    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
}
GET/v1/messaging/social/posts/:postId/edits

A post's earlier versions, oldest first, then as it is now.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • postId

    A Feed post id (pst_…).

Errors

  • 403Feed is only for the person signed in.
curl 'https://api.cactive.com.au/v1/messaging/social/posts/{postId}/edits' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  versions: {
    content: string
    at: number
  }[]
}
GET/v1/messaging/social/posts/:postId/quotes

Posts quoting a post, newest first.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • postId

    A Feed post id (pst_…).

Errors

  • 403Feed is only for the person signed in.
curl 'https://api.cactive.com.au/v1/messaging/social/posts/{postId}/quotes' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  posts: {
    postId: string
    kind: "post" | "reply" | "quote" | "repost"
    author: {
      userId: string
      name: string
      avatarUrl: null | string
      kind: "person" | "page"
      visibility: "private" | "public" | "followers"
    }
    content: string
    media: {
      mediaId: string
      url: string
      mime: string
      kind: "video" | "image"
      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" | "everyone" | "mentioned"
    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
}
GET/v1/messaging/social/posts/:postId/likes

Who liked your post (only its author sees this), newest first.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • postId

    A Feed post id (pst_…).

Errors

  • 403Feed is only for the person signed in.
curl 'https://api.cactive.com.au/v1/messaging/social/posts/{postId}/likes' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  people: {
    userId: string
    name: string
    avatarUrl: null | string
    following: null | "active" | "requested"
  }[]
}
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
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • postId

    A Feed post id (pst_…).

Errors

  • 403Feed is only for the person signed in.
curl -X PUT 'https://api.cactive.com.au/v1/messaging/social/posts/{postId}/likes' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  post: {
    postId: string
    kind: "post" | "reply" | "quote" | "repost"
    author: {
      userId: string
      name: string
      avatarUrl: null | string
      kind: "person" | "page"
      visibility: "private" | "public" | "followers"
    }
    content: string
    media: {
      mediaId: string
      url: string
      mime: string
      kind: "video" | "image"
      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" | "everyone" | "mentioned"
    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[]
  }
}
DELETE/v1/messaging/social/posts/:postId/likes

Takes your like back.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • postId

    A Feed post id (pst_…).

Errors

  • 403Feed is only for the person signed in.
curl -X DELETE 'https://api.cactive.com.au/v1/messaging/social/posts/{postId}/likes' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  post: {
    postId: string
    kind: "post" | "reply" | "quote" | "repost"
    author: {
      userId: string
      name: string
      avatarUrl: null | string
      kind: "person" | "page"
      visibility: "private" | "public" | "followers"
    }
    content: string
    media: {
      mediaId: string
      url: string
      mime: string
      kind: "video" | "image"
      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" | "everyone" | "mentioned"
    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[]
  }
}
GET/v1/messaging/social/posts/:postId/reposts

Who reposted a post, newest first.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • postId

    A Feed post id (pst_…).

Errors

  • 403Feed is only for the person signed in.
curl 'https://api.cactive.com.au/v1/messaging/social/posts/{postId}/reposts' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  people: {
    userId: string
    name: string
    avatarUrl: null | string
    following: null | "active" | "requested"
  }[]
}
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
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • postId

    A Feed post id (pst_…).

Errors

  • 403Feed is only for the person signed in.
curl -X PUT 'https://api.cactive.com.au/v1/messaging/social/posts/{postId}/reposts' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  post: {
    postId: string
    kind: "post" | "reply" | "quote" | "repost"
    author: {
      userId: string
      name: string
      avatarUrl: null | string
      kind: "person" | "page"
      visibility: "private" | "public" | "followers"
    }
    content: string
    media: {
      mediaId: string
      url: string
      mime: string
      kind: "video" | "image"
      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" | "everyone" | "mentioned"
    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[]
  }
}
DELETE/v1/messaging/social/posts/:postId/reposts

Undoes your repost.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • postId

    A Feed post id (pst_…).

Errors

  • 403Feed is only for the person signed in.
curl -X DELETE 'https://api.cactive.com.au/v1/messaging/social/posts/{postId}/reposts' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  post: {
    postId: string
    kind: "post" | "reply" | "quote" | "repost"
    author: {
      userId: string
      name: string
      avatarUrl: null | string
      kind: "person" | "page"
      visibility: "private" | "public" | "followers"
    }
    content: string
    media: {
      mediaId: string
      url: string
      mime: string
      kind: "video" | "image"
      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" | "everyone" | "mentioned"
    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[]
  }
}
PUT/v1/messaging/social/posts/:postId/bookmarks

Bookmarks a post (private: only the count shows).

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • postId

    A Feed post id (pst_…).

Errors

  • 403Feed is only for the person signed in.
curl -X PUT 'https://api.cactive.com.au/v1/messaging/social/posts/{postId}/bookmarks' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  post: {
    postId: string
    kind: "post" | "reply" | "quote" | "repost"
    author: {
      userId: string
      name: string
      avatarUrl: null | string
      kind: "person" | "page"
      visibility: "private" | "public" | "followers"
    }
    content: string
    media: {
      mediaId: string
      url: string
      mime: string
      kind: "video" | "image"
      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" | "everyone" | "mentioned"
    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[]
  }
}
DELETE/v1/messaging/social/posts/:postId/bookmarks

Removes a bookmark.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • postId

    A Feed post id (pst_…).

Errors

  • 403Feed is only for the person signed in.
curl -X DELETE 'https://api.cactive.com.au/v1/messaging/social/posts/{postId}/bookmarks' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  post: {
    postId: string
    kind: "post" | "reply" | "quote" | "repost"
    author: {
      userId: string
      name: string
      avatarUrl: null | string
      kind: "person" | "page"
      visibility: "private" | "public" | "followers"
    }
    content: string
    media: {
      mediaId: string
      url: string
      mime: string
      kind: "video" | "image"
      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" | "everyone" | "mentioned"
    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[]
  }
}
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
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • postId

    A Feed post id (pst_…).

  • answerId

    A poll answer's id (1–10).

Errors

  • 403Feed is only for the person signed in.
curl -X PUT 'https://api.cactive.com.au/v1/messaging/social/posts/{postId}/poll/answers/{answerId}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

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[]
  }
}
DELETE/v1/messaging/social/posts/:postId/poll/answers/:answerId

Takes your vote back.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • postId

    A Feed post id (pst_…).

  • answerId

    A poll answer's id (1–10).

Errors

  • 403Feed is only for the person signed in.
curl -X DELETE 'https://api.cactive.com.au/v1/messaging/social/posts/{postId}/poll/answers/{answerId}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

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[]
  }
}
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
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • postId

    A Feed post id (pst_…).

Errors

  • 403Feed is only for the person signed in.
curl -X POST 'https://api.cactive.com.au/v1/messaging/social/posts/{postId}/not-interested' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 204 with no body

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
A person's token or an API key, as Authorization: Bearer.
Get an API key

Errors

  • 403Feed is only for the person signed in.
curl -X POST 'https://api.cactive.com.au/v1/messaging/social/views' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  counted: number
}
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
A person's token or an API key, as Authorization: Bearer.
Get an API key

Errors

  • 403Feed is only for the person signed in.
curl 'https://api.cactive.com.au/v1/messaging/social/feed/following' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  posts: {
    postId: string
    kind: "post" | "reply" | "quote" | "repost"
    author: {
      userId: string
      name: string
      avatarUrl: null | string
      kind: "person" | "page"
      visibility: "private" | "public" | "followers"
    }
    content: string
    media: {
      mediaId: string
      url: string
      mime: string
      kind: "video" | "image"
      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" | "everyone" | "mentioned"
    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
}
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
A person's token or an API key, as Authorization: Bearer.
Get an API key

Errors

  • 403Feed is only for the person signed in.
curl 'https://api.cactive.com.au/v1/messaging/social/feed/for-you' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  posts: {
    postId: string
    kind: "post" | "reply" | "quote" | "repost"
    author: {
      userId: string
      name: string
      avatarUrl: null | string
      kind: "person" | "page"
      visibility: "private" | "public" | "followers"
    }
    content: string
    media: {
      mediaId: string
      url: string
      mime: string
      kind: "video" | "image"
      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" | "everyone" | "mentioned"
    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
}
GET/v1/messaging/social/bookmarks

Your bookmarks, newest first.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Errors

  • 403Feed is only for the person signed in.
curl 'https://api.cactive.com.au/v1/messaging/social/bookmarks' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  posts: {
    postId: string
    kind: "post" | "reply" | "quote" | "repost"
    author: {
      userId: string
      name: string
      avatarUrl: null | string
      kind: "person" | "page"
      visibility: "private" | "public" | "followers"
    }
    content: string
    media: {
      mediaId: string
      url: string
      mime: string
      kind: "video" | "image"
      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" | "everyone" | "mentioned"
    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
}
GET/v1/messaging/social/tags/:tag

Posts with a hashtag, newest first (posts everyone can see).

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • tag

    A hashtag without its # (case and accents don't matter).

Errors

  • 403Feed is only for the person signed in.
curl 'https://api.cactive.com.au/v1/messaging/social/tags/{tag}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  tag: string
  posts: {
    postId: string
    kind: "post" | "reply" | "quote" | "repost"
    author: {
      userId: string
      name: string
      avatarUrl: null | string
      kind: "person" | "page"
      visibility: "private" | "public" | "followers"
    }
    content: string
    media: {
      mediaId: string
      url: string
      mime: string
      kind: "video" | "image"
      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" | "everyone" | "mentioned"
    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
}
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
A person's token or an API key, as Authorization: Bearer.
Get an API key

Errors

  • 403Feed is only for the person signed in.
curl 'https://api.cactive.com.au/v1/messaging/social/explore' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a 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: "person" | "page"
      visibility: "private" | "public" | "followers"
    }
    content: string
    media: {
      mediaId: string
      url: string
      mime: string
      kind: "video" | "image"
      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" | "everyone" | "mentioned"
    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: "person" | "page"
    visibility: "private" | "public" | "followers"
    reason: string
  }[]
}
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
A person's token or an API key, as Authorization: Bearer.
Get an API key

Query parameters

  • qstring

    Default "".

Errors

  • 403Feed is only for the person signed in.
curl 'https://api.cactive.com.au/v1/messaging/social/mention-candidates' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  people: {
    userId: string
    name: string
    avatarUrl: null | string
  }[]
}
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
A person's token or an API key, as Authorization: Bearer.
Get an API key

Errors

  • 403Feed is only for the person signed in.
curl -X POST 'https://api.cactive.com.au/v1/messaging/social/stories' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 201

{
  story: {
    views?: number
    caption: null | string
    closeFriends: boolean
    createdAt: number
    activeUntil: number
    seen: boolean
    liked: boolean
    rendered?: {
      mediaId: string
      url: string
      mime: string
      kind: "video" | "image"
      width: null | number
      height: null | number
      alt: null | string
      durationSecs: null | number
      posterUrl: null | string
    }
    storyId: string
    authorId: string
    media: {
      mediaId: string
      url: string
      mime: string
      kind: "video" | "image"
      width: null | number
      height: null | number
      alt: null | string
      durationSecs: null | number
      posterUrl: null | string
    }
    layers: {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "text"
      text: string
      font: "light" | "serif" | "classic" | "strong"
      colour: "orange" | "yellow" | "green" | "blue" | "purple" | "red" | "teal" | "white" | "black"
      background: "none" | "soft" | "solid"
      align: "left" | "center" | "right"
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "mention"
      userId: string
      name: string
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "link"
      url: string
      label?: string
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "emoji"
      emoji: string
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "custom"
      emojiId: string
      name: string
      animated: boolean
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "sticker"
      stickerId: string
      name: string
      format: "gif" | "png" | "webp" | "apng"
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "gif"
      provider: "klipy" | "giphy"
      src?: string
      url?: string
      width: number
      height: number
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "hashtag"
      tag: string
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "location"
      name: string
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "poll"
      question: string
      options: string[]
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "question"
      prompt: string
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "slider"
      prompt: string
      emoji: string
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "countdown"
      title: string
      endsAt: number
    } | {
      id: string
      kind: "drawing"
      z: number
      strokes: {
        tool: "marker" | "pen" | "highlighter"
        colour: "orange" | "yellow" | "green" | "blue" | "purple" | "red" | "teal" | "white" | "black"
        width: number
        points: object[]
      }[]
    }[]
    stickers: {
      [key: string]: {
        mine: null | string | number
        tally: null | {
          n: number
          sum: number
          counts: number[]
        }
      }
    }
  }
}
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
A person's token or an API key, as Authorization: Bearer.
Get an API key

Errors

  • 403Feed is only for the person signed in.
curl 'https://api.cactive.com.au/v1/messaging/social/stories/tray' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a 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: "video" | "image"
      width: null | number
      height: null | number
      alt: null | string
      durationSecs: null | number
      posterUrl: null | string
    }
  }[]
}
GET/v1/messaging/social/stories/archive

Every story you've shared, newest first (only you see this); cursor for more.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Errors

  • 403Feed is only for the person signed in.
curl 'https://api.cactive.com.au/v1/messaging/social/stories/archive' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  stories: {
    views?: number
    caption: null | string
    closeFriends: boolean
    createdAt: number
    activeUntil: number
    seen: boolean
    liked: boolean
    rendered?: {
      mediaId: string
      url: string
      mime: string
      kind: "video" | "image"
      width: null | number
      height: null | number
      alt: null | string
      durationSecs: null | number
      posterUrl: null | string
    }
    storyId: string
    authorId: string
    media: {
      mediaId: string
      url: string
      mime: string
      kind: "video" | "image"
      width: null | number
      height: null | number
      alt: null | string
      durationSecs: null | number
      posterUrl: null | string
    }
    layers: {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "text"
      text: string
      font: "light" | "serif" | "classic" | "strong"
      colour: "orange" | "yellow" | "green" | "blue" | "purple" | "red" | "teal" | "white" | "black"
      background: "none" | "soft" | "solid"
      align: "left" | "center" | "right"
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "mention"
      userId: string
      name: string
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "link"
      url: string
      label?: string
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "emoji"
      emoji: string
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "custom"
      emojiId: string
      name: string
      animated: boolean
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "sticker"
      stickerId: string
      name: string
      format: "gif" | "png" | "webp" | "apng"
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "gif"
      provider: "klipy" | "giphy"
      src?: string
      url?: string
      width: number
      height: number
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "hashtag"
      tag: string
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "location"
      name: string
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "poll"
      question: string
      options: string[]
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "question"
      prompt: string
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "slider"
      prompt: string
      emoji: string
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "countdown"
      title: string
      endsAt: number
    } | {
      id: string
      kind: "drawing"
      z: number
      strokes: {
        tool: "marker" | "pen" | "highlighter"
        colour: "orange" | "yellow" | "green" | "blue" | "purple" | "red" | "teal" | "white" | "black"
        width: number
        points: object
      }[]
    }[]
    stickers: {
      [key: string]: {
        mine: null | string | number
        tally: null | {
          n: number
          sum: number
          counts: number[]
        }
      }
    }
  }[]
  cursor: null | string
}
GET/v1/messaging/social/stories/:storyId

Whether a story is still up for you (active), whose it is and a still while it is: what a DM answering it shows. Others get 404 once it ends; its author always.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • storyId

    A story id (sty_…).

Errors

  • 403Feed is only for the person signed in.
curl 'https://api.cactive.com.au/v1/messaging/social/stories/{storyId}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  storyId: string
  authorId: string
  active: boolean
  preview: null | string
  author: {
    userId: string
    name: string
    avatarUrl: null | string
  }
}
POST/v1/messaging/social/stories/:storyId/responses

Answers one of a story's interactive stickers (layerId, value): a poll's answer number, a slide from 0 to 1, words for a question, 1 for a countdown's reminder. Votes and slides are final; what the sticker shows you comes back.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • storyId

    A story id (sty_…).

Errors

  • 403Feed is only for the person signed in.
curl -X POST 'https://api.cactive.com.au/v1/messaging/social/stories/{storyId}/responses' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  layerId: string
  state: {
    mine: null | string | number
    tally: null | {
      n: number
      sum: number
      counts: number[]
    }
  }
}
GET/v1/messaging/social/stories/:storyId/responses

Every answer to your story's stickers, newest first, with who answered. Only its author.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • storyId

    A story id (sty_…).

Errors

  • 403Feed is only for the person signed in.
curl 'https://api.cactive.com.au/v1/messaging/social/stories/{storyId}/responses' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  answers: {
    layerId: string
    kind: "poll" | "question" | "slider" | "countdown"
    userId: string
    name: string
    avatarUrl: null | string
    value: string | number
    text: string
    at: number
  }[]
}
POST/v1/messaging/social/stories/:storyId/views

Marks a story seen; its author's view count goes up once per person.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • storyId

    A story id (sty_…).

Errors

  • 403Feed is only for the person signed in.
curl -X POST 'https://api.cactive.com.au/v1/messaging/social/stories/{storyId}/views' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  seen: boolean
}
PUT/v1/messaging/social/stories/:storyId/likes

Likes a story; its author is told.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • storyId

    A story id (sty_…).

Errors

  • 403Feed is only for the person signed in.
curl -X PUT 'https://api.cactive.com.au/v1/messaging/social/stories/{storyId}/likes' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  liked: boolean
}
DELETE/v1/messaging/social/stories/:storyId/likes

Takes your like back.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • storyId

    A story id (sty_…).

Errors

  • 403Feed is only for the person signed in.
curl -X DELETE 'https://api.cactive.com.au/v1/messaging/social/stories/{storyId}/likes' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  liked: boolean
}
GET/v1/messaging/social/stories/:storyId/viewers

Who saw your story and who liked it, newest first. Only its author.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • storyId

    A story id (sty_…).

Errors

  • 403Feed is only for the person signed in.
curl 'https://api.cactive.com.au/v1/messaging/social/stories/{storyId}/viewers' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  viewers: {
    userId: string
    name: string
    avatarUrl: null | string
    liked: boolean
    at: number
  }[]
}
DELETE/v1/messaging/social/stories/:storyId

Deletes your story; it also leaves your highlights.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • storyId

    A story id (sty_…).

Errors

  • 403Feed is only for the person signed in.
curl -X DELETE 'https://api.cactive.com.au/v1/messaging/social/stories/{storyId}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 204 with no body

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
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • userId

    A member's user id (usr_…).

Errors

  • 403Feed is only for the person signed in.
curl 'https://api.cactive.com.au/v1/messaging/social/people/{userId}/stories' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  stories: {
    views?: number
    caption: null | string
    closeFriends: boolean
    createdAt: number
    activeUntil: number
    seen: boolean
    liked: boolean
    rendered?: {
      mediaId: string
      url: string
      mime: string
      kind: "video" | "image"
      width: null | number
      height: null | number
      alt: null | string
      durationSecs: null | number
      posterUrl: null | string
    }
    storyId: string
    authorId: string
    media: {
      mediaId: string
      url: string
      mime: string
      kind: "video" | "image"
      width: null | number
      height: null | number
      alt: null | string
      durationSecs: null | number
      posterUrl: null | string
    }
    layers: {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "text"
      text: string
      font: "light" | "serif" | "classic" | "strong"
      colour: "orange" | "yellow" | "green" | "blue" | "purple" | "red" | "teal" | "white" | "black"
      background: "none" | "soft" | "solid"
      align: "left" | "center" | "right"
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "mention"
      userId: string
      name: string
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "link"
      url: string
      label?: string
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "emoji"
      emoji: string
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "custom"
      emojiId: string
      name: string
      animated: boolean
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "sticker"
      stickerId: string
      name: string
      format: "gif" | "png" | "webp" | "apng"
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "gif"
      provider: "klipy" | "giphy"
      src?: string
      url?: string
      width: number
      height: number
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "hashtag"
      tag: string
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "location"
      name: string
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "poll"
      question: string
      options: string[]
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "question"
      prompt: string
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "slider"
      prompt: string
      emoji: string
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "countdown"
      title: string
      endsAt: number
    } | {
      id: string
      kind: "drawing"
      z: number
      strokes: {
        tool: "marker" | "pen" | "highlighter"
        colour: "orange" | "yellow" | "green" | "blue" | "purple" | "red" | "teal" | "white" | "black"
        width: number
        points: object
      }[]
    }[]
    stickers: {
      [key: string]: {
        mine: null | string | number
        tally: null | {
          n: number
          sum: number
          counts: number[]
        }
      }
    }
  }[]
}
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
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • userId

    A member's user id (usr_…).

Errors

  • 403Feed is only for the person signed in.
curl 'https://api.cactive.com.au/v1/messaging/social/people/{userId}/highlights' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  highlights: {
    highlightId: string
    name: string
    count: number
    cover: null | {
      mediaId: string
      url: string
      mime: string
      kind: "video" | "image"
      width: null | number
      height: null | number
      alt: null | string
      durationSecs: null | number
      posterUrl: null | string
    }
  }[]
}
GET/v1/messaging/social/people/:userId/highlights/:highlightId

A highlight's stories in order (close-friends stories only for their close friends).

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • userId

    A member's user id (usr_…).

  • highlightId

    A highlight id (shl_…).

Errors

  • 403Feed is only for the person signed in.
curl 'https://api.cactive.com.au/v1/messaging/social/people/{userId}/highlights/{highlightId}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  name: string
  stories: {
    views?: number
    caption: null | string
    closeFriends: boolean
    createdAt: number
    activeUntil: number
    seen: boolean
    liked: boolean
    rendered?: {
      mediaId: string
      url: string
      mime: string
      kind: "video" | "image"
      width: null | number
      height: null | number
      alt: null | string
      durationSecs: null | number
      posterUrl: null | string
    }
    storyId: string
    authorId: string
    media: {
      mediaId: string
      url: string
      mime: string
      kind: "video" | "image"
      width: null | number
      height: null | number
      alt: null | string
      durationSecs: null | number
      posterUrl: null | string
    }
    layers: {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "text"
      text: string
      font: "light" | "serif" | "classic" | "strong"
      colour: "orange" | "yellow" | "green" | "blue" | "purple" | "red" | "teal" | "white" | "black"
      background: "none" | "soft" | "solid"
      align: "left" | "center" | "right"
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "mention"
      userId: string
      name: string
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "link"
      url: string
      label?: string
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "emoji"
      emoji: string
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "custom"
      emojiId: string
      name: string
      animated: boolean
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "sticker"
      stickerId: string
      name: string
      format: "gif" | "png" | "webp" | "apng"
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "gif"
      provider: "klipy" | "giphy"
      src?: string
      url?: string
      width: number
      height: number
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "hashtag"
      tag: string
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "location"
      name: string
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "poll"
      question: string
      options: string[]
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "question"
      prompt: string
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "slider"
      prompt: string
      emoji: string
    } | {
      id: string
      x: number
      y: number
      scale: number
      rotation: number
      z: number
      kind: "countdown"
      title: string
      endsAt: number
    } | {
      id: string
      kind: "drawing"
      z: number
      strokes: {
        tool: "marker" | "pen" | "highlighter"
        colour: "orange" | "yellow" | "green" | "blue" | "purple" | "red" | "teal" | "white" | "black"
        width: number
        points: object
      }[]
    }[]
    stickers: {
      [key: string]: {
        mine: null | string | number
        tally: null | {
          n: number
          sum: number
          counts: number[]
        }
      }
    }
  }[]
}
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
A person's token or an API key, as Authorization: Bearer.
Get an API key

Errors

  • 403Feed is only for the person signed in.
curl -X POST 'https://api.cactive.com.au/v1/messaging/social/highlights' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 201

{
  highlight: {
    highlightId: string
    name: string
    count: number
    cover: null | {
      mediaId: string
      url: string
      mime: string
      kind: "video" | "image"
      width: null | number
      height: null | number
      alt: null | string
      durationSecs: null | number
      posterUrl: null | string
    }
  }
}
PATCH/v1/messaging/social/highlights/:highlightId

Renames a highlight or changes its stories or cover.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • highlightId

    A highlight id (shl_…).

Errors

  • 403Feed is only for the person signed in.
curl -X PATCH 'https://api.cactive.com.au/v1/messaging/social/highlights/{highlightId}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  highlight: {
    highlightId: string
    name: string
    count: number
    cover: null | {
      mediaId: string
      url: string
      mime: string
      kind: "video" | "image"
      width: null | number
      height: null | number
      alt: null | string
      durationSecs: null | number
      posterUrl: null | string
    }
  }
}
DELETE/v1/messaging/social/highlights/:highlightId

Deletes a highlight (its stories stay in your archive).

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • highlightId

    A highlight id (shl_…).

Errors

  • 403Feed is only for the person signed in.
curl -X DELETE 'https://api.cactive.com.au/v1/messaging/social/highlights/{highlightId}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 204 with no body

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
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • serverId

    Mirage server id (gld_…).

Errors

  • 403Feed is only for the person signed in.
curl 'https://api.cactive.com.au/v1/messaging/social/groups/{serverId}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  group: {
    serverId: string
    name: string
    icon: null | string
    feed: "off" | "public" | "members"
    posting: "everyone" | "moderators"
    member: boolean
    canPost: boolean
    canManage: boolean
  }
}
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
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • serverId

    Mirage server id (gld_…).

Errors

  • 403Feed is only for the person signed in.
curl -X PATCH 'https://api.cactive.com.au/v1/messaging/social/groups/{serverId}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  group: {
    serverId: string
    name: string
    icon: null | string
    feed: "off" | "public" | "members"
    posting: "everyone" | "moderators"
    member: boolean
    canPost: boolean
    canManage: boolean
  }
}
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
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • serverId

    Mirage server id (gld_…).

Errors

  • 403Feed is only for the person signed in.
curl 'https://api.cactive.com.au/v1/messaging/social/groups/{serverId}/posts' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  posts: {
    postId: string
    kind: "post" | "reply" | "quote" | "repost"
    author: {
      userId: string
      name: string
      avatarUrl: null | string
      kind: "person" | "page"
      visibility: "private" | "public" | "followers"
    }
    content: string
    media: {
      mediaId: string
      url: string
      mime: string
      kind: "video" | "image"
      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" | "everyone" | "mentioned"
    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
}
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
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • serverId

    Mirage server id (gld_…).

Errors

  • 403Feed is only for the person signed in.
curl 'https://api.cactive.com.au/v1/messaging/social/groups/{serverId}/events' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

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
  }[]
}
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
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • serverId

    Mirage server id (gld_…).

  • eventId

    Event id: a calendar event (evt_…; a recurring event's occurrences share it), or a Mirage server's event (mev_…).

Errors

  • 403Feed is only for the person signed in.
curl -X PUT 'https://api.cactive.com.au/v1/messaging/social/events/{serverId}/{eventId}/rsvp' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

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
  }
}
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
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • serverId

    Mirage server id (gld_…).

  • eventId

    Event id: a calendar event (evt_…; a recurring event's occurrences share it), or a Mirage server's event (mev_…).

Errors

  • 403Feed is only for the person signed in.
curl -X PUT 'https://api.cactive.com.au/v1/messaging/social/events/{serverId}/{eventId}/cover' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

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
  }
}
GET/v1/messaging/social/pages/mine

The pages you run (as their owner or an admin), with their follower counts.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Errors

  • 403Feed is only for the person signed in.
curl 'https://api.cactive.com.au/v1/messaging/social/pages/mine' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  pages: {
    pageId: string
    name: string
    category: null | string
    avatarUrl: null | string
    role: "owner" | "admin"
    followers: number
  }[]
}
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
A person's token or an API key, as Authorization: Bearer.
Get an API key

Errors

  • 403Feed is only for the person signed in.
curl -X POST 'https://api.cactive.com.au/v1/messaging/social/pages' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a 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
    friend: boolean
    muted: boolean
    canSeePosts: boolean
    gridFirst: boolean
  }
}
PATCH/v1/messaging/social/pages/:pageId

Changes a page's details (null clears one). Its owner or admins.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • pageId

    Page id: a Notes page (doc_…), or a Feed page (pgx_…) under /v1/messaging/social; under marketing a landing page (mkp_…).

Errors

  • 403Feed is only for the person signed in.
curl -X PATCH 'https://api.cactive.com.au/v1/messaging/social/pages/{pageId}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

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
    friend: boolean
    muted: boolean
    canSeePosts: boolean
    gridFirst: boolean
  }
}
DELETE/v1/messaging/social/pages/:pageId

Deactivates a page: its profile and posts stop showing and it can't be followed. Its owner.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • pageId

    Page id: a Notes page (doc_…), or a Feed page (pgx_…) under /v1/messaging/social; under marketing a landing page (mkp_…).

Errors

  • 403Feed is only for the person signed in.
curl -X DELETE 'https://api.cactive.com.au/v1/messaging/social/pages/{pageId}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 204 with no body

GET/v1/messaging/social/pages/:pageId/admins

Who runs a page: its owner and admins. For them.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • pageId

    Page id: a Notes page (doc_…), or a Feed page (pgx_…) under /v1/messaging/social; under marketing a landing page (mkp_…).

Errors

  • 403Feed is only for the person signed in.
curl 'https://api.cactive.com.au/v1/messaging/social/pages/{pageId}/admins' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  admins: {
    userId: string
    name: string
    avatarUrl: null | string
    role: "owner" | "admin"
  }[]
}
PUT/v1/messaging/social/pages/:pageId/admins/:userId

Makes someone on Feed an admin of your page (up to 20). Its owner.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • pageId

    Page id: a Notes page (doc_…), or a Feed page (pgx_…) under /v1/messaging/social; under marketing a landing page (mkp_…).

  • userId

    A member's user id (usr_…).

Errors

  • 403Feed is only for the person signed in.
curl -X PUT 'https://api.cactive.com.au/v1/messaging/social/pages/{pageId}/admins/{userId}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 204 with no body

DELETE/v1/messaging/social/pages/:pageId/admins/:userId

Removes an admin. Its owner.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • pageId

    Page id: a Notes page (doc_…), or a Feed page (pgx_…) under /v1/messaging/social; under marketing a landing page (mkp_…).

  • userId

    A member's user id (usr_…).

Errors

  • 403Feed is only for the person signed in.
curl -X DELETE 'https://api.cactive.com.au/v1/messaging/social/pages/{pageId}/admins/{userId}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 204 with no body

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
A person's token or an API key, as Authorization: Bearer.
Get an API key

Errors

  • 403Feed is only for the person signed in.
curl 'https://api.cactive.com.au/v1/messaging/social/notifications' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  notifications: {
    notificationId: string
    type: "post" | "removed" | "poll" | "reply" | "follow" | "quote" | "repost" | "like" | "follow_request" | "follow_accept" | "mention" | "story_reply" | "story_like" | "story_mention" | "story_countdown"
    actors: {
      userId: string
      name: string
      avatarUrl: null | string
      kind: "person" | "page"
    }[]
    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
}
POST/v1/messaging/social/notifications/read

Marks your activity seen.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Errors

  • 403Feed is only for the person signed in.
curl -X POST 'https://api.cactive.com.au/v1/messaging/social/notifications/read' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 204 with no body