Skip to main content
Posts are the community’s unit of content. Each Post has an author, a content body, and a scope (the tenant feed or a specific group). Comments hang off a Post, and reactions (like/unlike) hang off both Posts and Comments. All routes below belong to the Cativa API, authenticated with an API Key in the Authorization: Bearer cativa_live_... header. Picture it as a bulletin board: the Post is the poster someone pins up, the comments are the notes stuck underneath it, and the reactions are the thumbs-up anyone gives to the poster or a note. The board can be the whole courtyard (feed) or a closed room (group).

The Post model

The post author is always the user tied to the authenticated credential. You do not (and cannot) send authorId in the body. See Identity and Users to understand how the credential resolves the author.

Scope: feed vs group

A feed Post is published at the community level and shows for everyone who can see the tenant feed. A group Post lives inside a specific group and shows only to users with access to that group. The difference is the creation endpoint: feed uses POST /community/posts, group uses POST /community/groups/{groupId}/posts.

Who can create

Creating a Post uses the CreatePost permission. An admin-scoped key creates in any scope (feed or any group). A partner key with default scope creates on behalf of the user tied to the credential, and that user must have access to the target group (at least one matching badge, or membership in an open group). Without access, the call returns 403 forbidden.
Editing and deleting a Post are done by the author. An admin key can also moderate. A regular user cannot edit or delete someone else’s post.

Posts

List the feed

Returns the tenant feed, paginated. Use the paging parameters to walk the pages. The full schema of each response field is in the API Reference tab (tag “Post”).

Get a single post

Flow: post to a group and follow up

1

Find the groupId

List the groups the user can see (see Communities and Spaces) and keep the target groupId. Without access to the group, the next step returns 403 forbidden.
2

Create the post in the group

POST /community/groups/{groupId}/posts with the content. The response carries the id of the new post.
3

Comment and react

Use the post id to POST .../comments (comment) and POST .../reactions (like). Reacting is idempotent, so you can repeat it without duplicating.

Create a post in the feed

The body carries the post content. The example below is the minimal plausible case. The exact contract (optional fields like attachments, media, or metadata) is in the API Reference tab (tag “Post”).
Illustrative response (the authoritative schema is in the API Reference tab, tag “Post”):

Create a post in a group

Same body, but the groupId goes in the route. The post stays scoped to the group.

Edit a post

Only the author (or an admin key) edits. The postId goes in the route.

Delete a post

Comments

Comments hang off a Post. The postId is always in the route. Same access rule: the user tied to the credential must be able to see the Post to comment on it.

List a post’s comments

Comment on a post

Illustrative response (full schema in the API Reference tab, tag “Comment”):

Edit and delete a comment

Same rule as the Post: only the author (or admin) changes it. Both postId and commentId go in the route.

Reactions

Reacting (like) and un-reacting (unlike) is an idempotent pair. Liking twice leaves the state the same as liking once. Unliking something that isn’t liked does not error. This simplifies retries in jobs and webhook handlers. The reaction schema is in the API Reference tab (tag “Reaction”).

Like and unlike a post

React to a comment

Comment reactions use the commentId in the route, not the postId.

Common errors and questions

The user tied to the credential has no access to that group. Group access comes from a badge (or from the group being open). Assign the badge the group requires to the user (see Badges as Permissions) and retry. An admin key bypasses this rule and creates in any group.
No. Reacting and un-reacting are an idempotent pair: liking again leaves the state the same as liking once, and unliking something that wasn’t liked does not error. That makes it safe to reprocess a webhook or retry a job without inflating the count.
Not with a default-scope key. Editing and deleting belong to the author. Trying to change another user’s post returns 403 forbidden. Only an admin key moderates someone else’s content.
You don’t. The author is always the user resolved from the authenticated credential; there is no authorId field in the body. To post on someone else’s behalf, use their admin key or the identity mechanism (see Identity and Users).
Yes. Comments and reactions hang off the Post: deleting the Post makes whatever hung off it inaccessible. There is no “undo” through the public API, so treat deletion as final from the integration’s point of view.

Next steps

Communities and Spaces

Where groups live and how to discover the groupId before posting.

Identity and Users

How the credential resolves the post and comment author.

post.created event

Receive a webhook every time a post is created.