Skip to main content
Bot is allowed — every endpoint on this page accepts bot authentication via the Authorization: <user_id> <token> header. See the Bots guide.
Comments let picnic members start threaded discussions beneath individual posts. They are only available on picnics where the owner has enabled the supports_comments flag — attempting to list or create comments on a picnic without this flag returns a 403. Any member can post a comment, reply to another comment, like or unlike comments, and edit or delete their own contributions. Picnic admins can also delete any member’s comment for moderation purposes.

The Comment object

integer
Unique numeric identifier for the comment.
integer
ID of the picnic this comment belongs to.
integer
ID of the picnic post (PMessage) this comment is attached to.
integer | null
The real user ID of the commenter, or null if the author has set their profile to private and you are not their friend. You always see the real user ID on your own comments, on comments by users with public profiles, and on comments by users who are your friends.
string
Text body of the comment.
integer | null
ID of the parent comment this comment is replying to, or null for top-level comments.
integer
Unix timestamp (seconds) when the comment was created.
boolean
true if the comment has been edited after its original creation.
integer
Total number of likes this comment has received.
boolean
true if the authenticated user has liked this comment.
The author field reflects the commenter’s privacy settings. Users with public profiles (the default) are always identified by their real user ID. Users with private profiles appear as null to non-friends. You always see the real user ID on your own comments regardless of your privacy setting.

Endpoints

List comments on a post

POST /api/comment/list Returns a paginated list of comments for a specific post, ordered from newest to oldest. Use before_id to load earlier pages. Request body
integer
required
ID of the picnic post (PMessage) whose comments you want to retrieve.
integer
Return only comments with an ID less than this value. Pass the smallest id from the previous response to paginate.
integer
Number of comments to return. Defaults to 20; maximum 50.
Response 200
array
Array of Comment objects.
boolean
true when older comments are available. Paginate by passing the smallest id from this page as before_id.
Error responses

Get a single comment

POST /api/comment/get Fetches a single comment by its ID. Request body
integer
required
ID of the comment to retrieve.
Response 200 — a Comment object. Error responses

Create a comment

POST /api/comment/create Posts a new comment on a picnic post. You must be a member of the picnic and comments must be enabled. Request body
integer
required
ID of the picnic post to comment on.
string
required
Text body of the comment. Cannot be blank or whitespace-only.
integer
ID of the comment you are replying to. The referenced comment must belong to the same post. Omit for a top-level comment.
Response 200 — the newly created Comment object with your real user ID in the author field. Error responses
After a successful create, every member of the picnic receives a new_comment Socket.IO event. Each member’s payload has the author field personalised — your real ID for your own event copy, an anonymised ID for everyone else.

Edit a comment

POST /api/comment/edit Updates the text of one of your comments and marks it as edited. You can only edit comments you authored. Request body
integer
required
ID of the comment to edit.
string
required
Replacement text for the comment. Cannot be blank or whitespace-only.
Response 200 — the updated Comment object. Error responses
Every member of the picnic receives an update_comment Socket.IO event after a successful edit.

Delete a comment

POST /api/comment/delete Permanently deletes a comment. You can delete your own comment at any time. Picnic admins can delete any member’s comment for moderation purposes. Request body
integer
required
ID of the comment to delete.
Response 200"Success" Error responses
Every member of the picnic receives a delete_comment Socket.IO event after a successful deletion.

Like or unlike a comment

POST /api/comment/like Adds or removes your like from a comment. Liking a comment you have already liked, or unliking one you haven’t, is a safe no-op. Request body
integer
required
ID of the comment to like or unlike.
integer
required
1 to like the comment, 0 to unlike it.
Response 200
integer
Updated total like count for the comment.
boolean
true if you now have an active like on this comment.
Error responses

Socket.IO events

Your client receives these events over the active Socket.IO connection when comment state changes.
The author field in new_comment and update_comment payloads is personalised per recipient — each member sees null or the real user ID depending on the author’s privacy settings and whether they are friends, while the comment’s own author always receives their real user ID.