List and open discussion threads, create a discussion in a forum, and post a reply. For moderation, merge, archive, reactions, correct answer, and read or unread, open Bevy API Reference — those calls are labeled beta there.
Use this page when you list or open discussion threads, start a discussion, or post a reply through the public API. Shared base URL, authentication, status codes, and account rate limits stay in Using public Bevy APIs. Parameter and field details stay in Bevy API Reference.
Permissions you need
| Action | Permission | Endpoint |
|---|---|---|
| List or open a discussion | Read access to the forum (anonymous callers can read public forums) | GET /api/forum/discussion/, GET /api/forum/discussion/{discussion_uuid}/, GET /api/forum/post/?discussion_uuid=… |
| Create a discussion | Permission to post in the target forum | POST /api/forum/discussion/ |
| Post a reply | Authenticated caller with can_add_post on the forum | POST /api/forum/post/ |
Without the permission, Bevy returns 403. Create and reply reject anonymous callers.
List discussions
Each list result is the first post of a topic (one row per thread), not individual replies.
| Job | Call |
|---|---|
| Site-wide or forum-scoped feed | GET /api/forum/discussion/ — optional forum_uuid or forum_uuids |
| Discussions for a chapter, event, or other entity | GET /api/forum/discussion/for/{lookup_name}/{field_value}/ |
Results are limited to forums the caller can read. Without a forum filter, enterprise-hidden forums are excluded. When you scope to a forum, stickies sort first; the site-wide feed sorts homepage-pinned first. Full query parameters stay in Bevy API Reference.
Open a discussion
Load the thread root with GET /api/forum/discussion/{discussion_uuid}/. That response is the first post only.
Load replies with GET /api/forum/post/?discussion_uuid={discussion_uuid}. That list does not include the first post, and it returns a plain JSON array (not a paginated page).
Note: Drafts are visible only to their author. Archived discussions are visible only to callers who can delete topics. Unapproved discussions are visible to their author or a moderator.
Create a discussion
Start a new thread with:
POST /api/forum/discussion/
Content-Type: application/json
{
"forum_uuid": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
"subject": "Welcome new organizers",
"content": "<p>Share your onboarding tips here.</p>"
}Require forum_uuid, subject, and content (HTML allowed). You need permission to post in that forum. A successful create returns 201.
Post a reply
Reply under an existing post. Bevy derives the discussion from parent_post_uuid — the new post joins the same topic as the parent. Deep threading is supported; threading level is computed server-side.
POST /api/forum/post/
Content-Type: application/json
{
"parent_post_uuid": "11111111-2222-3333-4444-555555555555",
"content": "<p>Thanks — this helped our chapter team.</p>"
}Require parent_post_uuid and content. Bevy returns 409 when the parent post or the discussion’s first post is archived.
Note: Bevy API Reference labels create reply as beta — the contract can change. Prefer confirming the current request and response shape there before you ship a production integration on this call.
Other discussion actions (beta)
The public API also supports these discussion actions. In Bevy API Reference they are labeled beta, so request and response shapes can change. Use that reference for the exact calls and fields — this page only names what they do:
- Moderation — approve or reject a discussion or reply in the moderation queue
- Merge — fold one discussion into another, or move selected replies
- Archive — archive or restore a post when archiving is enabled for your community
- Reactions — add or remove a reaction on a post
- Correct answer — mark or unmark a reply as the correct answer on a question
- Read or unread — mark a discussion or reply read or unread for the authenticated caller
Tip: For headers, authentication, and account-wide rate limits, see Using public Bevy APIs. For every parameter and response field, open the matching operation in Bevy API Reference.