Menú

Referencia de la API · Inbox

Puestos del Equipo IA

social_inbox · positions · 7 operaciones

GET/v1/social-inbox/positions

List the AI team of the Social Inbox

social_inbox.positions.list

LecturaIdempotenteDesde 2026-11-01

Lists the AI team positions of the inbox in table order: AI Community Managers and the Sentiment Analyst, with their mode, territory, schedule (timezone, days, out_of_hours), escalations (escalate_on_complaint and escalate_on), whether they are enabled, the name of their AI brain (ai_agent_name) and who created and last edited them (created_by_name, updated_by_name). Archived positions are left out unless include_archived (they come last, with status archived). assignee_uid (ai-<position_id>, Community Managers only) is the virtual user to assign threads to with social_inbox.items.assign. Requires view access to the Social Inbox.

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

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

Parámetros

include_archivedbooleanqueryopcional

Also list archived positions (out of the table and the engine; they keep their history), after the active ones. Default false.

Por defecto: false

Respuesta

dataarray<object>

Errores

Ejemplo

curl "https://api.mb-suite.com/v1/social-inbox/positions" \
  -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/social-inbox/positions" \
  -H "Authorization: Bearer $MB_TEST_KEY"
GET/v1/social-inbox/positions/{position_id}

Get one AI team position of the Social Inbox

social_inbox.positions.get

LecturaIdempotenteDesde 2026-11-01

Returns one active AI team position of the inbox with its full configuration (mode, territory, schedule with out_of_hours, escalate_on_complaint and escalate_on, instructions), the name of its AI brain (ai_agent_name), who created and last edited it (created_by_name, updated_by_name) and, for a Community Manager, assignee_uid. 404 inbox_position_not_found if it does not exist or was archived (archived ones come in social_inbox.positions.list with include_archived). Requires view access.

Alcance
social_inbox:read
Permiso
Ver el módulo
Tool del MCP
social_inbox_positions_getEn la superficie completa; en la compacta, mb_execute_operation con id: "social_inbox.positions.get".

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

Parámetros

position_idstringrutarequerido

The position id (from social_inbox.positions.list).

Respuesta

idstring

The position id.

typeenum

community_manager (answers as the brand) or sentiment_analyst (classifies sentiment and spam; one per organization).

Valores: community_manager, sentiment_analyst

namestring

Its name.

enabledboolean

Whether it is working (it uses AI on every new item while enabled).

ai_agent_idstring | null

Its AI brain: an agent of ai.agents.list or a system agent (sys_…); null = the default one.

statusstring | null

active or archived (archived positions come only with include_archived).

ordernumber | null

Its place in the table: it breaks territory ties between Community Managers.

ai_agent_namestring | null

The name of that AI brain (null when it uses the default one or the agent no longer exists).

modestring | null

Community Manager: suggest_draft (leaves a suggested reply) or auto_reply (publishes by itself).

scopeobject | null

Source → false excludes it. Absent = every source.

account_idsarray<string> | null

Only these connected accounts.

post_modestring | null

all, include (only post_ids) or exclude (all but post_ids).

post_idsarray<string> | null

The posts of post_mode.

sentimentsarray<string> | null

Only items with these sentiments (needs the Sentiment Analyst on). Absent = any.

scheduleobject | null

Community Manager only: its working hours (IANA timezone; days as {day mon…sun, from HH:mm, to HH:mm}, several per day allowed, from later than to crosses midnight) and out_of_hours (skip, draft_only or reply). Absent = always within hours.

escalate_on_complaintboolean | null

Community Manager: hand complaints to a person (needs the Sentiment Analyst).

escalate_onobject | null

Community Manager only: the escalations its AI brain decides while drafting (price, personal_data, unknown_language; only the ones turned on come, as true). Absent = none of them.

instructionsstring | null

Extra instructions for its AI brain.

assignee_uidstring

Community Manager only: ai-<position_id>, the virtual user to assign threads to it (social_inbox.items.assign).

created_atnumber | null

When it was created (epoch ms).

created_by_idstring | null

Who created it.

created_by_namestring | null

The name of who created it.

updated_atnumber | null

Last edit (epoch ms).

updated_by_idstring | null

Who edited it last.

updated_by_namestring | null

The name of who edited it last.

Errores

Ejemplo

curl "https://api.mb-suite.com/v1/social-inbox/positions/{position_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 "https://api.mb-suite.com/v1/social-inbox/positions/{position_id}" \
  -H "Authorization: Bearer $MB_TEST_KEY"
POST/v1/social-inbox/positions

Create an AI team position in the Social Inbox

social_inbox.positions.create

EscrituraDesde 2026-11-01

Creates an AI team position, last in the table and turned OFF unless enabled true. A community_manager answers as the brand: mode suggest_draft (leaves a suggested reply in the composer; the default) or auto_reply (publishes by itself on the networks), within its territory (scope: source id → false excludes it, a source left out is included and an id that is not a source is 400 invalid_input; account_ids; post_mode include or exclude with post_ids; sentiments, only with the Sentiment Analyst on), its schedule (an IANA time zone that must exist; weekly slots, where from later than to crosses midnight into the next day; out_of_hours skip, draft_only or reply), its escalations (escalate_on_complaint, and escalate_on price, personal_data or unknown_language) and its instructions; ai_agent_id picks its AI brain: an agent of ai.agents.list or a system agent (null = the default one; one that does not exist is 400 ai_agent_not_found; a community_manager's must be of the social channel, or 400 ai_agent_not_eligible). The most specific territory wins (post > account > source), ties by order. A sentiment_analyst (one per organization) classifies sentiment and spam of every new item with AI. Both use AI on every new item while enabled: turning one on is a recurring AI cost, not a one-time call. A second Sentiment Analyst gives 409 analyst_exists (update the existing one); an archived one is brought back with its history. Outside the app, creating it already on (enabled true) needs a dry run and its confirm_token, like turning it on with social_inbox.positions.set_enabled; created off, it runs directly. Returns the position. Owner or admin only. With LinkedIn or TikTok, their terms limit it through the API and the MCP: what they do not allow answers 403 platform_terms_restricted (the permissions guide lists what each platform allows).

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. En esta, solo cuando: enabled is true (the new position starts using AI on every new item, a recurring cost, and a Community Manager in auto_reply mode answers on the networks by itself).

Alcance
social_inbox:write
Permiso
Editar en el módulo · Solo owner, admin
Tool del MCP
social_inbox_positions_createEn la superficie completa; en la compacta, mb_execute_operation con id: "social_inbox.positions.create".

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

Parámetros

typeenumcuerporequerido

community_manager (answers as the brand) or sentiment_analyst (classifies sentiment and spam; one per organization).

Valores: community_manager, sentiment_analyst

namestringcuerpoopcional

Its name (default: Community Manager AI or Analista de sentimiento).

enabledbooleancuerpoopcional

Whether it works on new items (it uses AI on every new item while enabled).

Por defecto: false

ai_agent_idstring | nullcuerpoopcional

Its AI brain: an agent id of ai.agents.list or a system agent (sys_…); null = the default one. One that does not exist is 400 ai_agent_not_found; a community_manager's must be of the social channel, or 400 ai_agent_not_eligible.

Por defecto: null

modeenumcuerpoopcional

Community Manager: suggest_draft (leaves a suggested reply; the default) or auto_reply (publishes by itself on the networks).

Valores: suggest_draft, auto_reply

scopeobjectcuerpoopcional

Community Manager territory: source → false excludes it, with the source ids fb_comment, fb_message, fb_mention, ig_comment, ig_message, ig_mention, li_comment, li_message, li_mention, tt_comment, tt_message; a source left out is included and absent = every source. An id that is not a source is 400 invalid_input (in an edit, unless the saved territory already had it).

account_idsarray<string>cuerpoopcional

Community Manager: only these connected accounts (account_id of social_inbox.connections.list), up to 30.

post_modeenumcuerpoopcional

Community Manager: all posts (the default), include (only post_ids) or exclude (all but post_ids).

Valores: all, include, exclude

post_idsarray<string>cuerpoopcional

The posts of post_mode (root_resource_id of their items), up to 50.

scheduleobjectcuerpoopcional

Community Manager: its working hours and what it does out of them.

sentimentsarray<enum>cuerpoopcional

Community Manager: only items with these sentiments (needs the Sentiment Analyst on); all three = any.

Valores: positive, neutral, negative

escalate_on_complaintbooleancuerpoopcional

Community Manager: hand complaints to a person (needs the Sentiment Analyst). Default true.

escalate_onobjectcuerpoopcional

The escalations its AI brain decides while drafting (only true ones count).

instructionsstringcuerpoopcional

Extra instructions for its AI brain (up to 2,000 characters).

Respuesta

position_idstring
positionobject

Errores

Ejemplo

curl -X POST "https://api.mb-suite.com/v1/social-inbox/positions" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "type": "community_manager",
  "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/social-inbox/positions" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "type": "community_manager",
  "dry_run": true
}'
PATCH/v1/social-inbox/positions/{position_id}

Update an AI team position of the Social Inbox

social_inbox.positions.update

EscrituraIdempotenteDesde 2026-11-01

Updates an AI team position: updates is applied over the saved one (its type never changes) and null removes an optional part (scope, account_ids, post_ids, schedule, sentiments, escalate_on, instructions). A community_manager answers as the brand: mode suggest_draft (leaves a suggested reply in the composer; the default) or auto_reply (publishes by itself on the networks), within its territory (scope: source id → false excludes it, a source left out is included and an id that is not a source is 400 invalid_input; account_ids; post_mode include or exclude with post_ids; sentiments, only with the Sentiment Analyst on), its schedule (an IANA time zone that must exist; weekly slots, where from later than to crosses midnight into the next day; out_of_hours skip, draft_only or reply), its escalations (escalate_on_complaint, and escalate_on price, personal_data or unknown_language) and its instructions; ai_agent_id picks its AI brain: an agent of ai.agents.list or a system agent (null = the default one; one that does not exist is 400 ai_agent_not_found; a community_manager's must be of the social channel, or 400 ai_agent_not_eligible). The most specific territory wins (post > account > source), ties by order. A sentiment_analyst (one per organization) classifies sentiment and spam of every new item with AI. Both use AI on every new item while enabled: turning one on is a recurring AI cost, not a one-time call. Switching a Community Manager to auto_reply makes it answer on the networks by itself. Outside the app, a change that turns on a position that was off (updates.enabled true) or switches a Community Manager that is on to auto_reply needs a dry run and its confirm_token, like social_inbox.positions.set_enabled; any other change runs directly. 404 inbox_position_not_found if it does not exist or was archived. Returns the position. Owner or admin only. With LinkedIn or TikTok, their terms limit it through the API and the MCP: what they do not allow answers 403 platform_terms_restricted (the permissions guide lists what each platform allows).

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. En esta, solo cuando: the change turns on a position that was off, or switches a Community Manager that is on to auto_reply (as social_inbox.positions.set_enabled with enabled true does).

Alcance
social_inbox:write
Permiso
Editar en el módulo · Solo owner, admin
Tool del MCP
social_inbox_positions_updateEn la superficie completa; en la compacta, mb_execute_operation con id: "social_inbox.positions.update".

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

Parámetros

position_idstringrutarequerido

The position id (from social_inbox.positions.list).

updatesobjectcuerporequerido

What changes, applied over the saved position; null on scope, account_ids, post_ids, schedule, sentiments, escalate_on or instructions removes it. The type never changes.

Respuesta

positionobject

Errores

Ejemplo

curl -X PATCH "https://api.mb-suite.com/v1/social-inbox/positions/{position_id}" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "updates": {},
  "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 PATCH "https://api.mb-suite.com/v1/social-inbox/positions/{position_id}" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "updates": {},
  "dry_run": true
}'
POST/v1/social-inbox/positions/{position_id}/enabled

Turn an AI team position on or off

social_inbox.positions.set_enabled

EscrituraIdempotenteDesde 2026-11-01

Turns an AI team position on (enabled true: it starts acting on new items, using AI on every new item from then on: a recurring cost; a Community Manager in auto_reply mode also answers on the networks by itself) or off (false) without touching the rest of its configuration. Outside the app, turning one on needs a dry run and its confirm_token; turning it off runs directly. 404 inbox_position_not_found if it does not exist or was archived. Returns the position. Owner or admin only. With LinkedIn or TikTok, their terms limit it through the API and the MCP: what they do not allow answers 403 platform_terms_restricted (the permissions guide lists what each platform allows).

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. En esta, solo cuando: enabled is true (from then on the position uses AI on every new item, a recurring cost, and a Community Manager in auto_reply mode answers on the networks by itself).

Alcance
social_inbox:write
Permiso
Editar en el módulo · Solo owner, admin
Tool del MCP
social_inbox_positions_set_enabledEn la superficie completa; en la compacta, mb_execute_operation con id: "social_inbox.positions.set_enabled".

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

Parámetros

position_idstringrutarequerido

The position id (from social_inbox.positions.list).

enabledbooleancuerporequerido

true turns it on (it then uses AI on every new item), false off.

Respuesta

positionobject

Errores

Ejemplo

curl -X POST "https://api.mb-suite.com/v1/social-inbox/positions/{position_id}/enabled" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "enabled": true,
  "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/social-inbox/positions/{position_id}/enabled" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "enabled": true,
  "dry_run": true
}'
POST/v1/social-inbox/positions/reorder

Reorder the AI team of the Social Inbox

social_inbox.positions.reorder

EscrituraIdempotenteDesde 2026-11-01

Sets the table order of the AI team: position_ids in the new order (position = index). The order breaks ties when two Community Managers cover the same item with the same specificity. Ids that no longer exist are skipped. Owner or admin only.

Alcance
social_inbox:write
Permiso
Editar en el módulo · Solo owner, admin
Tool del MCP
social_inbox_positions_reorderEn la superficie completa; en la compacta, mb_execute_operation con id: "social_inbox.positions.reorder".

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

Parámetros

position_idsarray<string>cuerporequerido

Every position id in the new order (from social_inbox.positions.list): position = index; ids that no longer exist are skipped.

Respuesta

updatednumber
skippednumber

Errores

Ejemplo

curl -X POST "https://api.mb-suite.com/v1/social-inbox/positions/reorder" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "position_ids": [
    "POSITION_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/social-inbox/positions/reorder" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "position_ids": [
    "POSITION_ID"
  ]
}'
POST/v1/social-inbox/positions/{position_id}/archive

Archive an AI team position of the Social Inbox

social_inbox.positions.archive

EscrituraIdempotenteDesde 2026-11-01

Archives an AI team position: it is turned off and leaves the table and the engine; its history stays and the threads it handled keep their assignment. Archiving an archived position changes nothing (changed false). An archived Sentiment Analyst comes back with social_inbox.positions.create. Archived positions are not deleted (neither from the screen): social_inbox.positions.list shows them with include_archived. 404 inbox_position_not_found if it does not exist. Owner or admin only.

Alcance
social_inbox:write
Permiso
Editar en el módulo · Solo owner, admin
Tool del MCP
social_inbox_positions_archiveEn la superficie completa; en la compacta, mb_execute_operation con id: "social_inbox.positions.archive".

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

Parámetros

position_idstringrutarequerido

The position id (from social_inbox.positions.list).

Respuesta

oktrue
changedboolean

Errores

Ejemplo

curl -X POST "https://api.mb-suite.com/v1/social-inbox/positions/{position_id}/archive" \
  -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 POST "https://api.mb-suite.com/v1/social-inbox/positions/{position_id}/archive" \
  -H "Authorization: Bearer $MB_TEST_KEY"