Menu

Referência da API · Inbox

Cargos da Equipe IA

social_inbox · positions · 7 operações

GET/v1/social-inbox/positions

List the AI team of the Social Inbox

social_inbox.positions.list

LeituraIdempotenteDesde 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.

Escopo
social_inbox:read
Permissão
Ver o módulo
Tool do MCP
social_inbox_positions_listNa superfície completa; na compacta, mb_execute_operation com id: "social_inbox.positions.list".

Custo declarado: até 110 leituras e 0 escritas por chamada (contam na cota diária).

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.

Padrão: false

Resposta

dataarray<object>

Erros

Exemplo

curl "https://api.mb-suite.com/v1/social-inbox/positions" \
  -H "Authorization: Bearer $MB_API_KEY"

Testar com a sua API key de teste

Com uma API key de teste o pedido vai sempre para a sua organização de prática: dados de exemplo que você pode 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

LeituraIdempotenteDesde 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.

Escopo
social_inbox:read
Permissão
Ver o módulo
Tool do MCP
social_inbox_positions_getNa superfície completa; na compacta, mb_execute_operation com id: "social_inbox.positions.get".

Custo declarado: até 6 leituras e 0 escritas por chamada (contam na cota diária).

Parâmetros

position_idstringrotaobrigatório

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

Resposta

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.

Erros

Exemplo

curl "https://api.mb-suite.com/v1/social-inbox/positions/{position_id}" \
  -H "Authorization: Bearer $MB_API_KEY"

Testar com a sua API key de teste

Com uma API key de teste o pedido vai sempre para a sua organização de prática: dados de exemplo que você pode 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

EscritaDesde 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).

Pede confirmação: primeiro dry_run: true (prévia e confirm_token, válido por 10 minutos e por uma única execução), depois o mesmo corpo com confirm_token. Em algumas poucas, só com certos dados: a descrição diz quando. Por que e como: Prévia e confirmação. Nesta, só quando: 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).

Escopo
social_inbox:write
Permissão
Editar no módulo · Só owner, admin
Tool do MCP
social_inbox_positions_createNa superfície completa; na compacta, mb_execute_operation com id: "social_inbox.positions.create".

Custo declarado: até 52 leituras e 1 escritas por chamada (contam na cota diária).

Parâmetros

typeenumcorpoobrigatório

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

Valores: community_manager, sentiment_analyst

namestringcorpoopcional

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

enabledbooleancorpoopcional

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

Padrão: false

ai_agent_idstring | nullcorpoopcional

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.

Padrão: null

modeenumcorpoopcional

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

Valores: suggest_draft, auto_reply

scopeobjectcorpoopcional

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>corpoopcional

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

post_modeenumcorpoopcional

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

Valores: all, include, exclude

post_idsarray<string>corpoopcional

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

scheduleobjectcorpoopcional

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

sentimentsarray<enum>corpoopcional

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

Valores: positive, neutral, negative

escalate_on_complaintbooleancorpoopcional

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

escalate_onobjectcorpoopcional

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

instructionsstringcorpoopcional

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

Resposta

position_idstring
positionobject

Erros

Exemplo

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
}'

Testar com a sua API key de teste

Com uma API key de teste o pedido vai sempre para a sua organização de prática: dados de exemplo que você pode 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

EscritaIdempotenteDesde 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).

Pede confirmação: primeiro dry_run: true (prévia e confirm_token, válido por 10 minutos e por uma única execução), depois o mesmo corpo com confirm_token. Em algumas poucas, só com certos dados: a descrição diz quando. Por que e como: Prévia e confirmação. Nesta, só quando: 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).

Escopo
social_inbox:write
Permissão
Editar no módulo · Só owner, admin
Tool do MCP
social_inbox_positions_updateNa superfície completa; na compacta, mb_execute_operation com id: "social_inbox.positions.update".

Custo declarado: até 2 leituras e 1 escritas por chamada (contam na cota diária).

Parâmetros

position_idstringrotaobrigatório

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

updatesobjectcorpoobrigatório

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.

Resposta

positionobject

Erros

Exemplo

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
}'

Testar com a sua API key de teste

Com uma API key de teste o pedido vai sempre para a sua organização de prática: dados de exemplo que você pode 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

EscritaIdempotenteDesde 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).

Pede confirmação: primeiro dry_run: true (prévia e confirm_token, válido por 10 minutos e por uma única execução), depois o mesmo corpo com confirm_token. Em algumas poucas, só com certos dados: a descrição diz quando. Por que e como: Prévia e confirmação. Nesta, só quando: 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).

Escopo
social_inbox:write
Permissão
Editar no módulo · Só owner, admin
Tool do MCP
social_inbox_positions_set_enabledNa superfície completa; na compacta, mb_execute_operation com id: "social_inbox.positions.set_enabled".

Custo declarado: até 1 leituras e 1 escritas por chamada (contam na cota diária).

Parâmetros

position_idstringrotaobrigatório

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

enabledbooleancorpoobrigatório

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

Resposta

positionobject

Erros

Exemplo

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
}'

Testar com a sua API key de teste

Com uma API key de teste o pedido vai sempre para a sua organização de prática: dados de exemplo que você pode 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

EscritaIdempotenteDesde 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.

Escopo
social_inbox:write
Permissão
Editar no módulo · Só owner, admin
Tool do MCP
social_inbox_positions_reorderNa superfície completa; na compacta, mb_execute_operation com id: "social_inbox.positions.reorder".

Custo declarado: até 50 leituras e 50 escritas por chamada (contam na cota diária).

Parâmetros

position_idsarray<string>corpoobrigatório

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

Resposta

updatednumber
skippednumber

Erros

Exemplo

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"
  ]
}'

Testar com a sua API key de teste

Com uma API key de teste o pedido vai sempre para a sua organização de prática: dados de exemplo que você pode 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

EscritaIdempotenteDesde 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.

Escopo
social_inbox:write
Permissão
Editar no módulo · Só owner, admin
Tool do MCP
social_inbox_positions_archiveNa superfície completa; na compacta, mb_execute_operation com id: "social_inbox.positions.archive".

Custo declarado: até 1 leituras e 1 escritas por chamada (contam na cota diária).

Parâmetros

position_idstringrotaobrigatório

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

Resposta

oktrue
changedboolean

Erros

Exemplo

curl -X POST "https://api.mb-suite.com/v1/social-inbox/positions/{position_id}/archive" \
  -H "Authorization: Bearer $MB_API_KEY"

Testar com a sua API key de teste

Com uma API key de teste o pedido vai sempre para a sua organização de prática: dados de exemplo que você pode reiniciar.

curl -X POST "https://api.mb-suite.com/v1/social-inbox/positions/{position_id}/archive" \
  -H "Authorization: Bearer $MB_TEST_KEY"