Menú

Referencia de la API · Media Planner

Comentarios

media_planner · comments · 6 operaciones

GET/v1/media-planner/plans/{plan_id}/campaigns/{campaign_id}/comments

List the comments of a campaign

media_planner.comments.list

LecturaIdempotenteDesde 2026-11-01

Lists the internal comments of a row of a media plan (campaign, platform or account row), oldest first, paginated by cursor: content (sanitized HTML), author, mentioned member uids, and edit date. Comments from before the unified comment system carry author_id instead of created_by_id. Requires view access to the Media Planner.

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

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

Parámetros

plan_idstringrutarequerido

Media plan id (from media_planner.plans.list).

campaign_idstringrutarequerido

Row id inside the plan: a campaign, a platform row or an account row (from media_planner.campaigns.list).

limitintegerqueryopcional

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

Por defecto: 50

cursorstringqueryopcional

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

Respuesta

dataarray<object>
has_moreboolean
next_cursorstring

Errores

Ejemplo

curl "https://api.mb-suite.com/v1/media-planner/plans/{plan_id}/campaigns/{campaign_id}/comments" \
  -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/media-planner/plans/{plan_id}/campaigns/{campaign_id}/comments" \
  -H "Authorization: Bearer $MB_TEST_KEY"
GET/v1/media-planner/plans/{plan_id}/comments

List the comments of every row of a plan

media_planner.comments.list_plan

LecturaIdempotenteDesde 2026-11-01

Lists in one call the internal comments of every row of a media plan (campaign, platform or account rows), paginated by cursor (limit up to 200): each comment with its content (sanitized HTML), author, mentioned member uids and dates, plus campaign_id and campaign_name, the row it is on. Ordered by row and then by comment id, a stable order for paging but not a chronological one: sort by created_at if you need it. Comments of a deleted row are not listed (they come back when the row is restored from the trash, as in media_planner.comments.list); because of that, a page can bring fewer than limit while has_more is true: follow next_cursor. Use it to find a comment by id or to read a whole plan's notes instead of calling media_planner.comments.list once per row. Reads only that plan's comments (the page plus one) and the rows of the page; not found (media_plan_not_found) if the plan is not in this organization, and 400 invalid_cursor for a cursor that is not from this list. Requires view access to the Media Planner.

Alcance
media_planner:read
Permiso
Ver el módulo
Tool del MCP
media_planner_comments_list_planEn la superficie completa; en la compacta, mb_execute_operation con id: "media_planner.comments.list_plan".

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

Parámetros

plan_idstringrutarequerido

Media plan id (from media_planner.plans.list).

limitintegerqueryopcional

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

Por defecto: 50

cursorstringqueryopcional

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

Respuesta

dataarray<object>
has_moreboolean
next_cursorstring

Errores

Ejemplo

curl "https://api.mb-suite.com/v1/media-planner/plans/{plan_id}/comments" \
  -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/media-planner/plans/{plan_id}/comments" \
  -H "Authorization: Bearer $MB_TEST_KEY"
POST/v1/media-planner/plans/{plan_id}/campaigns/{campaign_id}/comments

Comment on a campaign

media_planner.comments.create

EscrituraDesde 2026-11-01

Adds an internal comment to a row of a media plan (simple HTML or text, sanitized; up to 10,000 characters). mentions are member uids to notify (only members of this organization or of its workspace get the notice, with a link to the campaign). Returns the comment. Requires full access to the Media Planner.

Alcance
media_planner:write
Permiso
Editar en el módulo
Tool del MCP
media_planner_comments_createEn la superficie completa; en la compacta, mb_execute_operation con id: "media_planner.comments.create".

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

Parámetros

plan_idstringrutarequerido

Media plan id (from media_planner.plans.list).

campaign_idstringrutarequerido

Row id inside the plan: a campaign, a platform row or an account row (from media_planner.campaigns.list).

contentstringcuerporequerido

Simple HTML or text (sanitized).

mentionsarray<string>cuerpoopcional

Uids of members to notify (members.members.list; in an account, also the workspace's). Others are not saved: they come back in ignored_mentions.

Por defecto: []

Respuesta

comment_idstring

The new comment's id.

commentobject

The comment.

ignored_mentionsarray<string>

Mentioned uids that are not members of the organization or its workspace: not saved nor notified.

Errores

Ejemplo

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

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/media-planner/plans/{plan_id}/campaigns/{campaign_id}/comments" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "content": "CONTENT"
}'
PATCH/v1/media-planner/plans/{plan_id}/campaigns/{campaign_id}/comments/{comment_id}

Edit a campaign comment

media_planner.comments.update

EscrituraIdempotenteDesde 2026-11-01

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

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

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

Parámetros

plan_idstringrutarequerido

Media plan id (from media_planner.plans.list).

campaign_idstringrutarequerido

Row id inside the plan: a campaign, a platform row or an account row (from media_planner.campaigns.list).

comment_idstringrutarequerido

Comment id (from media_planner.comments.list).

contentstringcuerporequerido

The new text: simple HTML or text (sanitized).

mentionsarray<string>cuerpoopcional

The full list of mentions of the edited comment, uids of members (only new ones are notified; others come back in ignored_mentions).

Por defecto: []

Respuesta

commentobject

The comment as it is now.

ignored_mentionsarray<string>

Mentioned uids that are not members of the organization or its workspace: not saved nor notified.

Errores

Ejemplo

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

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/media-planner/plans/{plan_id}/campaigns/{campaign_id}/comments/{comment_id}" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "content": "CONTENT"
}'
DELETE/v1/media-planner/plans/{plan_id}/campaigns/{campaign_id}/comments/{comment_id}

Delete a campaign comment

media_planner.comments.delete

IrreversibleDesde 2026-11-01

Deletes a comment of a campaign, of this plan or of a previous one (the history). Its author or an owner/admin of the organization can delete it (403 comment_delete_denied otherwise). It goes to the 30-day trash, where an owner or admin can restore it (platform.trash.restore). 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 to the Media Planner.

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
media_planner:write y «Permitir eliminar» (media_planner:delete en OAuth)
Permiso
Editar en el módulo
Tool del MCP
media_planner_comments_deleteEn la superficie completa; en la compacta, mb_execute_operation con id: "media_planner.comments.delete".

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

Parámetros

plan_idstringrutarequerido

Media plan id (from media_planner.plans.list).

campaign_idstringrutarequerido

Row id inside the plan: a campaign, a platform row or an account row (from media_planner.campaigns.list).

comment_idstringrutarequerido

Comment id (from media_planner.comments.list).

Respuesta

oktrue

Always true.

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/media-planner/plans/{plan_id}/campaigns/{campaign_id}/comments/{comment_id}" \
  -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 -X DELETE "https://api.mb-suite.com/v1/media-planner/plans/{plan_id}/campaigns/{campaign_id}/comments/{comment_id}" \
  -H "Authorization: Bearer $MB_TEST_KEY"
GET/v1/media-planner/plans/{plan_id}/comments/history

Comments on the same real campaign in previous plans

media_planner.comments.history

LecturaIdempotenteDesde 2026-11-01

Returns what was said about the same real campaign in the organization's previous plans: the comments of the rows linked to the same ad-platform campaign (campaign_id of a linked row of this plan, or mapped_campaign_id directly) in plans that started before this one, grouped by plan (most recent first), paginated by cursor (limit = plans per page, up to 20). Empty when the row is not linked. Requires view access to the Media Planner.

Alcance
media_planner:read
Permiso
Ver el módulo
Tool del MCP
media_planner_comments_historyEn la superficie completa; en la compacta, mb_execute_operation con id: "media_planner.comments.history".

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

Parámetros

plan_idstringrutarequerido

The current plan: the history comes from plans that started before it.

campaign_idstringqueryopcional

A linked row of the plan (its real campaign id is looked up).

mapped_campaign_idstringqueryopcional

The real campaign id on the ad platform (instead of campaign_id).

limitintegerqueryopcional

Previous plans per page.

Por defecto: 6

cursorstringqueryopcional

next_cursor of the previous page of this same history.

Respuesta

dataarray<object>
has_moreboolean
next_cursorstring

Errores

Ejemplo

curl "https://api.mb-suite.com/v1/media-planner/plans/{plan_id}/comments/history" \
  -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/media-planner/plans/{plan_id}/comments/history" \
  -H "Authorization: Bearer $MB_TEST_KEY"