Menu

API reference · Social Planner

Labels

social_planner · labels · 5 operations

GET/v1/social-planner/labels

List post labels

social_planner.labels.list

ReadIdempotentSince 2026-11-01

Lists the labels used to tag Social Planner posts (name, hex color, order), in the order the planner shows them (up to 200). Use their ids in label_ids when creating or updating posts and to filter social_planner.posts.list. Requires view access to the Social Planner.

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

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

Parameters

No parameters.

Response

dataarray<object>

Errors

Example

curl "https://api.mb-suite.com/v1/social-planner/labels" \
  -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/labels" \
  -H "Authorization: Bearer $MB_TEST_KEY"
POST/v1/social-planner/labels

Create a post label

social_planner.labels.create

WriteSince 2026-11-01

Creates a post label with a name (up to 50 characters) and a hex color (#rrggbb; default #ef4444, the first of the palette), placed last in the order (the first label is 0). Labels are per organization (workspace or account), up to 200 (409 limit_reached, details.resource post_labels). Returns the label with its id. Requires full access to the Social Planner.

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

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

Parameters

namestringbodyrequired

The label's name (1 to 50 characters).

colorstringbodyoptional

Its color, hex #rrggbb. Default #ef4444 (the first of the palette).

Default: "#ef4444"

Response

label_idstring
labelobject

Errors

Example

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

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/labels" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "name": "NAME"
}'
PATCH/v1/social-planner/labels/{label_id}

Rename, recolor or move a post label

social_planner.labels.update

WriteIdempotentSince 2026-11-01

Updates the name, the color (#rrggbb) or the position (order) of a post label; posts that use it keep it. Returns the updated label. Requires full access.

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

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

Parameters

label_idstringpathrequired

The Planner label id (from social_planner.labels.list).

updatesobjectbodyrequired

What changes (only what comes is written).

Response

labelobject

Errors

Example

curl -X PATCH "https://api.mb-suite.com/v1/social-planner/labels/{label_id}" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "updates": {}
}'

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/labels/{label_id}" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "updates": {}
}'
POST/v1/social-planner/labels/reorder

Reorder post labels

social_planner.labels.reorder

WriteIdempotentSince 2026-11-01

Sets the order of post labels: label_ids in the new order (position = index). Ids that are not labels of this organization (another tab deleted one) are skipped and counted in skipped; repeated ids are 400 duplicate_label_ids. Returns count (reordered) and skipped. Requires full access.

Scope
social_planner:write
Permission
Edit in the module
MCP tool
social_planner_labels_reorderOn the full surface; on the compact one, mb_execute_operation with id: "social_planner.labels.reorder".

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

Parameters

label_idsarray<string>bodyrequired

Label ids in the new order (from social_planner.labels.list): position = index. Ids that no longer exist are skipped (counted in skipped).

Response

countnumber

Labels reordered.

skippednumber

Ids skipped because they are not labels of this organization.

Errors

Example

curl -X POST "https://api.mb-suite.com/v1/social-planner/labels/reorder" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "label_ids": [
    "LABEL_ID"
  ]
}'

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/labels/reorder" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "label_ids": [
    "LABEL_ID"
  ]
}'
DELETE/v1/social-planner/labels/{label_id}

Delete a post label

social_planner.labels.delete

IrreversibleSince 2026-11-01

Deletes a post label and removes it from every post that has it (the posts themselves are not touched otherwise). The label goes to the 30-day trash; restoring it brings the label back but not its assignments to posts. The dry run says how many posts have it. Returns how many posts were updated. 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_labels_deleteOn the full surface; on the compact one, mb_execute_operation with id: "social_planner.labels.delete".

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

Parameters

label_idstringpathrequired

The Planner label id (from social_planner.labels.list).

Response

oktrue
posts_updatednumber
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/labels/{label_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/labels/{label_id}" \
  -H "Authorization: Bearer $MB_TEST_KEY"