The hierarchy
The difference between Space and Group is easy to remember: Space is the thematic division shown in the main navigation; Group is where conversation happens and where badge-based permissions are applied.
Who creates what
The general rule: structure is the admin’s job, content is the partner’s job.Access control: badge gates the group
Each Group can require one or more badges for a user to enter. This is configured in the dashboard, on each group’s access screen:Read endpoints
Even without creating structure, you almost always need to read groups: to show them to the user in your app or to discover IDs before creating posts.List groups
GET /community/groups returns a paginated list. It accepts a space filter and pagination.
The JSON on this page is illustrative. The authoritative field-by-field schema lives in the API Reference tab (Group tag).
Group detail
GET /community/groups/{groupId} returns the full group, including allowedBadges (the badges that unlock entry) and the caller’s own flags (isInGroup, isModerator).
List members
GET /community/groups/{groupId}/members returns paginated members, with role, moderator flag, and access expiration date (when present).
Group CRUD (admin scope)
Create a group
201 Created):
Members: join, leave, invite, and remove
Join and leave
join respects access control: if the group requires a badge the user doesn’t have, it returns 403.
Invite and remove
Invite by email when you only have the email; useuserId when you’ve already resolved the user.
Bulk fill
To populate a group at once, without inviting one by one:add/by-allowed-badges adds every user who already holds one of the group’s allowedBadges. It’s how you “reconcile” the group after configuring badges.
Per-member expiration
Set a date when that member’s access automatically expires:Create posts and comments
Posts live inside a Group. You need thegroupId first: fetch it via the listing or store it at onboarding.
The post author is always the user associated with the authenticated credential. You do not (and cannot) send
authorId in the body.403 forbidden.
To comment, post to POST /community/posts/{postId}/comments:
Common errors
403 Forbidden on join or post
403 Forbidden on join or post
The user lacks a badge that unlocks the group. Assign the right badge first (see Badges as Permissions) or confirm the group is open.
404 Not Found on groupId
404 Not Found on groupId
The group doesn’t exist in that tenant, or it’s secret and hidden from discovery. Confirm the
groupId from the listing.403 on group write routes
403 on group write routes
Creating/editing/deleting a group and bulk-adding require admin scope. Ask the tenant admin for the right credential.
Anti-pattern: one group per customer via API
Next steps
Badges as Permissions
How to use badges to grant access without creating new structure.
Webhooks
Receive events when posts are created, users join groups, etc.
