Menu

API reference · Members

Labels

members · labels · 4 operations

GET/v1/members/labels

List member labels

members.labels.list

ReadIdempotentSince 2026-11-01

Lists the organization's member labels in display order (name, color, order): tags that organize the team on the Members page and filter members.members.list (label_id). They do not change access. Requires view access to Members.

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

Declared cost: up to 501 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/members/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/members/labels" \
  -H "Authorization: Bearer $MB_TEST_KEY"
POST/v1/members/labels

Create a member label

members.labels.create

WriteSince 2026-11-01

Creates a member label with a name (up to 80 characters) and an optional hex color (without it, the next color of the app's palette). It goes last in the order. Put it on members with members.members.update_labels or members.members.bulk.update_labels. Returns the label. Owner or admin only.

Scope
members:write
Permission
Edit in the module · Only owner, admin
MCP tool
members_labels_createOn the full surface; on the compact one, mb_execute_operation with id: "members.labels.create".

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

Parameters

namestringbodyrequired

Its name.

colorstringbodyoptional

Its color (#rrggbb); without it, the next one of the app's palette.

Response

label_idstring
labelobject

Errors

Example

curl -X POST "https://api.mb-suite.com/v1/members/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/members/labels" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "name": "NAME"
}'
PATCH/v1/members/labels/{label_id}

Update a member label

members.labels.update

WriteIdempotentSince 2026-11-01

Updates a member label's name, color or position in the list, all inside updates: order is the position (0 = first; past the end = last) and the other labels shift to make room. Unknown fields are rejected. 404 member_label_not_found if it is not in this organization. Returns the label. Owner or admin only.

Scope
members:write
Permission
Edit in the module · Only owner, admin
MCP tool
members_labels_updateOn the full surface; on the compact one, mb_execute_operation with id: "members.labels.update".

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

Parameters

label_idstringpathrequired

A member label id (members.labels.list).

updatesobjectbodyrequired

What changes (name, color and/or order).

Response

labelobject

Errors

Example

curl -X PATCH "https://api.mb-suite.com/v1/members/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/members/labels/{label_id}" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "updates": {}
}'
DELETE/v1/members/labels/{label_id}

Delete a member label

members.labels.delete

IrreversibleSince 2026-11-01

Deletes a member label and removes it from every member that had it, in one write. The label stays 30 days in the trash, where an owner or admin can restore it (platform.trash.restore); restoring puts it back on those members (the ones still in the organization). Outside the app it needs a dry run and a confirm_token, except a REST DELETE with a key allowed to delete. 404 member_label_not_found. Owner or admin only.

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
members:write and “Allow deletions” (members:delete in OAuth)
Permission
Edit in the module · Only owner, admin
MCP tool
members_labels_deleteOn the full surface; on the compact one, mb_execute_operation with id: "members.labels.delete".

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

Parameters

label_idstringpathrequired

A member label id (members.labels.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/members/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/members/labels/{label_id}" \
  -H "Authorization: Bearer $MB_TEST_KEY"