Menu

API reference · Tasks

Labels

task_management · labels · 4 operations

GET/v1/tasks/labels

List task labels

task_management.labels.list

ReadIdempotentSince 2026-11-01

Lists the organization's task labels (id, name, color, order) in their manual order, to filter tasks (label_id) or set label_ids. Create, edit and delete them with task_management.labels.create, update and delete.

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

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

Parameters

limitintegerqueryoptional

Labels per page (1 to 200; default 200: labels are small and one page usually has them all).

Default: 200

cursorstringqueryoptional

The next_cursor of the previous page, to continue the list; omit it for the first page.

Response

dataarray<object>
has_moreboolean
next_cursorstring

Errors

Example

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

Create a task label

task_management.labels.create

WriteSince 2026-11-01

Creates a task label (name and an optional #rrggbb color; without it, the next color of the app's palette), at the end of the manual order. Up to 200 labels per organization (409 limit_reached). Returns label_id and the label: use it in label_ids of task_management.tasks.create or update.

Scope
task_management:write
Permission
Edit in the module
MCP tool
task_management_labels_createOn the full surface; on the compact one, mb_execute_operation with id: "task_management.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.

colorstringbodyoptional

A hex color, #rrggbb (default: the next one of the app's palette).

Response

label_idstring
labelobject

Errors

Example

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

Edit a task label

task_management.labels.update

WriteIdempotentSince 2026-11-01

Renames a task label, changes its color (#rrggbb) or its place in the manual order. Only what is sent changes; the same values change nothing (changed: false). The tasks that carry it keep it. Returns the label.

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

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

Parameters

label_idstringpathrequired

The label's id (from task_management.labels.list).

updatesobjectbodyrequired

The fields to change.

Response

labelobject
changedboolean

Errors

Example

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

Delete a task label

task_management.labels.delete

IrreversibleSince 2026-11-01

Deletes a task label and removes it from every task that carries it (the tasks are not otherwise changed; up to 5,000, more is 409 too_many_labeled_tasks). The label goes to the 30-day trash with the tasks it was on: platform.trash.restore brings it back. Outside the app it requires a dry run (which says how many tasks carry it) and a confirm_token, except a REST DELETE with a key allowed to delete. Returns tasks_unlabeled.

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

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

Parameters

label_idstringpathrequired

The label's id (from task_management.labels.list).

Response

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