Menu

API reference · Social Planner

Comments

social_planner · comments · 4 operations

GET/v1/social-planner/posts/{post_id}/comments

List the comments of a post

social_planner.comments.list

ReadIdempotentSince 2026-11-01

Lists the internal comments and notes of a planner post, oldest first, paginated by cursor: content (sanitized HTML), author, mentioned member uids, and is_system for notes written by MIA (a content plan's editorial note). The client portal does not show these comments. Requires view access to the Social Planner.

Scope
social_planner:read
Permission
View the module
MCP tool
social_planner_comments_listOn the full surface; on the compact one, mb_execute_operation with id: "social_planner.comments.list".

Declared cost: up to 202 reads and 0 writes per call (they count against the daily quota).

Parameters

post_idstringpathrequired

The post id (from social_planner.posts.list).

limitintegerqueryoptional

How many items this page brings at most (see the maximum and the default in the schema).

Default: 50

cursorstringqueryoptional

The next_cursor of the previous page, exactly as it came (only for the same list and filters); without it, the first page.

Response

dataarray<object>
has_moreboolean
next_cursorstring

Errors

Example

curl "https://api.mb-suite.com/v1/social-planner/posts/{post_id}/comments" \
  -H "Authorization: Bearer $MB_API_KEY"

Try it with your test API key

With a test API key the request always goes to your practice organization: example data you can reset.

curl "https://api.mb-suite.com/v1/social-planner/posts/{post_id}/comments" \
  -H "Authorization: Bearer $MB_TEST_KEY"
POST/v1/social-planner/posts/{post_id}/comments

Comment on a post

social_planner.comments.create

WriteSince 2026-11-01

Adds an internal comment or note to a planner post (simple HTML or text, sanitized; up to 10,000 characters). mentions are member uids to notify (only members of this organization or of its agency workspace receive the notice); the post's author also gets a reply notice. Returns the comment. Requires full access to the Social Planner.

Scope
social_planner:write
Permission
Edit in the module
MCP tool
social_planner_comments_createOn the full surface; on the compact one, mb_execute_operation with id: "social_planner.comments.create".

Declared cost: up to 3 reads and 2 writes per call (they count against the daily quota).

Parameters

post_idstringpathrequired

The post id (from social_planner.posts.list).

contentstringbodyrequired

The comment: simple HTML (sanitized) or plain text, up to 10,000 characters. It is internal: it never goes to the networks.

mentionsarray<string>bodyoptional

Members to mention (user ids from members.members.list, up to 50): they get a notice.

Default: []

Response

comment_idstring
commentobject

Errors

Example

curl -X POST "https://api.mb-suite.com/v1/social-planner/posts/{post_id}/comments" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "content": "CONTENT"
}'

Try it with your test API key

With a test API key the request always goes to your practice organization: example data you can reset.

curl -X POST "https://api.mb-suite.com/v1/social-planner/posts/{post_id}/comments" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "content": "CONTENT"
}'
PATCH/v1/social-planner/posts/{post_id}/comments/{comment_id}

Edit a comment

social_planner.comments.update

WriteIdempotentSince 2026-11-01

Replaces the content (and mentions) of a comment. Only its author can edit it (403 comment_author_only); only newly added mentions are notified. Returns the updated comment. Requires full access.

Scope
social_planner:write
Permission
Edit in the module
MCP tool
social_planner_comments_updateOn the full surface; on the compact one, mb_execute_operation with id: "social_planner.comments.update".

Declared cost: up to 4 reads and 1 writes per call (they count against the daily quota).

Parameters

post_idstringpathrequired

The post id (from social_planner.posts.list).

comment_idstringpathrequired

The comment id (from social_planner.comments.list).

contentstringbodyrequired

The comment: simple HTML (sanitized) or plain text, up to 10,000 characters. It is internal: it never goes to the networks.

mentionsarray<string>bodyoptional

Members to mention (user ids from members.members.list, up to 50): they get a notice.

Default: []

Response

commentobject

Errors

Example

curl -X PATCH "https://api.mb-suite.com/v1/social-planner/posts/{post_id}/comments/{comment_id}" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "content": "CONTENT"
}'

Try it with your test API key

With a test API key the request always goes to your practice organization: example data you can reset.

curl -X PATCH "https://api.mb-suite.com/v1/social-planner/posts/{post_id}/comments/{comment_id}" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "content": "CONTENT"
}'
DELETE/v1/social-planner/posts/{post_id}/comments/{comment_id}

Delete a comment

social_planner.comments.delete

IrreversibleSince 2026-11-01

Deletes a comment of a planner post. Its author or an owner/admin of the organization can delete it (403 comment_delete_denied otherwise). It stays 30 days in the trash (platform.trash.restore brings it back to its post). Outside the app it needs a dry run and a confirm_token, except a REST DELETE with a key allowed to delete. Requires full access.

With an API key, this DELETE runs directly: the record stays 30 days in the trash and the response carries its trash_item_id. With an OAuth token, and through the MCP, it needs dry_run → confirm_token.

Scope
social_planner:write and “Allow deletions” (social_planner:delete in OAuth)
Permission
Edit in the module
MCP tool
social_planner_comments_deleteOn the full surface; on the compact one, mb_execute_operation with id: "social_planner.comments.delete".

Declared cost: up to 2 reads and 2 writes per call (they count against the daily quota).

Parameters

post_idstringpathrequired

The post id (from social_planner.posts.list).

comment_idstringpathrequired

The comment id (from social_planner.comments.list).

Response

oktrue
trash_item_idstring

The trash item this deletion left: the item_id of platform.trash.restore (POST /trash/{item_id}/restore). Missing if nothing went to the trash.

trash_item_idsarray<string>

Only when the deletion left more than one copy: all of them, the first being trash_item_id.

trash_expires_atnumber

When the copy leaves the trash for good (epoch ms): 30 days after the deletion.

Errors

Example

curl -X DELETE "https://api.mb-suite.com/v1/social-planner/posts/{post_id}/comments/{comment_id}" \
  -H "Authorization: Bearer $MB_API_KEY"

Try it with your test API key

With a test API key the request always goes to your practice organization: example data you can reset.

curl -X DELETE "https://api.mb-suite.com/v1/social-planner/posts/{post_id}/comments/{comment_id}" \
  -H "Authorization: Bearer $MB_TEST_KEY"