Menú

Referencia de la API · CRM

Etiquetas

crm · labels · 6 operaciones

GET/v1/crm/labels

List the labels of one entity type

crm.labels.list

LecturaIdempotenteDesde 2026-11-01

Lists the labels (id, name, color, order) the org defined for one entity: deal, person, company, prospect, conversation or sequence. Each entity has its own pool: a person label cannot be put on a deal. Use the ids in label_ids when creating or updating records.

Alcance
crm:read
Permiso
Ver el módulo
Tool del MCP
crm_labels_listEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.labels.list".

Costo declarado: hasta 100 lecturas y 0 escrituras por llamada (cuentan en el cupo diario).

Parámetros

entityenumqueryrequerido

Whose labels: each kind of record has its own pool.

Valores: deal, person, company, prospect, conversation, sequence

Respuesta

dataarray<object>

Errores

Ejemplo

curl "https://api.mb-suite.com/v1/crm/labels?entity=deal" \
  -H "Authorization: Bearer $MB_API_KEY"

Probar con tu API key de prueba

Con una API key de prueba el pedido va siempre a tu organización de práctica: datos de ejemplo que puedes reiniciar.

curl "https://api.mb-suite.com/v1/crm/labels?entity=deal" \
  -H "Authorization: Bearer $MB_TEST_KEY"
POST/v1/crm/labels

Create a label for one entity type

crm.labels.create

EscrituraDesde 2026-11-01

Creates a label in the pool of one entity (deal, person, company, prospect, conversation or sequence) with a name (up to 60 characters) and a color (a hex such as #22c55e). It goes last in the order and its creator is recorded: a seller can later rename or delete only the labels they created; Managers and admins, all of them. Requires manage_labels, which every member except viewers has.

Alcance
crm:write
Permiso
Editar en el módulo · Acción del CRM: manage_labels
Tool del MCP
crm_labels_createEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.labels.create".

Costo declarado: hasta 1 lecturas y 1 escrituras por llamada (cuentan en el cupo diario).

Parámetros

entityenumcuerporequerido

The kind of record whose labels these are: each one has its own pool.

Valores: deal, person, company, prospect, conversation, sequence

namestringcuerporequerido

The label's name, up to 60 characters.

colorstringcuerporequerido

A hex color: #22c55e. The app's palette: #ef4444, #f97316, #eab308, #22c55e, #10b981, #06b6d4, #3b82f6, #8b5cf6, #ec4899, #6b7280.

Respuesta

label_idstring

Errores

Ejemplo

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

Probar con tu API key de prueba

Con una API key de prueba el pedido va siempre a tu organización de práctica: datos de ejemplo que puedes reiniciar.

curl -X POST "https://api.mb-suite.com/v1/crm/labels" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "entity": "deal",
  "name": "NAME",
  "color": "COLOR"
}'
PATCH/v1/crm/labels/{label_id}

Rename, recolor or move a label

crm.labels.update

EscrituraIdempotenteDesde 2026-11-01

Updates the name, color (a hex such as #22c55e) or order of a label of one entity (deal, person, company, prospect, conversation or sequence); send at least one of them, at the top level or inside updates (not both: updates_conflict). The records that carry the label keep it. Returns the label as saved and changed: false when it already was that way (nothing written). A seller can only edit the labels they created (or old ones without an author); Managers and admins, any. Use crm.labels.reorder to set the whole order at once. Requires manage_labels.

Alcance
crm:write
Permiso
Editar en el módulo
Tool del MCP
crm_labels_updateEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.labels.update".

Costo declarado: hasta 1 lecturas y 1 escrituras por llamada (cuentan en el cupo diario).

Parámetros

label_idstringrutarequerido

The label, by id (crm.labels.list).

entityenumcuerporequerido

The kind of record whose labels these are: each one has its own pool.

Valores: deal, person, company, prospect, conversation, sequence

namestringcuerpoopcional

The label's name, up to 60 characters.

colorstringcuerpoopcional

A hex color: #22c55e. The app's palette: #ef4444, #f97316, #eab308, #22c55e, #10b981, #06b6d4, #3b82f6, #8b5cf6, #ec4899, #6b7280.

orderintegercuerpoopcional

Its position among the labels of that entity (0 first).

updatesobjectcuerpoopcional

The same fields, grouped as in the other CRM edits (crm.deals.update…): send them here or at the top level, not both.

Respuesta

oktrue
changedboolean

false when the label already was that way: nothing was written.

labelobject

Errores

Ejemplo

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

Probar con tu API key de prueba

Con una API key de prueba el pedido va siempre a tu organización de práctica: datos de ejemplo que puedes reiniciar.

curl -X PATCH "https://api.mb-suite.com/v1/crm/labels/{label_id}" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "entity": "deal"
}'
POST/v1/crm/labels/reorder

Set the order of the labels of one entity type

crm.labels.reorder

EscrituraIdempotenteDesde 2026-11-01

Sets the display order of the labels of one entity (deal, person, company, prospect, conversation or sequence): each id in ordered_ids (up to 200) gets its position as order. Every id must be a label of that entity, otherwise nothing is reordered (label_not_found, with the ids that are not in details.unknown_ids). It does not create, rename or delete labels. Requires manage_labels.

Alcance
crm:write
Permiso
Editar en el módulo · Acción del CRM: manage_labels
Tool del MCP
crm_labels_reorderEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.labels.reorder".

Costo declarado: hasta 200 lecturas y 200 escrituras por llamada (cuentan en el cupo diario).

Parámetros

entityenumcuerporequerido

The kind of record whose labels these are: each one has its own pool.

Valores: deal, person, company, prospect, conversation, sequence

ordered_idsarray<string>cuerporequerido

The label ids in the order they should have (each one gets its position as order).

Respuesta

oktrue

Errores

Ejemplo

curl -X POST "https://api.mb-suite.com/v1/crm/labels/reorder" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "entity": "deal",
  "ordered_ids": [
    "ORDERED_ID"
  ]
}'

Probar con tu API key de prueba

Con una API key de prueba el pedido va siempre a tu organización de práctica: datos de ejemplo que puedes reiniciar.

curl -X POST "https://api.mb-suite.com/v1/crm/labels/reorder" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "entity": "deal",
  "ordered_ids": [
    "ORDERED_ID"
  ]
}'
DELETE/v1/crm/labels/{label_id}

Delete a label

crm.labels.delete

IrreversibleDesde 2026-11-01

Deletes a label of one entity (deal, person, company, prospect, conversation or sequence) and removes it from every record that carried it. The label goes to the 30-day trash with the ids of the records that had it, and restoring it puts it back on them (the trash keeps up to 5,000 ids: with more, the trash item says linked_truncated and the dry run warns); the records themselves are not touched otherwise and no webhook event is sent for them. A seller can only delete the labels they created (or old ones without an author); Managers and admins, any. Requires manage_labels. Outside the screen it requires a dry run and a confirm_token.

Con una API key, este DELETE se ejecuta directo: el registro queda 30 días en la papelera y la respuesta trae su trash_item_id. Con un token OAuth, y por el MCP, pide dry_run → confirm_token.

Alcance
crm:write y «Permitir eliminar» (crm:delete en OAuth)
Permiso
Editar en el módulo
Tool del MCP
crm_labels_deleteEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.labels.delete".

Costo declarado: hasta 5001 lecturas y 5001 escrituras por llamada (cuentan en el cupo diario).

Parámetros

label_idstringrutarequerido

The label, by id (crm.labels.list).

entityenumcuerporequerido

The kind of record whose labels these are: each one has its own pool.

Valores: deal, person, company, prospect, conversation, sequence

Respuesta

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.

Errores

Ejemplo

curl -X DELETE "https://api.mb-suite.com/v1/crm/labels/{label_id}" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "entity": "deal"
}'

Probar con tu API key de prueba

Con una API key de prueba el pedido va siempre a tu organización de práctica: datos de ejemplo que puedes reiniciar.

curl -X DELETE "https://api.mb-suite.com/v1/crm/labels/{label_id}" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "entity": "deal"
}'
POST/v1/crm/labels/assign

Set, add or remove labels on conversations

crm.labels.assign

EscrituraMasiva · hasta 500IdempotenteDesde 2026-11-01

Labels up to 500 inbox conversations at once (entity: conversation, which can be left out; label ids from crm.labels.list with entity conversation). Send label_ids to replace the whole set, or to_add / to_remove to add or remove labels while keeping the rest. A label that is not a conversation label of the organization is label_not_found (with details.unknown_ids), in the dry run too. Only the conversations the caller can see in crm.conversations.list are labeled (not those on another module's line and, for a seller with restricted scope, only theirs or those on lines they work): the rest, and ids that do not exist, come back in not_found and are left untouched; updated counts the labeled ones. Deals, persons, companies and prospects are labeled with their own update or bulk.update_labels operations instead. Requires full access to the CRM. Bulk: outside the screen it requires a dry run and a confirm_token.

Pide confirmación: primero dry_run: true (vista previa y confirm_token, que vale 10 minutos y una sola vez), después el mismo cuerpo con confirm_token. En unas pocas, solo con ciertos datos: la descripción dice cuándo. Por qué y cómo: Vista previa y confirmación.

Alcance
crm:write
Permiso
Editar en el módulo
Tool del MCP
crm_labels_assignEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.labels.assign".

Costo declarado: hasta 653 lecturas y 1000 escrituras por llamada (cuentan en el cupo diario).

Parámetros

conversation_idsarray<string>cuerporequerido

The inbox conversations to label (crm.conversations.list).

entityenumcuerpoopcional

Always conversation (the only kind labeled here); it can be left out.

Valores: conversation · Por defecto: "conversation"

label_idsarray<string>cuerpoopcional

The whole set of labels each conversation ends up with (replaces what they had).

to_addarray<string>cuerpoopcional

Labels to add, keeping the rest.

to_removearray<string>cuerpoopcional

Labels to remove, keeping the rest.

Respuesta

oktrue
updatednumber
not_foundarray<string>

Errores

Ejemplo

curl -X POST "https://api.mb-suite.com/v1/crm/labels/assign" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "conversation_ids": [
    "CONVERSATION_ID"
  ],
  "dry_run": true
}'

Probar con tu API key de prueba

Con una API key de prueba el pedido va siempre a tu organización de práctica: datos de ejemplo que puedes reiniciar.

curl -X POST "https://api.mb-suite.com/v1/crm/labels/assign" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "conversation_ids": [
    "CONVERSATION_ID"
  ],
  "dry_run": true
}'