Menú

Recursos

Errores

Todas las respuestas de error tienen la misma forma. El doc_url de cada error apunta a su código en esta página.

Tipos de error

invalid_request400El pedido está mal armado: JSON inválido, un campo que no cumple el schema o un encabezado con un valor que no corresponde. param nombra el campo cuando aplica. No reintentes sin corregirlo.
authentication401Falta la credencial, no es válida o ya no sirve (revocada, vencida, suspendida). La respuesta trae WWW-Authenticate. Revisa la API key o renueva el token.
payment_required402La suscripción de la organización está bloqueada por falta de pago: la API y el MCP quedan en pausa hasta regularizarla.
permission403La credencial es válida pero no alcanza: a la persona detrás le falta el permiso o el rol (role_required), a la credencial le falta el alcance, el módulo no está activo, la API y el MCP no están habilitados (platform_not_enabled) o la suscripción no los incluye (platform_requires_paid_plan), o la organización es de demostración (demo_read_only). Pedir de nuevo no cambia nada.
not_found404No existe en esta organización, o tu credencial no lo puede ver; una cuenta externa que no está vinculada responde external_account_not_linked. Nunca decimos si un registro de otra organización existe: para ti, no existe.
conflict409El estado no permite la operación: el del registro (ya se restauró, ya está en curso), un tope (limit_reached), la integración (integration_not_connected, integration_reconnect_required) o la plataforma externa, que lo rechazó (external_rejected) o no confirmó un envío (external_outcome_unknown). El code dice cuál; algunos traen details. Se guarda en la idempotencia: con la misma clave vuelve la misma respuesta.
confirmation_required409La operación pide confirmación (es masiva, irreversible, manda o cambia algo fuera de MB Suite, tiene un costo aparte o es de las que la piden siempre): primero dry_run: true, después el mismo pedido con el confirm_token.
idempotency422La Idempotency-Key (en el MCP, idempotency_key) ya se usó con otro pedido. Usa una clave nueva para un pedido nuevo.
rate_limit429Un freno: la ráfaga de tu credencial (rate_limited), el tope diario o la espera de una acción manual (daily_limit_reached, cooldown_active) o la plataforma externa, que está limitando (external_rate_limited). Espera lo que dice Retry-After (segundos) y reintenta.
quota429La organización llegó a su cupo diario. Se reinicia a las 00:00 UTC; details.quota dice cuál y cuándo.
maintenance503La plataforma o el módulo están en mantenimiento. Reintenta después de Retry-After.
unavailable503Un servicio que la operación necesita no está disponible ahora: la plataforma externa no contesta (external_unavailable), el servicio de PDF está caído (pdf_unavailable) o la base de MB Suite no contestó al comprobar la credencial (platform_unavailable). No cambió nada y no se guarda en la idempotencia: reintenta después de Retry-After con la misma clave.
upstream502La IA no devolvió un resultado que sirva (ai_generation_failed): vacío, fuera de formato o cortado. No se guardó nada y no se guarda en la idempotencia. Los SDK no lo reintentan solos: reintentarlo vuelve a llamar a la IA (y gasta créditos si responde).
internal500Algo falló de nuestro lado (lo de un tercero nunca es un 500: tiene su propio código); ya quedó registrado. Reintenta con backoff y, si se repite, escríbenos con el request_id.

Códigos de la plataforma

bearer_missing401 authenticationFalta Authorization: Bearer …. Manda tu API key (mbs_live_…) o tu token de acceso (mbo_…).
bearer_invalid401 authenticationEl bearer no es una API key de MB Suite (mbs_…) ni un token de acceso (mbo_…). Revisa que no falte el prefijo.
api_key_missing401 authenticationLa API key no tiene el formato de MB Suite: mbs_live_ seguido de 46 caracteres (las creadas antes del 10-10-2026 tienen 40 y siguen valiendo).
api_key_invalid401 authenticationLa API key no existe o se copió incompleta. La API key se muestra una sola vez: si la perdiste, crea otra.
api_key_revoked401 authenticationLa API key fue revocada y no vuelve. Crea una nueva en Configuración → API y MCP → API keys. En la pantalla, el mismo código responde 409 si intentas editar una API key revocada.
api_key_suspended401 authenticationLa API key está suspendida: alguien la suspendió, o la persona a la que representa dejó la organización. Un owner o admin puede reactivarla.
api_key_expired401 authenticationLa API key llegó a su fecha de vencimiento. Edítala con un vencimiento nuevo o crea otra.
api_key_rotated_out401 authenticationLa API key se rotó y terminaron sus 24 horas de gracia. Usa la API key nueva.
api_key_user_disabled401 authenticationLa persona a la que representa la API key está deshabilitada en MB Suite.
oauth_token_invalid401 authenticationEl token de acceso no es válido.
oauth_token_expired401 authenticationEl token de acceso dura 1 hora. Renuévalo con el refresh_token o vuelve a autorizar.
oauth_token_revoked401 authenticationLa autorización se revocó: alguien la desconectó, la persona dejó la organización o se reusó un refresh_token viejo. Vuelve a autorizar.
oauth_token_wrong_resource401 authenticationEl token se pidió para otro recurso (resource): uno emitido para el MCP no sirve en la API, ni al revés. Autoriza de nuevo con el resource de esta puerta.
oauth_user_disabled401 authenticationLa persona que autorizó la app está deshabilitada en MB Suite.
authentication_required401 authenticationLa operación necesita una credencial.
session_required401 authenticationLa acción necesita una sesión iniciada en MB Suite. Solo aparece en la pantalla de MB Suite.
permission_denied403 permissionLa persona detrás de la credencial no tiene permiso para esta operación.
crm_action_denied403 permissionLa matriz de permisos del CRM no le permite esa acción a la persona detrás de la credencial; param dice cuál (por ejemplo delete_deal). Una API key nunca puede más que su persona.
module_access_denied403 permissionLa persona no tiene el acceso que pide la operación a ese módulo en esta organización, o el módulo no está activo. details.module dice cuál: puede ser otro módulo que la operación también necesita (un informe del CRM, enviar al Planner).
scope_insufficient403 permissionA la credencial le falta el alcance que pide la operación (<módulo>:read o <módulo>:write). Edita la API key; con OAuth, vuelve a autorizar la app y activa «Lectura y escritura» (o la fila del módulo sensible) en el consentimiento: escribir viene apagado aunque la app lo pida.
delete_not_allowed403 permissionLa credencial no puede borrar. Activa «Permitir eliminar» en la API key, o pide <módulo>:delete al autorizar con OAuth.
role_required403 permissionSolo algunos roles corren esta operación: details.roles dice cuáles (owner, admin, member, crm_admin) y details.scope dónde se mira el rol: en la organización del pedido (organization), solo como miembro directo de ella (direct: el acceso que llega desde el workspace no cuenta) o en el workspace de la Cuenta (workspace).
demo_read_only403 permissionLa organización es de demostración: sus datos son de ejemplo y solo se leen. Nada se escribe ni sale a otra plataforma.
organization_archived403 permissionLa organización está archivada: solo se puede leer.
organization_suspended403 permissionMB Suite suspendió el workspace (o la agencia de la que depende la Cuenta) por incumplir sus Términos y Condiciones: la API y el MCP no responden y nada se escribe. No es de cobro. Si crees que es un error, escribe a support@mb-suite.com.
platform_disabled403 permissionMB Suite no tiene abiertos la API y el MCP para esta organización o para esta persona (un acceso anticipado que no la incluye, o una pausa general). No depende de la organización: si crees que es un error, escribe a support@mb-suite.com.
platform_not_enabled403 permissionLa API y el MCP no están habilitados en esta organización. Los habilita un owner o un admin en Configuración → API y MCP; en una Cuenta, desde su workspace. Mientras tanto, ninguna API key ni app conectada responde y los webhooks no envían eventos.
platform_requires_paid_plan403 permissionLa API y el MCP están disponibles en las suscripciones pagas activas. La suscripción que rige para esta organización está en la prueba gratis (o no hay una): funcionan cuando esté paga, en Configuración → Suscripción. En una Cuenta rige la suscripción de quien la paga: su workspace, o la Cuenta misma si paga su propio plan. details.plan dice si es la prueba gratis (trial) o si no hay suscripción (no_plan).
connected_content_not_granted403 permissionLa organización permite «Correo y calendario conectados», pero esta credencial no lo trae concedido. Edita la API key o autoriza la app de nuevo con ese permiso.
child_keys_not_allowed403 permissionLa agencia no le permitió a esta Cuenta tener API keys propias. Se permiten desde el workspace: Partners → Ver permisos.
test_keys_not_available403 permissionRetirado: ya no se emite. Las API keys de prueba (mbs_test_…) funcionan y operan sobre la organización de práctica del workspace.
support_user_required403 permissionSolo el equipo de soporte de MB Suite. Solo aparece en la pantalla de MB Suite.
key_user_above_manager403 permissionNo puedes crear, editar, rotar ni reactivar una API key a nombre de alguien con un rol más alto que el tuyo. Solo aparece en la pantalla de MB Suite.
route_not_found404 not_foundNingún endpoint responde a ese método y esa ruta. Revisa la referencia o GET /v1/openapi.json.
operation_not_found404 not_foundLa operación no existe para esta credencial: no está en el catálogo, la organización no la tiene, o no es para credenciales externas. Si existe pero a la credencial le falta el alcance, el borrado o el rol, la respuesta es un 403 con lo que falta (scope_insufficient, delete_not_allowed, role_required).
organization_not_found404 not_foundEsa organización no existe o tu credencial no la alcanza (MB-Organization u org_id de una Cuenta fuera de su alcance).
not_found404 not_foundEl registro pedido no existe en esta organización.
trash_item_not_found404 not_foundEse elemento ya no está en la papelera (se restauró, se purgó o pasaron los 30 días) o, si lo pediste por entity_type + entity_id, no hay una copia de ese registro.
webhook_not_found404 not_foundNo hay un webhook con ese id en esta organización.
delivery_not_found404 not_foundNo hay una entrega con ese id para ese webhook.
api_key_not_found404 not_foundLa API key ya no existe. Solo aparece en la pantalla de MB Suite.
sandbox_not_found404 not_foundEl workspace todavía no tiene organización de práctica: nace con la primera API key de prueba (Configuración → API y MCP → API keys, entorno Prueba). Si una API key de prueba lo recibe, créala de nuevo.
invalid_input400 invalid_requestEl input no cumple el schema de la operación. param nombra el primer campo que falló y details.issues, cada problema (hasta 10).
unknown_field400 invalid_requestEl input trae un campo que la operación no tiene (un filtro mal escrito, un campo en otro lugar): se rechaza en vez de ignorarse, así una lista nunca vuelve sin filtrar. param nombra el primero y details.unknown_fields, todos. Los mapas (campos personalizados, encabezados) aceptan cualquier clave.
invalid_cursor400 invalid_requestEl cursor no es válido para esta lista: se cambió, se cortó o no es de ella (param es cursor). Manda next_cursor tal como vino, a la misma lista, o empieza de nuevo sin cursor.
invalid_json400 invalid_requestEl cuerpo no es JSON válido, o no es un objeto.
body_too_large400 invalid_requestEl cuerpo supera 1 MB.
unsupported_media_type400 invalid_requestManda el cuerpo como JSON con Content-Type: application/json.
method_not_allowed400 invalid_requestEsa ruta no acepta ese método. El encabezado Allow dice cuáles acepta.405 con Allow si la ruta existe con otro método; 400 si el método no es GET, POST, PATCH ni DELETE.
dry_run_not_supported400 invalid_requestLlegó dry_run en una lectura: una lectura no cambia nada y no tiene qué previsualizar. Llámala sin dry_run. En cualquier escritura, por la API y por el MCP, dry_run: true devuelve la vista previa (la propia de la operación o la genérica) sin escribir nada, y su needs_confirmation dice si ejecutarla pide el confirm_token.
idempotency_key_invalid400 invalid_requestLa Idempotency-Key está vacía o tiene más de 255 caracteres.
api_version_invalid400 invalid_requestMB-Version tiene que ser una fecha AAAA-MM-DD, como la versión vigente.
api_version_unsupported400 invalid_requestEsa versión no está viva. Las versiones vivas están en el registro de cambios.
scope_empty400 invalid_requestLa API key necesita al menos un módulo con lectura o escritura. Solo aparece en la pantalla de MB Suite.
scope_unknown_module400 invalid_requestUno de los módulos pedidos no tiene operaciones para API keys. Solo aparece en la pantalla de MB Suite.
child_scope_agency_only400 invalid_requestSolo una API key de workspace puede alcanzar Cuentas. Solo aparece en la pantalla de MB Suite.
child_scope_not_allowed400 invalid_requestSolo un workspace puede trabajar o escuchar en sus Cuentas. Solo aparece en la pantalla de MB Suite.
child_scope_unknown400 invalid_requestAlguna de esas Cuentas no es de este workspace. Solo aparece en la pantalla de MB Suite.
connected_content_disabled400 invalid_requestLa organización no permite «Correo y calendario conectados»: un owner lo activa en la pestaña API keys. Solo aparece en la pantalla de MB Suite.
key_user_not_member400 invalid_requestLa persona elegida no es miembro de esta organización. Solo aparece en la pantalla de MB Suite.
test_keys_workspace_only400 invalid_requestLas API keys de prueba se crean en un workspace: trabajan en su organización de práctica (una Cuenta no tiene práctica propia). Solo aparece en la pantalla de MB Suite.
test_key_no_accounts400 invalid_requestUna API key de prueba trabaja solo en la organización de práctica: no alcanza Cuentas. Solo aparece en la pantalla de MB Suite.
test_key_no_connected_content400 invalid_requestLa organización de práctica no tiene correo ni calendario conectados: una API key de prueba no lleva ese permiso. Solo aparece en la pantalla de MB Suite.
test_key_user_not_admin400 invalid_requestUna API key de prueba actúa como un owner o admin del workspace: son quienes entran a la organización de práctica. Solo aparece en la pantalla de MB Suite.
webhook_url_invalid400 invalid_requestLa dirección del webhook no es una URL válida. Solo aparece en la pantalla de MB Suite.
webhook_url_not_https400 invalid_requestLa dirección del webhook tiene que empezar con https://. Solo aparece en la pantalla de MB Suite.
webhook_url_credentials400 invalid_requestLa dirección del webhook no puede llevar usuario ni contraseña: usa un encabezado fijo. Solo aparece en la pantalla de MB Suite.
webhook_url_blocked_host400 invalid_requestEse host no puede ser destino de un webhook. Solo aparece en la pantalla de MB Suite.
webhook_url_own_host400 invalid_requestLas direcciones de MB Suite no pueden ser destino de un webhook. Solo aparece en la pantalla de MB Suite.
webhook_url_private_ip400 invalid_requestEl destino resuelve a una dirección privada o interna. Un webhook va a un servidor público. Solo aparece en la pantalla de MB Suite.
webhook_url_unresolvable400 invalid_requestEl host del destino no resuelve en DNS. Solo aparece en la pantalla de MB Suite.
confirmation_required409 confirmation_requiredLa operación pide confirmación (es masiva, irreversible, manda o cambia algo fuera de MB Suite, tiene un costo aparte o es de las que la piden siempre): corre primero con dry_run: true y repite el mismo pedido con el confirm_token (10 minutos, una sola vez: ver confirm_token_used). details.reason dice si el token venció (expired), no corresponde a esta operación, input, persona y credencial (mismatch) o vino mal (malformed). Si la pide porque algo sale afuera o paga, sin token trae details.reason: token_required, details.external (la plataforma) y details.effect (sends, sends_later o pays); unas pocas la piden solo con ciertos datos (x-mb-confirm-when).
confirm_token_used409 confirmation_requiredEse confirm_token ya se usó: cada uno ejecuta la operación una sola vez, también si esa corrida falló después de empezar (pudo haber hecho algo). Pide de nuevo la vista previa (dry_run: true) y ejecuta con el token nuevo. Para reintentar un pedido sin riesgo de repetirlo, mándalo con la misma Idempotency-Key (en el MCP, idempotency_key): el reintento devuelve el resultado guardado en vez de volver a correr. details.reason es reused.
idempotency_in_progress409 conflictOtro pedido con la misma Idempotency-Key (en el MCP, idempotency_key) todavía está corriendo. Reintenta en unos segundos (Retry-After).
idempotency_response_unavailable409 conflictEl pedido original ya corrió, pero su respuesta no quedó guardada (era demasiado grande o no se pudo guardar): lee el recurso en vez de repetir el pedido.
webhook_inactive409 conflictEl webhook está apagado: reactívalo para reenviar entregas.
platform_switch_is_workspace409 conflictLa API y el MCP se habilitan desde el workspace, no desde una Cuenta: valen para todas sus Cuentas. Solo aparece en la pantalla de MB Suite.
module_has_own_switch409 conflict«API y MCP» no se activa ni se desactiva como los demás módulos: tiene su propio interruptor. Lo habilita o lo apaga un owner o un admin del workspace en Configuración → API y MCP (con una suscripción paga activa), y vale para todas sus Cuentas. organizations.modules.list lo marca con blocked_reason: own_switch.
api_key_already_rotated409 conflictLa API key ya se rotó: usa la nueva. Solo aparece en la pantalla de MB Suite.
api_key_not_active409 conflictLa API key no está activa para esa acción. Solo aparece en la pantalla de MB Suite.
api_key_not_suspended409 conflictSolo se reactiva una API key suspendida. Solo aparece en la pantalla de MB Suite.
trash_item_already_restored409 conflictEse elemento ya se restauró.
trash_item_purged409 conflictEse elemento se purgó de la papelera y no se puede restaurar.
trash_item_expired409 conflictPasaron los 30 días de la papelera: el elemento ya no se restaura.
trash_item_not_restorable409 conflictLa copia no se restaura automáticamente: es la de un registro absorbido en una fusión (details.reason: merged) o una copia de consulta (reference_only), que se guarda para mirarla, no para devolverla. La lista de la papelera lo dice antes, con restorable: false y not_restorable_reason.
label_pool_unknown409 conflictLa etiqueta de la papelera pertenece a un tipo de registro que ya no existe.
trash_restore_parent_missing409 conflictLo que tenía ese elemento ya no existe (el plan de una campaña, la tarea o la publicación de un comentario, el proyecto de una keyword): no se escribió nada. Si está en la papelera, details.parent_trash_item_id dice cuál restaurar primero; con details.parent_restorable: false ya no puede volver, y este elemento tampoco (la lista de la papelera lo muestra con not_restorable_reason: parent_gone).
sandbox_external_unavailable409 conflictLa llamada fue a la organización de práctica (una API key de prueba) y esta operación toca otra plataforma sin simulación: ahí no corre, nunca sale nada. details.operation_id dice cuál. Las que sí se simulan responden con simulated: true; la lista está en practice de GET /v1/me.
integration_not_connected409 conflictLa organización (o la persona, si es su correo o su calendario) no tiene conectada la integración que la operación necesita. details.platform dice cuál (google_ads, meta_ads, google_business_profile, google_search_console, whatsapp, mailbox, calendar…). Conéctala en Configuración → Integraciones (en el workspace, si la Cuenta la hereda) y vuelve a pedir. No se consultó a la plataforma.
integration_reconnect_required409 conflictLa conexión existe pero ya no sirve: el token venció o se revocó (details.reason: expired), la cuenta conectada perdió el acceso a lo pedido (access_lost), le falta un permiso (missing_permission), no es la cuenta que corresponde (wrong_account) o le falta un dato (incomplete). Reconéctala en Configuración → Integraciones; reintentar sin eso no cambia nada.
external_account_not_linked404 not_foundLa cuenta, ficha, propiedad o línea externa del pedido (una cuenta de Ads, una ficha de Business Profile, una propiedad de Search Console) no está vinculada a esta organización: details.platform dice de qué plataforma y param, qué campo. Usa una de las que lista el módulo; se vinculan en Configuración → Fuentes de datos. No se consultó a la plataforma.
external_rejected409 conflictLa plataforma externa contestó que no: un dato que no acepta, una cuenta deshabilitada o una regla suya. details.platform dice cuál, details.provider_code trae su código (o null) y, cuando no expone nada interno, details.provider_message su texto. Reintentar igual no cambia nada (con la misma Idempotency-Key vuelve esta respuesta): corrige lo que dice y manda el pedido con una clave nueva.
external_unavailable503 unavailableLa plataforma externa no contesta ahora (una caída, la red o se agotó el tiempo). No cambió nada y no se guarda en la idempotencia: reintenta después de Retry-After (también en details.retry_after) con la misma clave. details.platform dice cuál.
external_rate_limited429 rate_limitLa plataforma externa está limitando los pedidos (su propio cupo por minuto o por día). No cambió nada: espera Retry-After y reintenta. details.platform dice cuál. No es un freno de MB Suite ni gasta tu cupo.
external_global_limit429 rate_limitMB Suite entera llegó al tope de hoy de pedidos a esa plataforma por la API y el MCP (el cupo de algunas plataformas es uno solo para todas las organizaciones). No es el cupo de tu organización y no cambió nada: se libera a las 00:00 UTC; Retry-After (también details.retry_after) dice cuánto falta y details.platform cuál es.
platform_terms_restricted403 permissionLos términos de esa plataforma no dejan usar sus datos o su API por esta vía. En la pantalla de MB Suite funciona como siempre. details.platform dice cuál (la del pedido, como google_ads o linkedin_page), details.network su red (google_ads, google_business_profile, linkedin, linkedin_members —los comentarios, las menciones y el resto del contenido de sus miembros—, tiktok o youtube) y details.access qué deja: none (ninguna credencial) u own_key (solo una API key de la organización por la API REST, no el MCP ni una app conectada). La guía Permisos y alcances lista las plataformas.
external_outcome_unknown409 conflictUn envío o una escritura que no se puede repetir sin efecto (un correo, un WhatsApp, un SMS, una publicación) llegó a la plataforma y no hubo respuesta: se agotó el tiempo, se cortó la conexión o la plataforma falló de su lado. Puede haber salido. No se reintenta solo (por eso es 409 y no 503): revisa si salió (la conversación, el historial de envíos) antes de mandarlo de nuevo con una Idempotency-Key nueva. details.platform dice cuál.
limit_reached409 conflictSe llegó a un tope de cantidad o de espacio, del plan o del módulo: details.resource dice de qué (accounts, labels, api_keys, webhooks, jobs, storage…) y details.limit cuánto (algunos suman used, requested o period; el almacenamiento lleno, storage, va en bytes y suma remaining_bytes y requested_bytes). Libera espacio (borra, archiva o desactiva), espera a que termine o sube de plan, y vuelve a pedir con una Idempotency-Key nueva.
daily_limit_reached429 rate_limitUna acción manual por la API o el MCP tiene un tope cada 24 horas (auditorías, chequeos de enlaces…) y se alcanzó: details.limit dice cuántas y Retry-After (también details.retry_after) cuándo se libera la próxima. Lo programado sigue corriendo.
cooldown_active429 rate_limitLa misma acción manual corrió hace un momento (una sincronización, un análisis, una prueba, un reenvío) y tiene una espera mínima: details.resource dice cuál. Espera lo que dice Retry-After (también details.retry_after) y vuelve a pedir.
ai_generation_failed502 upstreamLa IA no devolvió un resultado que sirva (vacío, fuera de formato o cortado) o el modelo falló. No se guardó nada; si la operación cobra créditos, el mensaje dice si se devolvieron. Se puede reintentar (la respuesta no se guarda en la idempotencia), pero los SDK no lo hacen solos: vuelve a llamar a la IA.
ai_credits_exhausted402 payment_requiredLa bolsa de créditos de IA que paga la llamada no la cubre (desde 2026-11-01 la usa toda operación que llama a la IA): details.reason dice por qué (insufficient_credits, sin saldo; category_budget, el tope de la categoría, que existe solo si un owner o un admin puso topes por categoría; personal_limit, el límite del mes de quien llama) y details.credits_required cuánto hacía falta. Cuando lo que frena son los créditos extra, details.detail dice por qué: extras_limit (se llegó al tope mensual de créditos extra que puso el owner) o frozen (los créditos extra están congelados). No se llamó a la IA y no se guardó nada. No se resuelve por la API: en la app (Agentes AI › Consumo) un owner o un admin recarga créditos extra, suma un escalón de IA, reasigna créditos o quita los topes por categoría, y el owner sube el tope mensual de créditos extra; los límites se cambian en Agentes AI › Límites. Avisa a la persona en lugar de reintentar.
ai_personal_limit402 payment_requiredNo es la respuesta de una llamada: es cómo queda guardado el límite del mes de una persona (402 ai_credits_exhausted con details.reason personal_limit) en el estado de lo que no corrió, por ejemplo en embedding_error de un documento o en ai_error_code de un bloque de IA de un informe. Junto a él pueden aparecer ai_credits_exhausted y payment_required. Lo que no corrió se vuelve a pedir cuando el límite lo permita o un owner o un admin lo cambie.
platform_unavailable503 unavailableMB Suite no pudo comprobar la credencial ahora: su base de datos no contestó a tiempo (se reintentó una vez). No corrió nada: reintenta después de Retry-After (también en details.retry_after), con la misma Idempotency-Key si la llevaba.
pdf_unavailable503 unavailableEl servicio que arma los PDF no está disponible ahora (sin configurar, caído o sin contestar a tiempo): el PDF no se generó. Reintenta después de Retry-After.
job_not_found404 not_foundNo hay un trabajo con ese id que puedas ver: no existe, venció (los trabajos y sus archivos duran 7 días) o lo pidió otra persona (owner y admin ven todos).
job_creator_unavailable403 permissionVa en el error de un trabajo fallado: la persona que lo pidió ya no tiene una cuenta activa, así que el trabajo se detuvo. Pídelo de nuevo con otra credencial.
job_segment_taken409 conflictInterno del corredor de trabajos: otro proceso tomó el tramo y lo sigue. No llega a quien llama; el trabajo continúa.
import_mapping_empty400 invalid_requestNinguna columna de las filas va a un campo. Usa los ids de campo como claves (person.email, person.firstName, company.name, deal.title…) o manda mappings (o una plantilla con template_id).
import_template_mismatch400 invalid_requestLa plantilla importa a otro destino que el destination pedido. Omite destination (manda el de la plantilla) o elige otra plantilla.
import_template_not_found404 not_foundNo hay una plantilla de importación con ese id en esta organización. Lístalas con GET /v1/crm/import-templates.
audit_note_invalid400 invalid_requestLa nota de la auditoría (MB-Audit-Note o audit_note) tiene que ser un texto de 1 a 500 caracteres en una línea. Si no es ASCII, manda la cabecera codificada con encodeURIComponent.
idempotency_key_reused422 idempotencyEsa Idempotency-Key (en el MCP, idempotency_key) ya se usó en las últimas 24 horas con un pedido distinto. Usa una clave nueva.
rate_limited429 rate_limitRáfaga superada: por API key cada 10 segundos, por organización cada minuto, o por IP (en el MCP, la de la IP cuenta solo los pedidos sin una credencial válida: details.scope es ip_without_valid_credential). Espera los segundos de Retry-After (también en details.retry_after); details.limits trae el estado de cada freno.
quota_exceeded429 quotaLa organización llegó a su cupo diario de llamadas, lecturas, escrituras u operaciones externas. details.quota trae type, limit, used, remaining y resetsAt (00:00 UTC del día siguiente).
payment_required402 payment_requiredLa suscripción de la organización está bloqueada por falta de pago: la API y el MCP quedan en pausa hasta regularizarla. En una operación que usa créditos de IA, puede ser solo la suscripción que paga esos créditos: ahí se pausa solo la IA.
platform_maintenance503 maintenanceMantenimiento en curso. Reintenta después de Retry-After.
internal_error500 internalError inesperado de nuestro lado. Reintenta con backoff; si se repite, escríbenos con el request_id. Con details.code: confirm_secret_missing el servidor no tiene configurada la confirmación de lo irreversible.

Códigos de cada operación

Los que devuelven las operaciones de cada módulo. El texto es el `message` en inglés que trae la respuesta.

access_request_not_allowed403 permissionOnly a direct member, an owner or admin of the organization or of its workspace, or support can ask for Phones.
access_request_pending409 conflictThis organization already has a pending Phones access request: MB Suite reviews it within one business day and emails the decision.
account_custom_field_not_found404 not_foundNo account custom field with that id in this workspace.
account_has_active_subscription409 conflictThe account pays for its own subscription and it is still …: it has to be canceled before the account can be ….
account_has_billed_phone_lines409 conflictThe account has … phone line… billed to the workspace: release … in CRM → Settings → Lines first.
account_has_outstanding_debt409 conflictThe account has unpaid invoices of its own subscription: it cannot be deleted until they are paid.
account_manages_own_members400 invalid_requestThis Account pays its own subscription (billing mode self_pays or independent), so its own team decides who is a direct member: only a person who is also a direct owner or admin of this Account can add people from the workspace this way. Otherwise the Account's owner invites them, or the workspace reaches the Account with the access the Account gives it.
account_not_found404 not_foundNo account with that id in this workspace.
account_not_in_connection400 invalid_requestThe organization's connection for this platform does not reach that account: link only what integrations.credentials.accounts.list returns for it.
account_not_linked400 invalid_requestThe chosen account is not among the candidates of the last verification for this organization.
account_required400 invalid_requestOnly an Account (a client organization of a workspace) receives members of its workspace this way; invite people to a workspace with members.invitations.create.
account_restore_requires_app409 conflictThis account is paid by the workspace (parent_pays): restoring it puts it back on the workspace's invoice, so it is restored from the app (Accounts → Archived → Restore).
accounts_not_listable409 conflictThis connection does not feed Data sources: there are no accounts to list.
accounts_workspace_only403 permissionAccounts are managed from the agency workspace, not from inside an account.
action_item_not_found404 not_foundNo action item with that id in this meeting.
activity_entry_not_found404 not_foundNo activity entry with that id in this organization (an entry about an Account only exists for the people who can see that Account). If it was deleted in the last 30 days, it is in platform.trash.list, and platform.trash.restore brings it back.
activity_not_found404 not_foundNo activity with that id in this organization.
ad_campaign_not_found404 not_foundNo campaign with that id in this account: list them with the campaigns.list operation.
ad_copy_not_found404 not_foundNo ad copy with that id in this organization.
ad_creative_not_found404 not_foundNo Ad Creator creative with that id in this organization (Content Studio series are read with social_content_studio.series.get).
ad_group_not_found404 not_foundNo ad group (ad set) with that id in this account: list them with the ad_groups.list operation.
adhoc_pdf_expired409 conflictThis ad hoc PDF expired and was removed from storage.
adhoc_pdf_missing404 not_foundThe PDF file of this ad hoc report is no longer in storage.
adhoc_report_not_found404 not_foundNo ad hoc report with that id in this organization. List them with reports.adhoc.list.
advertiser_changed_reverify409 conflictChange the advertiser first and verify again before choosing the pixel.
agency_visibility_unavailable400 invalid_requestThe 'agency' visibility only exists in an Account (a client organization of a workspace).
agency_workspace_required403 permissionOnly agency workspaces have Accounts.
ai_agent_access_denied403 permissionThis agent is restricted to other roles or members of the organization.
ai_agent_avatar_not_owned400 invalid_requestThe uploaded avatar does not belong to this organization.
ai_agent_draft_expired409 conflictThe files uploaded to this draft expired (drafts last 24 hours): upload them again before saving.
ai_agent_editor_required403 permissionViewers cannot create, edit or delete AI agents.
ai_agent_id_invalid400 invalid_requestagent_id is used only by the MB Suite app's agent builder: leave it out.
ai_agent_in_live_seat409 conflictThis agent works in an AI Team seat of the CRM or the Social Inbox (it attends leads or customers live): changing or deleting it is done from the screen, by a person.
ai_agent_knowledge_file_not_allowed400 invalid_requestKnowledge files are uploaded from the screen: through the API, send text entries only.
ai_agent_knowledge_removal_not_allowed409 conflictRemoving an uploaded or indexed knowledge entry deletes its fragments and file: it is done from the screen. Send the full list including those entries.
ai_agent_not_eligible400 invalid_requestThat AI agent cannot work a position of the CRM AI team: its channel must be whatsapp_crm (it talks to leads over the CRM's WhatsApp and email). Use one with that channel, create it with ai.agents.create (channel whatsapp_crm, or basedOnSystemId crm_setter, crm_qualifier or crm_seller), or send aiAgentId null for the CRM's default agent.
ai_agent_not_found404 not_foundNo AI agent with that id in this organization.
ai_agent_personalization_exists409 conflictThat system agent already has a personalized version in this organization.
ai_agent_personalization_needs_origin400 invalid_requestA personalization (replaces_system_agent) needs based_on_system_id: the system agent it replaces.
ai_agent_prompt_too_long400 invalid_requestThe instructions of '…' exceed the …-character limit of an organization agent: send system_prompt with your own.
ai_agent_scope_invalid400 invalid_requestscope_org_ids must name an Account of this workspace.
ai_agent_system_not_deletable400 invalid_requestSystem agents cannot be deleted.
ai_agent_system_unknown400 invalid_requestThere is no MB Suite system agent '…' to personalize or duplicate: use a key from ai.system_agents.list.
ai_agent_too_large400 invalid_requestThe agent is too large to save (prompt plus knowledge text): move long texts to fewer, shorter knowledge entries.
ai_draft_empty400 invalid_requestThe message has nothing to reply to (no text, attachments or pending turn).
ai_not_in_charge409 conflictNo AI position is working this record: to change its owner use crm.deals.update or crm.prospects.update.
ai_position_config_invalid400 invalid_requestThe position's configuration does not validate after applying updates${path ?
ai_position_inactive409 conflictThe position is turned off: turn it on first (crm.ai_team.positions.set_enabled) or pick another one.
ai_position_not_configured409 conflictThat position has no working configuration yet: save it once with crm.ai_team.positions.update.
ai_position_not_found404 not_foundNo AI team position with that id in this organization.
ai_position_not_operative409 conflictThat position is a scoring position or the deal coach: it cannot own records. Assign them to a Setter, Qualifier or Seller.
ai_scoring_screen_only403 permissionTurning a scoring position on queues up to 500 open deals or prospects for background AI scoring that an API key cannot meter yet: turn it on in the app (CRM → AI team). Turning it off works.
ai_state_closed409 conflictThe AI already closed this conversation (booked, disqualified or handed off): there is nothing to pause.
ai_state_conflict409 conflictAnother AI position is working this record: take it over first (crm.ai_team.take_over), then assign it.
ai_state_not_found404 not_foundNo AI state with that id in this organization.
ai_state_not_paused409 conflictThe AI is not paused in this record.
ai_work_agent_not_yours400 invalid_requestA specialist sets up routines only for itself: leave agent_id out, or hand the conversation to MIA for another agent.
ai_work_agent_unavailable400 invalid_requestThat agent can't run routines for the routine's owner here (it doesn't exist, isn't available or the owner can't use it).
ai_work_budget_invalid400 invalid_requestbudget_per_run goes from … (the estimate's minimum) to ….
ai_work_content_unavailable400 invalid_requestRoutines aren't available in this organization's MIA content yet.
ai_work_deliverable_forbidden403 permissionOnly the routine's owner, an owner or an admin can delete what a routine left.
ai_work_deliverable_not_found404 not_foundThe deliverable does not exist in this organization, or the caller can't see it.
ai_work_errand_conversation_not_found404 not_foundThe conversation of this errand no longer exists.
ai_work_errand_finished409 conflictThe errand already finished: there is nothing to cancel.
ai_work_errand_no_access403 permissionErrands are for the people of this organization.
ai_work_errand_not_found404 not_foundThe errand does not exist in this organization, or the caller can't cancel it.
ai_work_errand_not_from_here400 invalid_requestAn errand is handed to an agent from a conversation or from the screen, never from inside an errand, a routine or a plan.
ai_work_errand_org_mismatch400 invalid_requestAn errand lives in the organization of its conversation: call this without org_id and name the Accounts in org_ids.
ai_work_errand_scope_invalid400 invalid_requestorg_ids: … is not this organization or an Account of it that the person reaches.
ai_work_errands_not_enabled400 invalid_requestErrands are not enabled for this person in this organization yet.
ai_work_instructions_required400 invalid_requestA routine without a template needs instructions (20 to 2,000 characters).
ai_work_instructions_too_long400 invalid_requestUp to 2,000 characters.
ai_work_instructions_with_template400 invalid_requestA routine with a template has no instructions of its own: adjust its inputs instead.
ai_work_members_invalid400 invalid_requestmembers must be members of this organization.
ai_work_not_enabled400 invalid_requestRoutines are not enabled for this person in this organization yet.
ai_work_other_agent403 permissionA specialist works only with its own routines and what they leave: hand the conversation to MIA for this one.
ai_work_proposal_not_found404 not_foundThe proposal does not exist in this organization, or the caller can't see it.
ai_work_routine_changed409 conflictThe routine changed while you edited it: read it again.
ai_work_routine_forbidden403 permissionOnly the routine's owner, an owner or an admin can change it.
ai_work_routine_needs_owner400 invalid_requestIts owner no longer reaches this organization: an owner or an admin takes it over first (ai.work.routines.take_over).
ai_work_routine_not_found404 not_foundThe routine does not exist in this organization, or the caller can't see it.
ai_work_routine_not_owner403 permissionOnly the routine's owner changes what it does, its agent, the Accounts it covers, who sees it or its trigger (it runs with the owner's permissions): an owner or an admin can pause it, delete it or take it over.
ai_work_routine_not_takeable400 invalid_requestOnly a routine paused because its owner no longer reaches the organization (owner_no_access) or any of its Accounts (scope_lost) can be taken over.
ai_work_routine_paused400 invalid_requestThe routine is paused: resume it first (ai.work.routines.resume).
ai_work_routine_trigger_accounts400 invalid_requestA routine with a trigger listens only to the events of its own organization: use scope this_org, or a schedule to cover Accounts.
ai_work_schedule_invalid400 invalid_requestThe schedule is not valid: ….
ai_work_scope_all_accounts_template400 invalid_requestScope all_accounts goes only with a template that knows when there is nothing to report (all_accounts true in ai.work.routines.templates): for this one, name the Accounts (accounts, up to 20).
ai_work_scope_invalid400 invalid_requestWith all_accounts, don't send org_ids: it covers every Account of this workspace.
ai_work_scope_no_accounts400 invalid_requestThis workspace has no Accounts that the routine's owner reaches with the template's modules on.
ai_work_settings_share_from_workspace400 invalid_requestThis Account spends its workspace's AI credits: the routines' share is set in the workspace.
ai_work_template_module_access400 invalid_requestThe routine reads with its owner's permissions, and its owner can't see … in ….
ai_work_template_modules400 invalid_requestThe template needs … turned on in ….
ai_work_template_unknown400 invalid_requestThat template isn't in this organization's routines catalog (ai.work.routines.templates).
ai_work_trigger_agent_area400 invalid_request… doesn't work in …, where … happens: pick an agent that works there, or MIA.
ai_work_trigger_filter_invalid400 invalid_requesttrigger.filter doesn't fit …: ….
ai_work_trigger_invalid400 invalid_requesttrigger.event_type must be one of: ….
ai_work_trigger_module_hidden400 invalid_requestThe routine's owner can't see the … module here, where … happens: a routine only listens to events its owner can read.
ai_work_when_invalid400 invalid_requestA routine runs on a schedule or on an event, not both.
ai_work_when_required400 invalid_requestSay when it runs: a schedule (frequency and time) or an event.
alert_not_found404 not_foundNo alert with that id in this organization (alerts live in the workspace that created them).
all_accounts_excluded400 invalid_requestAn account row cannot exclude every connected ad account: it would always add up to zero.
all_recipients_suppressed409 conflictEvery recipient is on the suppression list.
already_enrolled409 conflictThat address already has an active enrollment in this flow.
already_member409 conflictThat email already belongs to a member of this organization.
already_published409 conflictThis post already has a published or queued job on …. Duplicate it to publish it again.
analyst_exists409 conflictThis organization already has a Sentiment Analyst: update it with social_inbox.positions.update.
approval_comment_needs_step400 invalid_requestapproval_comment goes together with a status change to client_review, approved or changes_requested (updates.status): it is recorded as that approval step. For a plain note on the post use social_planner.comments.create.
art_pending409 conflictThis post comes from a content plan without art: upload its media before moving it to client_review, approved, scheduled or published.
assignee_invalid400 invalid_requestassignee_uid must be a member of this organization (or of its agency) or an active AI Community Manager (ai-<positionId>).
assignee_not_member400 invalid_requestThe assignee must be a member of the organization.
assignment_rule_not_found404 not_foundNo assignment rule with that id in this organization: take the ids from crm.assignment_rules.list.
assignments_workspace_only400 invalid_requestAccount assignments live on the workspace: this organization is an Account.
attachment_invalid400 invalid_requestAttachments must be files stored under this organization's email attachments.
attachment_outside_org400 invalid_requestEvery attachment key must belong to this organization's note attachments.
attachment_too_large400 invalid_requestThe attachment … is larger than 25 MB.
attachment_unreadable400 invalid_requestThe attachment … could not be read.
audience_already_linked409 conflictThat audience is already linked to this flow.
audience_empty409 conflictThe audience has no members right now.
audit_dispatch_failed500 internalThe site audit service rejected the audit; it was marked as failed. Retry in a few minutes.
audit_issue_ignored409 conflictThat issue was marked as intentional for this audit: reactivate it (seo_site_auditor.issues.unignore) and audit again to turn it into a task.
audit_issue_not_found404 not_foundThis audit has no issue with that id (see seo_site_auditor.issues.list).
audit_issues_not_found404 not_foundThis audit has no issues to export (it failed or is still running).
audit_no_pages409 conflictThis audit has no crawled pages to build the file from.
audit_not_completed409 conflictThis audit has no results to export (it failed or is still running).
audit_run_not_found404 not_foundNo audit with that id in this organization.
audit_service_unavailable503 unavailableThe site audit service is not available right now. Retry later.
audit_site_exists409 conflictThis organization already has an audited site: each account audits one site. Delete it (or change it) before restoring this one.
audit_site_not_found404 not_foundNo audited site with that id in this organization.
automation_run_in_progress409 conflictA run of this automation is already in progress: wait for it to finish (see media_planner.automation.runs.list).
automation_run_not_found404 not_foundNo media plan automation run with that id in this workspace (list them with media_planner.automation.runs.list).
bank_entry_not_found404 not_foundNo Content Library entry with that id in this organization.
billing_mode_not_supported409 conflictThe platform mode cannot be changed in an independent Account.
billing_transition_account_only403 permissionOnly the account itself (its own owners and admins) can accept or reject the request, from the account.
billing_transition_account_past_due409 conflictThe account has an unpaid invoice (past_due): it has to settle it before its billing can change.
billing_transition_exists409 conflictThis account already has an active request (pending or scheduled).
billing_transition_not_cancellable409 conflictOnly a pending or scheduled request can be cancelled.
billing_transition_not_found404 not_foundNo billing transition request with that id involves this organization.
billing_transition_not_pending409 conflictThe request is no longer pending.
billing_transition_requires_self_pays409 conflictOnly an account that pays its own subscription (billing mode self_pays) can be asked to move to agency billing.
billing_transition_scheduled_app_only409 conflictThis request is already scheduled: cancelling it re-enables the renewal of the account's subscription in Stripe, which is done from the MB Suite app (Settings → Partners).
booker_email_required400 invalid_requestThe person has no email and none was given: pass email (the calendar invitation and the booking emails go there).
booking_event_type_not_found404 not_foundNo booking event type with that id in this organization.
booking_guests_unavailable409 conflictThis booking has no event in the seller's calendar (no calendar was connected, or the event could not be created), so there is nowhere to add guests.
booking_max_reschedules409 conflictA booking is rescheduled at most … times.
booking_not_cancellable409 conflictOnly a confirmed booking can be cancelled (this one is …).
booking_not_confirmed409 conflictGuests are added only to a confirmed booking (this one is …).
booking_not_found404 not_foundNo booking with that id in this organization.
booking_not_reschedulable409 conflictOnly a confirmed booking can be rescheduled (this one is …).
booking_unavailable409 conflictThe seller has not set up their booking page yet.
brand_import_dns_failed400 invalid_requestThe website's domain could not be resolved.
brand_import_invalid_url400 invalid_requestwebsiteUrl must be an http or https URL.
brand_import_not_html400 invalid_requestThe address did not return a web page.
brand_import_site_error409 conflictThe website could not be reached.
brand_import_timeout409 conflictThe website did not answer in time.
brand_import_url_blocked400 invalid_requestThat address is not allowed (private, local or blocked host).
brand_voice_document_incomplete409 conflictThe document lacks the file data needed to process it again: delete it and upload the file again.
brand_voice_document_not_found404 not_foundNo Brand Voice document with that id in this organization.
brand_voice_document_not_retryable409 conflictOnly a document whose processing failed (status error) can be processed again.
brand_voice_no_sources409 conflictThere is nothing to analyze: connect Instagram, Facebook or YouTube, or upload general context documents to the organization profile.
brand_voice_profile_changed409 conflictThe Brand Voice profile changed while this operation was running: read it again and retry.
branding_domain_already_set409 conflictThis organization already has the custom domain …: remove it before adding another.
branding_font_invalid400 invalid_requestUnknown font '…'. Use one of: ….
briefing_invalid400 invalid_requestThe saved briefing no longer passes the current rules: regenerate it with an edited briefing.
briefing_missing409 conflictThe strategy has no saved briefing to regenerate from.
calendar_edit_not_allowed403 permissionOnly an owner or admin edits another seller's calendar, and only when they allow it (calendar sharing: allow admin edit).
calendar_event_not_found404 not_foundNo mirrored event with that id in this seller's calendar.
calendar_not_visible403 permissionThis seller does not share their calendar (and bookings) with you.
calendar_sync_not_allowed403 permissionYou cannot see this seller's calendar, so you cannot sync it.
calendar_vendor_not_found404 not_foundNo calendar with that vendor is available to this credential: API keys and apps read only the calendar of the user they act as.
call_not_found404 not_foundNo call with that call_sid in this organization: call_sid is the id of a call of crm.calls.list.
campaign_already_sending409 conflictThe campaign is already being sent.
campaign_audience_missing409 conflictThe campaign's audience no longer exists.
campaign_incomplete409 conflictThe campaign needs recipients (an audience or direct recipients) and content before it can be scheduled.
campaign_label_not_found404 not_foundNo campaign label with that id in this organization (labels inherited from the workspace are managed from the workspace).
campaign_not_cancellable409 conflictOnly scheduled, queued or sending campaigns can be cancelled.
campaign_not_deletable409 conflictOnly draft or cancelled campaigns can be deleted; cancel a scheduled one first.
campaign_not_editable409 conflictThe campaign was already sent (or is being sent): only its name can change.
campaign_not_schedulable409 conflictOnly draft campaigns can be scheduled, and scheduled ones rescheduled.
campaign_not_sendable409 conflictOnly draft or scheduled campaigns can be sent.
campaign_not_unschedulable409 conflictOnly a scheduled campaign can be unscheduled; one that is queued, sending or sent is cancelled instead.
campaign_override_conflict400 invalid_requestA row appears twice in campaign_overrides, or it is both left out and changed: see details.campaign_ids.
campaign_sender_not_on_domain409 conflictThe sender … is not on the account's verified domain (…).
campaign_without_audience409 conflictThe campaign has no audience.
campaign_without_content409 conflictThe campaign has no content.
campaign_without_recipients409 conflictThe campaign has no recipients.
canvas_base_deleted409 conflictThe original image of this edit no longer exists.
canvas_base_missing409 conflictThe file has no source image.
canvas_base_too_large400 invalid_requestThe base image is larger than 25 MB, the editor's limit.
caption_too_long400 invalid_requestThe caption plus its hashtags must fit in … characters (the Social Planner limit).
carryover_allocations_empty400 invalid_requestAssign a non-zero amount to at least one row.
carryover_already_applied409 conflictCarryover was already applied to this plan: revert it first.
carryover_disabled409 conflictCarryover is not enabled in this plan (media_planner.plans.update with carryover_enabled).
carryover_nothing_to_revert409 conflictThis plan has no applied or dismissed carryover to revert.
carryover_over_allocated400 invalid_requestThe allocations add up to more than the available balance: …. Lower the amounts (the balance is in media_planner.carryover.candidates for a source plan, or in source.total_amounts for a manual one).
carryover_same_plan400 invalid_requestA plan cannot carry over its own balance.
carryover_source_consumed409 conflictThat plan's balance was already carried over into another plan.
cascade_too_large409 conflictThe company has too many persons to cascade safely; use the simple delete.
catalog_feed_url_app_only403 permissionChanging a catalog's feed URL re-syncs the whole catalog with AI embeddings: it is done from the MB Suite app (CRM → Settings → Catalogs), where the AI credits are checked. Name, frequency and enabled_for_sellers can be changed here.
catalog_not_found404 not_foundNo catalog with that id in this organization.
catalog_sync_in_progress409 conflictA sync is already running for this catalog; wait for it to finish.
client_portal_access_denied403 permissionManaging the client portal's addresses also requires edit access to the Client Portal module.
coach_not_configured409 conflictThe AI Deal Coach is off for this organization: an owner or admin turns it on in CRM settings → AI scoring → Coach.
comment_author_only403 permissionOnly the author can edit a comment.
comment_delete_denied403 permissionOnly the author or an owner/admin can delete a comment.
comment_empty400 invalid_requestThe comment is empty after sanitizing its HTML.
comment_not_found404 not_foundNo comment with that id on this action.
company_exists_not_visible409 conflictA company with this name already exists in the CRM, but it is outside what you can see (another user owns it). Nothing was created: ask an admin to assign it to you.
company_not_found404 not_foundNo company with that id in this organization.
conflicting_tags400 invalid_requestA tag cannot be added and removed in the same call: ….
connection_without_id400 invalid_requestThe connection has no id for this platform: send the platform's id field (for example external_customer_id for google_ads, property_id for google_analytics).
contact_email_exists409 conflictA contact with that email already exists in this organization…: update it, or pass allow_duplicate to create another one.
contact_label_not_found404 not_foundNo contact label with that id in this organization. If it was deleted in the last 30 days, it is in platform.trash.list, and platform.trash.restore brings it back.
contact_method_required400 invalid_requestA contact needs at least one way to reach it: an email, a mobile or a phone.
contact_not_found404 not_foundNo contact with that id in this organization (members and viewers only reach the contacts assigned to their Accounts). If it was deleted in the last 30 days, it is in platform.trash.list, and platform.trash.restore brings it back.
content_plain_text_without_content400 invalid_requestcontent_plain_text only travels together with content (it is the plain-text version of that content).
context_document_incomplete409 conflictThe document lacks the file data needed to process it again: delete it and upload the file again.
context_document_not_found404 not_foundNo context document with that id in this organization's profile.
context_document_not_ready409 conflictOnly a processed document (status ready) can be indexed again.
context_document_not_retryable409 conflictOnly a document whose processing failed (status error) can be processed again.
context_document_without_text409 conflictThe document has no extracted text to index.
conversation_exists_on_line409 conflictThat number already has a conversation on that WhatsApp line (details.conversation_id): write in that conversation instead.
conversation_line_mismatch409 conflictThe conversation belongs to another WhatsApp line (details.conversation_line), and Meta counts the 24-hour window per number: send from that line, or write from the other one with crm.conversations.start or crm.whatsapp.send_template without conversationId.
conversation_not_found404 not_foundNo CRM conversation with that id in this organization.
conversation_not_of_record400 invalid_requestThe conversation is not linked to that deal or prospect (its dealIds or prospectIds): pass the conversation the record is taken from, or none.
conversation_not_social400 invalid_requestThe conversation is not an Instagram, Messenger or TikTok direct message.
conversions_not_verified409 conflictVerify the connection before enabling (no … selected).
country_invalid400 invalid_requestNot ISO 3166-1 alpha-2 country codes: …. Use two-letter codes like ar, mx or us (or global).
credential_not_found404 not_foundNo connection with that id in this organization (an Account's inherited connection is managed from its workspace).
crm_enabled_required_while_linked409 conflictThe form is linked to a CRM lead source: unlink it before turning crm_enabled off.
crm_entity_not_found404 not_foundNo CRM … with that id in this organization.
crm_invalid_source400 invalid_requestsource_id is not a direct-message lead source of this organization for that network.
crm_linked409 conflictThis direct message belongs to the CRM: the Inbox AI does not draft for it.
crm_report_not_inheritable400 invalid_requestCRM reports of the workspace cannot be inherited by an account.
crm_reports_access_denied403 permissionYou cannot read CRM reports in this organization.
crm_user_already_added409 conflictThe user is already in the CRM team.
crm_user_not_found404 not_foundThe user is not in the CRM team: take the ids from crm.team.list.
cross_account_dashboard_not_found404 not_foundNo cross-account dashboard with that id in this workspace. List them with dashboards.cross_account.list.
cross_account_explorer_view_not_found404 not_foundNo cross-account explorer view with that id in this workspace. List them with dashboards.cross_account_explorer_views.list.
cross_account_table_single_platform400 invalid_requestA cross-account view table reads one platform across the accounts: use type single with its platform (platforms is for explorer views).
currency_row_exists409 conflictThis account-mode plan already has a row in that currency: it has one row per currency.
custom_field_invalid400 invalid_requestThe value of '…' must be ….
custom_field_name_invalid400 invalid_requestThe name has no letters or digits to build the field key from; send a slug.
custom_field_not_found404 not_foundNo custom field with that id in this organization.
custom_field_not_writable400 invalid_request'…' is a files field: files are uploaded from the app, not through the API.
custom_field_slug_taken409 conflictAn account custom field with the key '…' already exists.
custom_field_unknown400 invalid_requestThere is no account custom field with the key '…'${defs.length ?
custom_field_unknown_id400 invalid_requestUnknown field id(s): ….
custom_fields_conflict400 invalid_requestSend customFields (replaces the whole map) or mergeCustomFields (changes only the keys sent), not both.
custom_metric_name_taken409 conflictA custom metric with that name already exists in this workspace.
custom_metric_not_found404 not_foundNo custom metric with that id in this workspace. List them with dashboards.custom_metrics.list.
dashboard_not_found404 not_foundNo dashboard with that id in this organization. List them with dashboards.dashboards.list.
data_source_ambiguous400 invalid_requestThe account '…' is connected on more than one platform (…): pass the id of dashboards.data_sources.list, platform:id.
data_source_not_linked400 invalid_requestThese data sources are not connected to this organization: …. List the valid ones with dashboards.data_sources.list.
data_source_slot_unknown400 invalid_requestThese keys are not data slots of the template: …. ${valid.length > 0 ?
data_sources_forbidden403 permissionYou cannot manage the data sources of this organization: an Account's inherited platforms are managed by its workspace, and viewers manage none.
date_in_past400 invalid_requestscheduledAt must be in the future.
date_range_invalid400 invalid_requestSend start_date and end_date together (or neither, to use period).
date_range_too_long400 invalid_requestThe date range can span at most … days.
deal_merged409 conflictThe deal was absorbed by a merge.
deal_not_closed409 conflictThe deal is open: only a won or lost deal can be reopened. To move it, use crm.deals.move.
deal_not_found404 not_foundNo deal with that id in this organization.
deal_not_of_person400 invalid_requestThe deal is not linked to every person being enrolled.
deal_not_won409 conflictwonAt can only be edited on a won deal.
deal_without_person409 conflictThe deal has no primary person to take the firmographics from: link one (crm.deals.update with primaryPersonId) or pass personId.
default_data_source_invalid400 invalid_request'…' is not a data slot nor a platform of this template. Valid: ….
delivery_empty409 conflictThe delivery has no content: add report templates (templateIds) or dashboard links (contentItems) first.
delivery_label_not_found404 not_foundNo delivery label with that id in this organization. List them with deliveries.labels.list.
delivery_no_recipients409 conflictThe delivery has no recipients: set emailConfig.recipients first.
delivery_send_in_progress409 conflictThis delivery is being sent right now: wait for that send to finish (a minute or two) and retry.
delivery_send_needs_schedule409 conflictThis delivery renders … report PDF… with live platform data (up to two minutes each), beyond the API's 60-second request budget. Schedule it instead with deliveries.deliveries.schedule (type one_shot, send_at a minute or more ahead): the scheduler sends it within 15 minutes and fires deliveries.delivery.sent or deliveries.delivery.failed.
delivery_send_not_found404 not_foundNo send with that id in this delivery's history.
design_invalid400 invalid_requestThe design could not be rendered: check its settings and sections.
do_not_contact409 conflictNothing was sent: a recipient is marked do-not-contact or unsubscribed (details.recipients lists each one). Only a person of the team can confirm a message to them, and only one about their account, a charge or support, or one the person asked for; details.overridable is false when not even that can send it.
do_not_contact_override_not_allowed403 permissionAn AI agent's API key cannot confirm a message to a person marked do-not-contact or unsubscribed: only a person of the team can.
do_not_contact_reason_required400 invalid_requestdo_not_contact_override needs a reason (3 to 500 characters) outside the app: it is recorded with the send.
document_unreadable400 invalid_requestNo text could be extracted from the file (unsupported, empty or unreadable).
domain_in_use409 conflictThat domain is already registered in MB Suite's hosting. If it is yours, contact support.
domain_reserved400 invalid_requestThat address belongs to MB Suite or its hosting. For an mb-suite.com address use the subdomain operation.
domain_unavailable409 conflictThis address is already used by another organization, or by the other surface (team access or client portal) of this one.
duplicate_field_id400 invalid_requestThe field id '…' appears twice.
duplicate_field_slug400 invalid_requestThe slug '…' appears twice.
duplicate_ids400 invalid_requestordered_ids repeats …: …. Send each team member once.
duplicate_label_ids400 invalid_requestlabelIds has repeated ids.
duplicate_not_supported409 conflictOnly posts created in MB Suite can be duplicated (a post synced from a network has no editable content).
duplicate_phase_id400 invalid_requestThe phase id '…' appears twice.
duplicate_status_id400 invalid_requestThe status id '…' appears twice.
duplicate_step_ids400 invalid_requestordered_ids has repeated ids.
duplicate_template_ids400 invalid_requestEach template id can appear only once.
email_audience_not_found404 not_foundNo audience with that id in this organization. If it was deleted in the last 30 days, it is in platform.trash.list, and platform.trash.restore brings it back.
email_campaign_not_found404 not_foundNo email campaign with that id in this organization. If it was deleted in the last 30 days, it is in platform.trash.list, and platform.trash.restore brings it back.
email_domain_already_set409 conflictThis organization already sends from …: remove it before adding another.
email_domain_in_use409 conflictThat domain is already registered as the sending domain of another organization.
email_domain_not_verified409 conflictThe sending domain is not verified yet: senders can be added once its DNS records are confirmed (branding.email_domain.verify).
email_flow_archived409 conflictThe flow is archived: unarchive it (activate or pause) before enrolling contacts.
email_flow_enrollment_not_found404 not_foundNo flow enrollment with that id in this organization.
email_flow_not_found404 not_foundNo email flow with that id in this organization. If it was deleted in the last 30 days, it is in platform.trash.list, and platform.trash.restore brings it back.
email_flow_step_not_found404 not_foundNo step with that id in this flow.
email_invalid400 invalid_requestThe part before @ is not a valid mailbox name.
email_mailbox_not_found404 not_foundNo mailbox with that owner is available to this credential: API keys and apps read only the mailbox of the user they act as.
email_sender_missing409 conflictAdd a sender on the verified domain (Branding > Email) before sending test emails with an API key or an app.
email_sender_not_found404 not_foundNo sender with that id in this organization's email domain.
email_sending_paused409 conflictMB Suite paused this account's email sending (details.kind: bounce_rate when a campaign or flow had a hard bounce rate over 5%, manual when MB Suite decided it; details.held_at says since when): no campaign or flow email goes out until it is resumed. Contact support@mb-suite.com.
email_suppressed409 conflictThat address is on the organization's suppression list (unsubscribed, bounced or complained).
email_suppression_not_found404 not_foundThat email is not on this organization's suppression list.
email_template_empty409 conflictThe template has no content to send.
email_template_in_use409 conflictThe template is used by the flow "…": change that step first.
email_template_not_found404 not_foundNo email template with that id in this organization. If it was deleted in the last 30 days, it is in platform.trash.list, and platform.trash.restore brings it back.
email_thread_not_found404 not_foundNo thread with that id in this mailbox, or the mailbox is private to you.
empty_body400 invalid_requestThe email body is empty after removing what is not allowed (scripts, forms, event handlers).
empty_content400 invalid_request… has no text: write something (HTML or plain text).
entity_not_found404 not_foundThe entity does not exist in this organization or is out of your scope.
entry_not_editable400 invalid_requestSystem events (type auto_event) are written by MB Suite and cannot be edited.
errand_budget_invalid400 invalid_requestbudget_credits is one of … (the options of the estimate).
event_type_has_upcoming_bookings409 conflictThe event type has upcoming confirmed bookings: disable it instead.
event_type_not_found404 not_foundNo booking event type with that id in this organization.
event_type_not_of_vendor400 invalid_requestThat event type belongs to another person, not to vendor_user_id.
event_type_of_another_seller403 permissionEvery id must be an event type of that seller.
event_type_required400 invalid_requestPick an event type (event_type_id) or send all_event_types true.
event_type_slug_taken409 conflictThe seller already has an event type with that slug.
explorer_view_not_found404 not_foundNo explorer view with that id in this organization. List them with dashboards.explorer_views.list.
fallback_user_required400 invalid_requestfallback specific_user needs fallback_user_id (a person or an AI agent of the CRM team).
feed_url_invalid400 invalid_requestThe feed URL is not a valid URL.
feed_url_not_https400 invalid_requestThe feed URL must use https.
field_mapping_missing_contact400 invalid_requestA generic webhook source must map at least one incoming field to person.email or person.phone.
field_mapping_unknown_crm_field400 invalid_requestfield_mapping[…].crm_field '…' is not a CRM field the ingestion can write. Accepted: ….
field_mapping_unknown_custom_field400 invalid_requestNo CRM custom field with the slug ${missing.map((s) =>
field_not_applicable400 invalid_requestplatform_custom_name only applies to the 'other' platform.
field_not_editable400 invalid_request'…' cannot be edited on ….
field_not_in_mode400 invalid_requestThe field … does not apply to a plan in … mode.
field_slug_change_not_supported400 invalid_requestThe field '…' keeps its slug '…': its values are stored under it.
field_type_change_not_supported400 invalid_requestThe field '…' is of type …; an item field keeps its type (its values were saved in that format). Add a new field instead.
file_too_large400 invalid_requestThe uploaded file has … bytes: the Files tab takes files from 1 byte up to 50 MB.
filename_invalid400 invalid_requestThe file name does not produce a valid storage key: use letters, digits, dots, dashes or underscores.
filter_not_allowed400 invalid_requestOnly dynamic lists have a filter.
first_name_required400 invalid_requestA contact needs a first name.
flow_step_without_template409 conflictEvery email step needs a template before the flow can be activated.
flow_steps_invalid409 conflictSome steps are not configured: ….
flow_too_many_steps409 conflictA flow can have at most … steps.
flow_without_email_step409 conflictThe flow needs at least one email step before it can be activated.
folder_cycle400 invalid_requestA folder cannot be moved inside itself or one of its subfolders.
folder_name_invalid400 invalid_requestThe folder name is empty once control characters are removed.
folder_too_large_to_delete409 conflictThis folder holds … subfolder(s) and … file(s): deleting its contents through the API is limited to … so they can be restored together. Move or delete files in bulk first (media_library.items.bulk.delete), or delete it with mode move_contents_up.
format_not_available400 invalid_requestThe format '…' is not available on … (TikTok only takes reels; LinkedIn and LinkedIn profiles feed, carousel and document; X and Google Business Profile only feed).
freemail_domain400 invalid_request… is a public mailbox provider and cannot be an own domain.
from_alias_not_enabled400 invalid_requestThat alias is not enabled for the sender's mailbox.
from_alias_unsupported400 invalid_requestSending from an alias is not available for Outlook mailboxes.
goal_not_found404 not_foundNo goal with that id in this organization.
goal_owner_not_member400 invalid_requestThe goal owner (userId) must be a member of the organization.
goal_owner_required400 invalid_requestAn individual goal needs userId: the member it belongs to.
group_requires_module400 invalid_requestgroup needs module: group ids repeat across modules. Call platform.catalog with module to list its groups.
guest_not_member400 invalid_requestOnly people of the organization (or of its workspace, for an account) can be added as guests: details.emails lists the ones that are not.
human_agent_not_approved409 conflictMeta did not accept the human-agent tag for this conversation (the 24-hour window is over).
ignore_rule_exists409 conflictThis site already has an equivalent rule for that issue (same issue and URL pattern).
ignore_rule_not_found404 not_foundThis site has no intentional rule with that id.
import_requires_campaigns_mode400 invalid_requestCampaigns can only be imported into a plan in campaigns mode.
import_same_plan400 invalid_requestThe source plan is the same plan: pick another one.
import_template_dedup_mismatch400 invalid_requestdedup_strategy (…) and behavior.deduplication (…) disagree: the import uses behavior.deduplication; send only one.
inbox_item_not_found404 not_foundNo inbox item with that id in this organization.
inbox_label_not_found404 not_foundNo inbox label with that id in this organization.
inbox_note_not_found404 not_foundNo note with that id on this inbox item.
inbox_position_not_found404 not_foundNo active AI team position with that id in this organization.
inbox_rule_not_found404 not_foundNo inbox rule with that id in this organization.
inbox_snippet_not_found404 not_foundNo saved reply (snippet) with that id in this organization.
inbox_sync_disabled409 conflictThe Social Inbox is off in this organization: an owner or admin turns it on from the Social Inbox screen (it is the organization's consent to bring in its messages). Nothing was synced.
inbox_thread_not_found404 not_foundNo inbox thread with that id in this organization.
inheritance_changed409 conflictThe platform's inheritance changed while saving: try again.
inherited_view_not_found404 not_foundNo inherited explorer view with that reference id in this account. List them with dashboards.inherited_explorer_views.list.
insufficient_balance409 conflictThe Phones balance does not cover this SMS (estimated … cents for … segment(s)). Top up the balance from the Phones screen.
interest_not_found404 not_found'…' is not a prospect status (interest) of this organization: list them with crm.prospects.interests.list.
invalid_account400 invalid_requestThe account is not an Account of this workspace.
invalid_alert_user400 invalid_request
invalid_connection400 invalid_requestThe connection is not valid for this platform: it needs the platform's id field (see the connection description).
invalid_data_query400 invalid_request… cannot apply these filters: ….
invalid_date400 invalid_requeststart_date and end_date must be valid dates (YYYY-MM-DD).
invalid_domain400 invalid_requestNot a valid hostname: use letters, digits and hyphens, like app.youragency.com (no scheme, port or path).
invalid_file_url400 invalid_requestThe file URL is not one of the allowed storage URLs: ….
invalid_filter400 invalid_requestFilter on '…' with '…' cannot be applied: …
invalid_logo_url400 invalid_requestlogo must be the URL of an image in this organization's MB Suite branding storage (the profile logo or a Branding asset). Upload new images from the screen.
invalid_metric400 invalid_request'…' is not an alertable metric of …: use one listed by alerts.metrics.list.
invalid_month_range400 invalid_requestfrom_month must be the same month as to_month or an earlier one.
invalid_order400 invalid_requestorder must list the ids of the linked accounts.
invalid_phone400 invalid_request'…' cannot be read as a phone number${country ?
invalid_priority400 invalid_requestUnknown priority '…': use one of task_management.config.get.
invalid_range400 invalid_requestcreated_after is later than created_before.
invalid_site_url400 invalid_requestThe site URL is not valid: use the https address of a public website (e.g. https://example.com).
invalid_status400 invalid_requestUnknown status '…': use one of task_management.config.get.
invalid_storage_url400 invalid_requestThe file URL is not an MB Suite storage URL: ….
invalid_subdomain400 invalid_requestA subdomain is 3 to 63 lowercase letters, digits or hyphens, not starting or ending with a hyphen.
invalid_table_filter400 invalid_requestUnknown filter operator '…'.
invalid_target400 invalid_requestThe target must be this workspace or one of its Accounts (one the credential reaches).
invalid_template_filter400 invalid_requestA global filter of the template is not valid (a repeated id, a field its platform cannot filter by, an operator that does not apply to the field or a value that does not fit the operator): param names the filter and the part (filters.<n>.id, field, operator or value) and the message says why.
invalid_template_filter_control400 invalid_requestA filter control of the template is not valid (param names which one): …
invalid_template_pages400 invalid_requestThe page id '…' is repeated.
invalid_time_range400 invalid_requestto must be after from.
invalid_timezone400 invalid_requesttime_zone is not a valid IANA time zone (for example America/Argentina/Buenos_Aires).
invalid_watcher400 invalid_request
invitation_expired409 conflictThe invitation expired: cancel it and invite the person again.
invitation_not_found404 not_foundNo invitation with that id in this organization.
invitation_not_pending409 conflictThe invitation was already …: only a pending invitation can be resent or cancelled.
item_name_invalid400 invalid_requestThe file name is empty once control characters and slashes are removed.
item_status_not_found400 invalid_request'…' is not one of the project's item statuses (…); use "" for no status.
item_without_project400 invalid_requestitem_id needs project_id (an item belongs to a project).
kb_comment_not_found404 not_foundNo comment with that id on this article. If it was deleted in the last 30 days, it is in platform.trash.list, and platform.trash.restore brings it back.
kb_delete_denied403 permissionOnly the article's creator or an owner/admin can delete it.
kb_item_not_found404 not_foundThese ids are not articles you can see in this organization: ….
kb_tag_name_taken409 conflictA tag named '…' already exists in this organization (id …): use it instead of creating another.
kb_tag_not_found404 not_foundNo Knowledge Base tag with that id in this organization. If it was deleted in the last 30 days, it is in platform.trash.list, and platform.trash.restore brings it back.
kb_visibility_change_denied403 permissionOnly the article's creator or an owner/admin can change its visibility.
key_grant_not_org_member403 permissionSpecial permissions are given and managed only by an owner or admin of this organization, on a key that acts as a person of this organization: MB Suite staff cannot.
key_user_cannot_access_item400 invalid_requestThe key's user cannot use the vault item '…' (custom access).
key_vault_item_not_found400 invalid_requestNo vault item '…' in this organization.
knowledge_entry_not_found404 not_foundNo knowledge file with that entry_id in the … block: crm.settings.scoring.get lists them.
knowledge_text_empty400 invalid_requestThe text has nothing to index (only spaces or page numbers).
label_not_found404 not_foundNo label with that id for that entity in this organization.
label_unknown400 invalid_requestThese labels do not exist in this organization: …. List them with ….
last_owner409 conflictThe organization must keep at least one owner: make someone else an owner first.
last_sender409 conflictThe sending domain keeps at least one sender: add another before removing this one.
lead_source_already_linked409 conflictThat lead source is already linked to another form.
lead_source_exists409 conflictThe WhatsApp line of this lead source already has another active source: delete or pause that one first (one active source per line).
lead_source_not_found404 not_foundNo lead source with that id in this organization: take the ids from crm.lead_sources.list.
lead_source_not_targetable400 invalid_requestsourceId must be a generic or manual source; platform sources are fed by their own integration.
lead_source_paused409 conflictThis lead source is paused: reactivate it or omit sourceId to use the API source.
lead_source_system_locked409 conflictSystem sources (Manual, API) only accept routing defaults and AI scoring; locked fields: ….
lead_source_type_invalid400 invalid_requestThe lead source is not of type mb_suite_form: pass create_source: true to create one for this form, or create it in CRM settings → Sources → MB Suite Form.
lead_source_unavailable409 conflictThe log's lead source does not exist or is paused: reactivate it before retrying.
lead_sources_not_found404 not_foundNone of the given ids is a lead source of this organization.
line_has_active_lead_source409 conflictThis WhatsApp line feeds an active CRM lead source: delete the source before moving the line to another destination.
line_module_mismatch400 invalid_requestThe sending line belongs to another part of the product than the conversation: send from the conversation's own line.
line_module_required403 permissionWithout a conversation, templates are sent from the CRM module.
line_not_active409 conflictThe line is not active: only an active line sends SMS.
line_not_found404 not_foundNo WhatsApp line with that line_id in this organization: line_id is the id of a line of crm.lines.list.
line_whatsapp_locked409 conflictThis line is dedicated to WhatsApp and cannot place outgoing calls.
linkedin_mentions_invalid400 invalid_requestlinkedinMentions must be up to 20 valid LinkedIn mentions (urn:li:organization|person, name, kind).
list_is_dynamic400 invalid_requestA dynamic list takes its members from its filter; they cannot be added by hand.
list_not_dynamic400 invalid_requestOnly dynamic lists can be linked to a sequence for auto-enrollment.
list_not_found404 not_foundNo list with that id in this organization.
mailbox_private403 permissionThis mailbox is private to its owner (or to the users they chose).
management_role_not_found404 not_foundNo management role with that id in this organization.
media_folder_not_found404 not_foundNo folder with that id in this organization's media library. If it was deleted in the last 30 days, it is in platform.trash.list, and platform.trash.restore brings it back.
media_foreign_storage400 invalid_requestA media file of the post points to another organization's storage.
media_item_not_found404 not_foundNo file with that id in this organization's media library. If it was deleted in the last 30 days, it is in platform.trash.list, and platform.trash.restore brings it back.
media_not_in_library400 invalid_requestMedia must be files of this organization's Media Library (their MB Suite storage URL). Upload them in MB Suite first.
media_not_of_conversation400 invalid_requeststoragePath must be a file uploaded to this conversation (crm.whatsapp.uploads.create) or a file of the organization's media library: a file of another conversation is not sent.
media_outside_org400 invalid_requeststoragePath must be a file of this organization's WhatsApp media or media library.
media_plan_comment_not_found404 not_foundNo comment with that id on this campaign.
media_plan_row_not_found404 not_foundThese ids are not rows of the plan: ….
media_plan_share_not_found404 not_foundNo sent email with that id in this media plan.
media_plan_template_not_found404 not_foundNo media plan template with that id in this organization.
media_plan_too_large_for_trash409 conflictThis plan has … rows and the trash keeps up to … records with a plan: deleting it here would lose the rest for good. Delete some of its rows first (media_planner.campaigns.bulk.delete: each one goes to the trash on its own), then the plan.
meeting_on_own_calendar400 invalid_requestA meeting is scheduled on your own calendar: omit vendorUserId (or pass your own uid).
member_access_would_drop409 conflictThat person is … of the workspace and already reaches this Account with that role; as a direct member they would get … instead. Give at least …, or leave it as it is.
member_caller_required403 permissionCRM analytics are computed for a member of the organization: run it as a real user, not as a system actor.
member_label_not_found404 not_foundNo member label with that id in this organization.
member_not_found404 not_foundNo member with that user id in this organization.
merge_choice_unknown400 invalid_request'…' is not a field you can choose in a … merge. Fields: … (crm.merge.preview lists the conflicts).
merge_entity_not_found404 not_foundOne of the entities does not exist in this organization.
merge_same_entity400 invalid_requestsurvivorId and loserId must differ.
message_not_found404 not_foundNo message with that id in this organization.
metrics_context_too_large400 invalid_requestmetrics_context must be at most … characters as JSON.
mia_outcome_unknown409 conflictA previous attempt of this change was interrupted halfway and may have run: it is not repeated. Read the current state before trying again.
mixed_view_lists400 invalid_requestview_ids mixes Explorer views and CRM reports: reorder each list on its own.
module_coming_soon409 conflictThis module is not released yet: it cannot be turned on or off until it is.
module_is_paid409 conflictThis module is a paid add-on: it is activated (and charged) from Settings → Modules in the app, not here.
module_locked409 conflictThis module is part of the base platform: it is always on and cannot be turned on or off.
module_not_available404 not_foundThis module is not available for this organization (its plan category, or it is not released).
module_not_configurable400 invalid_request'…' is not a module whose access an account can cap.
module_not_enabled400 invalid_requestThe module '…' is not active in this account.
module_not_found404 not_foundNo module '…' is available to MIA in this organization: use a module id from the index in your context.
module_requires_paid_plan409 conflictThis Account is dormant (managed by its workspace, without a plan of its own): this module needs the Account to be activated with a paid plan first.
monitor_assignment_not_found404 not_foundNo monitor is assigned to that platform in this organization.
monitor_template_not_found404 not_foundNo monitor template with that id in this organization.
month_filter_conflict400 invalid_requestUse month_key for one month, or from_month/to_month for a range, not both.
name_required400 invalid_requestA campaign needs a name.
nested_reply400 invalid_requestReplies are one level deep: reply to the top-level entry (this one's parent_entry_id).
nested_subtask400 invalid_requestA subtask cannot have subtasks of its own: pass the id of a top-level task.
no_active_project_type409 conflictAll project types are archived: unarchive one or create a type first (projects.types.create).
no_campaigns_to_copy400 invalid_requestexclude_campaign_ids leaves out every row of the plan: there is nothing to copy.
no_changes400 invalid_requestNothing to update.
no_done_status409 conflictThis organization has no status in the DONE category to complete tasks with.
no_parent_workspace400 invalid_requestOnly an account can use an inherited monitor: this organization is a workspace.
no_publish_jobs409 conflictNo publish job could be created: none of the post's networks has a usable connection.
no_valid_recipients400 invalid_requestNone of the given addresses is a valid email.
not_a_direct_member409 conflictOnly a direct member can leave the organization; agency access to an Account is managed from the workspace.
not_a_meeting400 invalid_requestOnly meetings have action items: this entry is not a meeting.
not_an_account400 invalid_requestinclude_workspace_notes is for an Account: call it with the org_id of an Account (in a workspace, filter with child_org_id instead).
not_an_image400 invalid_requestOnly images can be edited with the canvas editor.
nothing_to_apply400 invalid_requestNo item of the pack is included: nothing to create.
nothing_to_change400 invalid_requestSend add_tag_ids, remove_tag_ids or both.
nothing_to_retry409 conflictThis post has no failed publish job to retry.
order_mismatch400 invalid_requestorder must contain exactly the ids of the linked accounts of this platform, each once.
organization_changed409 conflictThe organization changed while the slug was being saved: retry.
owner_cannot_leave409 conflictAn owner cannot leave the organization: another owner has to change their role first.
owner_not_found404 not_found'…' is not a member nor an AI position of this organization: members.members.list and crm.ai_team.positions.list list them.
owner_not_member400 invalid_requestThe owner must be a member of the organization.
parent_mismatch403 permissionExplorer views can only be inherited from this account's own workspace.
parent_view_not_found404 not_foundThese views do not exist in the workspace: ….
participant_not_found400 invalid_requestThese participants are not people with access to the organization nor AI agents of the CRM team: …. Take them from crm.team.list.
partner_account_not_found404 not_foundNo account with that id belongs to this workspace.
partner_invitation_email_invalid400 invalid_requestThe email address is not valid.
partner_invitation_exists409 conflictThere is already a pending invitation for this email: resend it (partners.invitations.resend) or cancel it first.
partner_invitation_not_found404 not_foundNo partner invitation with that id was sent by this organization.
partner_invitation_not_pending409 conflictThe invitation is no longer pending (it was accepted, declined or cancelled).
partner_invitation_own_member400 invalid_requestThat email belongs to a member of this workspace: a partner is another organization.
partner_organization_not_found404 not_foundOne of the organizations of this request no longer exists.
partners_accounts_access_required403 permissionInviting partners requires edit access to Accounts in this workspace: only agency workspaces link other organizations as accounts.
partners_workspace_only409 conflictOnly a workspace (an organization without a parent) can do this: an account cannot invite partners or request billing changes.
pdf_render_failed500 internalThe PDF could not be rendered. Retry later.
pdf_render_timeout409 conflictRendering the PDF timed out. Try a shorter date range or fewer widgets, and retry.
permission_preset_not_found404 not_foundNo permission preset with that id in this organization.
permissions_owner_admin400 invalid_requestOwners and admins always have full access: their module permissions cannot be overridden.
person_exists_not_visible409 conflictA person with this email already exists in the CRM, but it is outside what you can see (another user owns it). Nothing was created: ask an admin to assign it to you.
person_not_found404 not_foundNo person with that id in this organization.
person_not_in_deal400 invalid_requestThe person is not linked to this deal (primary person or one of its persons).
phase_dates_inverted400 invalid_requestThe phase '…' ends before it starts.
phone_not_of_person400 invalid_requestto is not one of the phones of the person the conversation is tied to (personId, the deal's primary person or the prospect's person): send it to one of her numbers, or leave dealId and prospectId out.
photo_session_not_found404 not_foundNo photo session with that id in this organization.
pipeline_archived400 invalid_requestThe pipeline '…' is archived: its deals are hidden from the board. Pick an active one (crm.pipelines.list).
pipeline_not_empty409 conflictThe pipeline still has deals; move or delete them first.
pipeline_not_found404 not_foundNo pipeline with that id in this organization.
pipeline_required400 invalid_requestdefault_stage_id needs its default_pipeline_id (crm.pipelines.list).
pixel_not_in_account400 invalid_requestThe chosen pixel does not belong to the verified advertiser.
plain_text_without_html400 invalid_request… changes together with …: send both (or only …, and the plain text is derived).
plan_ensure_invalid400 invalid_requestThe ensure read '…' of step … is not a read operation.
plan_invalid400 invalid_requestThe plan does not match its schema${issue ?
plan_not_found404 not_foundNo content plan with that id in this organization (a Content Studio series is not a plan).
plan_ref_missing400 invalid_requestThe ensure read of step … references a value that no earlier step produced.
plan_too_large400 invalid_requestThe plan exceeds … bytes.
planner_post_invalid400 invalid_requestThe Social Planner rejected the post: … ….
platform_custom_name_required400 invalid_requestAn 'other' platform row needs platform_custom_name (e.g. Pinterest).
platform_immutable400 invalid_requestThe platform of a platforms-mode row cannot change: delete the row and create another one.
platform_mismatch400 invalid_requesturl is a … link, not ….
platform_not_in_connection400 invalid_requestA … connection does not list … accounts (it lists …).
platform_not_managed_by_workspace409 conflictThis platform is not set to use the workspace's connection in that Account: the Account has to make it available first.
platform_not_syncable400 invalid_requestOnly Google Ads, Meta Ads, TikTok Ads and LinkedIn Ads campaigns can be linked to a real campaign.
platform_required400 invalid_requestA campaign needs its ad platform.
platform_row_exists409 conflictThis plan already has a row for that platform: a platforms-mode plan has one row per platform (except 'other'), or the account total would be counted twice.
portal_account_invalid400 invalid_requestThese ids are not accounts of this workspace: … (list them with platform.orgs.list).
portal_client_not_found404 not_foundNo portal client with that id in this workspace.
portal_domain_already_set409 conflictThe client portal already has …: remove it before adding another custom domain.
portal_domain_not_found404 not_foundThat address is not one of this organization's client portal addresses.
portal_domain_not_set409 conflictThe portal has no custom domain: add it with branding.portal_domains.add and verify it with branding.portal_domains.verify (or in the app, Settings → Client Portal → Configuration) before turning it on.
portal_email_invalid400 invalid_requestThe email is not valid for a portal client: check its format; platform domains (mb-suite.com, mediabros.com, mediabros.app) are not allowed.
portal_invitation_exists409 conflictThere is already a pending invitation for this email: resend it (client_portal.invitations.resend) or cancel it first.
portal_invitation_not_found404 not_foundNo portal invitation with that id in this workspace.
portal_not_configured409 conflictThis workspace's portal has no address yet: add its subdomain with branding.portal_domains.add (or in Settings → Client Portal → Configuration; client_portal.settings.get shows it) before inviting clients.
portal_subdomain_not_set409 conflictThe portal has no subdomain yet: add it with branding.portal_domains.add (or in the app, Settings → Client Portal → Configuration) before turning it on.
position_invalid_type400 invalid_requestThe Sentiment Analyst id holds another kind of position.
post_changed409 conflictThe post changed while this operation was running: nothing was written, send it again.
post_locked409 conflictA … post can't be edited: its content is already queued or live. Cancel the schedule first with social_planner.posts.cancel_schedule, or duplicate it with social_planner.posts.duplicate.
post_not_found404 not_foundNo post with that id in this organization.
post_not_ready400 invalid_requestThe post is not ready to …: see details.issues (missing content or media, a date in the past, a network not connected or without permission, invalid network settings…).
post_not_scheduled409 conflictOnly a scheduled post can be rescheduled (this one is …): schedule it with social_planner.posts.schedule.
post_read_only409 conflictPosts synced from a social network are read-only in MB Suite.
post_reference_required400 invalid_requestSend url (the post's link on the network) or external_id with platform.
preset_unknown400 invalid_requestUnknown date preset '…'. Valid presets: ….
private_reply_not_supported400 invalid_requestThis source has no private reply (comment → direct message): only Facebook and Instagram comments do.
private_task_in_project400 invalid_requestA private task cannot belong to a project.
product_not_found404 not_foundNo product with that id in this organization.
profile_photo_fetch_failed409 conflictThe profile photo could not be fetched.
profile_photo_missing409 conflictThe user has no profile photo.
profile_photo_not_public409 conflictA Google Workspace profile photo cannot be fetched by the server: upload one instead.
project_item_not_found404 not_foundNo item '…' in this project: nothing was reordered.
project_not_found404 not_foundNo project with that id in this organization (or it is private to other people). If it was deleted in the last 30 days, it is in platform.trash.list, and platform.trash.restore brings it back.
project_scope_mismatch400 invalid_requestThe project belongs to another scope: use the project's account (or leave account_id out).
project_type_archived400 invalid_requestArchived types are not offered for new projects: unarchive it or choose another.
project_type_in_use409 conflictThis type still has ${usage.live === 1 ? "1 project" :
project_type_missing409 conflictThe project's type no longer exists: set a type_id together with the status_id.
project_type_not_found404 not_foundNo project type with that id in this organization.
project_type_without_statuses409 conflictThe type '…' has no statuses.
prospect_contact_not_visible403 permissionThis prospect's person or company belongs to another member and is outside what you can see: a seller with restricted scope cannot make it theirs or convert it. A Manager or an Admin can convert it, or assign it to them first.
prospect_convert_failed409 conflictThe conversion was rejected: ….
prospect_not_found404 not_foundNo prospect with that id in this organization.
prospect_origin_conflict400 invalid_requestSend fromProspectId (the deal is that prospect converted) or linkedFromProspectId (the deal follows a previous prospect), not both.
prospect_processed409 conflictThe prospect was already converted or merged.
prospects_not_owned403 permissionSome of these prospects belong to another seller.
publish_imminent409 conflictThe post goes out in less than 2 minutes (or is already due): MB Suite may be publishing it right now, so its time can't change. If it is still queued you can stop it with social_planner.posts.cancel_schedule.
publish_in_progress409 conflictThis post is already being published.
quote_emission_in_progress409 conflictAnother emission of this deal's quote is running; retry in a few seconds.
quote_has_no_lines409 conflictThe deal's quote has no line items: set them with crm.deals.update_quote first.
quote_page_not_found404 not_foundNo quote page with that id in this organization: take the ids from crm.quotes.pages.list.
quote_page_not_in_template400 invalid_requestThe template '…' does not attach …: …. include_page_ids picks among the template's page_ids (crm.quotes.config.get); add the page to the template with crm.quotes.templates.save first.
quote_pdf_failed500 internalThe PDF could not be generated; retry in a few seconds.
quote_template_last409 conflictThe synthetic 'Estándar' template is the organization's only one and would come back right away: create another template first.
quote_template_missing409 conflictThe organization has no quote template to build the document with.
quote_template_not_found404 not_foundNo quote template with that id in this organization: omit template.id to create one.
range_in_future400 invalid_requestto can't be after today (…, in the organization's time zone).
range_incomplete400 invalid_requestSend both from and to (YYYY-MM-DD), or neither to use period.
range_too_long400 invalid_requestThe range can span up to … days.
rank_check_in_progress409 conflictA check of this project is already running: wait for it to finish (seo_rankings.projects.get shows lastCheckStatus).
rank_duplicate_engine400 invalid_requestThe engine and country … appears twice.
rank_engine_in_use409 conflictCannot remove …: … active keyword(s) are measured only there. Assign them another country (seo_rankings.keywords.bulk.set_engines) or deactivate them first.
rank_engine_keys_required400 invalid_requestChoose at least one of the project's engine and country keys (google_AR, from seo_rankings.projects.get) to measure the keywords on.
rank_import_device_not_in_project400 invalid_requestThe project does not measure on …: import into one of its devices (…).
rank_import_engine_not_in_project400 invalid_requestThe project does not measure …: import into one of its engines (…).
rank_invalid_domain400 invalid_requestThe domain is not a valid host name (example.com).
rank_keyword_not_found404 not_foundNo tracked keyword with that id in this organization.
rank_keywords_already_exist409 conflictThe project already has an active keyword with that text.
rank_label_not_found404 not_foundNo keyword label with that id in this organization.
rank_no_active_keywords409 conflictThe project has no active keywords to check: add or activate keywords first.
rank_no_valid_keywords400 invalid_requestNo valid keyword was given (they are all empty after trimming).
rank_position_key_not_measured400 invalid_requestThe project does not measure …: use one of its measured_pos_keys (…), or leave position_key out for the main one.
rank_project_exists409 conflictThis account already has a rank tracking project (one per account): edit it with seo_rankings.projects.update.
rank_project_not_found404 not_foundNo rank project with that id in this organization.
rank_unknown_location400 invalid_request… is not one of the supported countries (…): send its DataForSEO locationName and languageCode.
reassignment_target_missing400 invalid_requestThe reassignment target stage does not exist.
reassignment_to_won_stage400 invalid_requestDeals cannot be moved into the won stage by reassignment.
receiver_not_in_crm_team400 invalid_requestOnly direct members of the organization who are on the CRM team can ring on a line.
receiver_not_seller400 invalid_requestUser … is not a CRM seller (no crm_users entry).
receiver_without_crm_access400 invalid_requestUser … has no access to the CRM.
receiver_without_phones_access400 invalid_requestThe user … has no access to Phones in this organization: only people who can use Phones can ring.
recipient_without_access400 invalid_requestnotify_extra_user_ids must be people with access to this organization: ….
recipients_required400 invalid_requestAn alert needs at least one recipient: a member who can see the watched organization (alerts.recipients.list) or an external email.
recording_notice_required400 invalid_requestTurning call recording on means accepting the recording notice (version …) for this organization: the people on the call must be told it is recorded. Send recording_notice_accepted: true to accept it.
records_not_owned403 permissionSome of these records belong to another seller: a seller only archives her own and the unassigned ones.
reply_not_pinnable400 invalid_requestReplies cannot be pinned: pin the top-level entry.
reply_not_supported400 invalid_requestThis item cannot be replied to through the API of its network (an Instagram photo tag or a LinkedIn direct message is read-only).
reply_too_long400 invalid_requestThe reply is too long for this channel: … of … ….
reply_window_closed409 conflictThe reply window of this network is closed for this conversation.
reply_window_expired409 conflictThe network's reply window for this conversation is closed (24 hours from the person's last message for an integration; up to 7 days only for a person replying from the screen).
report_block_slot_unknown400 invalid_request'…' is not a data slot of the template (nor a platform or a connection id). Valid slots: ….
report_block_type_unknown400 invalid_requestUnknown block type '…'. Valid types: ….
report_instance_finalized409 conflictThis report instance is finalized and read-only: duplicate it to edit a copy.
report_instance_not_finalized409 conflictOnly finalized report instances can be published to the client portal.
report_instance_not_found404 not_foundNo report instance with that id in this organization. List them with reports.instances.list.
report_instance_without_account409 conflictOnly reports generated for an account can be published to that account's portal.
report_not_found404 not_foundNo report with that id in this organization. List them with reports.reports.list.
report_pdf_missing404 not_foundThe PDF file of this report instance is no longer in storage: generate it again with reports.instances.export_pdf.
report_pdf_not_found404 not_foundThis report instance has no PDF yet: generate it with reports.instances.export_pdf.
report_section_template_not_found404 not_foundNo section template with that id in this organization. List them with reports.section_templates.list.
report_template_not_found404 not_foundNo report template with that id in this organization. List them with reports.templates.list.
report_theme_not_found404 not_foundNo report theme with that id here (system themes too). List them with reports.themes.list.
reserved_field_slug400 invalid_request'…' is a base column of the items; choose another slug.
role_above_credential_ceiling403 permissionAn API key or an app can give at most the … role: making someone an admin or an owner is done in MB Suite, signed in.
routing_field_reserved400 invalid_requestThe routing field cannot be the honeypot field.
rule_assignee_invalid400 invalid_requestassign.user_id must be a member or an active AI Community Manager (ai-<positionId>).
rule_cm_missing400 invalid_requestreply_with_cm.position_id is not an active AI Community Manager of this organization.
rule_crm_source_missing400 invalid_requestsend_to_crm.source_id is not a direct-message lead source of this organization.
rule_destination_required400 invalid_requestEach LinkedIn rule needs the destinationId of a verified conversion rule.
rule_destination_unknown400 invalid_requestThe chosen conversion rule does not belong to the verified ad account.
rule_event_not_standard400 invalid_requestThe event is not a TikTok standard event.
rule_fixed_value_invalid400 invalid_requestA fixed value must be greater than 0.
rule_labels_missing400 invalid_requestadd_labels.label_ids must include at least one inbox label of this organization.
rule_multiple_responses400 invalid_requestA rule can have at most one reply action (reply_snippet or reply_with_cm).
rule_notify_invalid400 invalid_requestnotify.user_ids must include at least one member of this organization.
rule_response_needs_condition400 invalid_requestA rule that replies needs at least one condition (keywords, source, account, post, schedule or first message only): otherwise it would answer the whole inbox.
rule_scope_widening409 conflictThis change makes the rule '…' global: every lead without a more specific rule would follow it. Send confirm_global: true to do it on purpose, or keep source_id / pipeline_id.
rule_snippet_missing400 invalid_requestreply_snippet.snippet_id does not exist in this organization.
rule_stage_required400 invalid_requestA stage_entered rule needs the stageId that triggers it.
rule_value_required400 invalid_request… requires a value: it is not sent without an amount.
schedule_invalid400 invalid_requestThe schedule has no upcoming run: a one_shot needs send_at in the future; a recurring one needs a valid frequency, day, hour and time zone.
scheduled_at_in_past400 invalid_requestscheduled_at must be in the future.
scheduled_at_not_editable409 conflictThe send date of a scheduled campaign does not change through update: reschedule it with email_marketing.campaigns.schedule (or take it back to draft with email_marketing.campaigns.unschedule).
scheduled_at_too_far400 invalid_requestscheduled_at can be at most one year ahead.
seller_not_found400 invalid_requestUser … is not a CRM seller.
sender_cannot_send_email403 permissionThe owner of that mailbox cannot send emails in this organization.
sender_email_domain_mismatch400 invalid_requestThe sender must be an address of the verified domain (…@…).
sender_exists409 conflictA sender with that address already exists.
sender_ids_mismatch400 invalid_requestsenderIds must list every sender id exactly once.
sender_name_required400 invalid_requestThe sender name cannot be empty.
sender_name_too_long400 invalid_requestThe sender name is too long (max … characters).
sender_not_allowed403 permissionYou cannot send from that sender: use one of contacts.email.list_senders (a sender of the organization's verified domain).
seo_action_template_not_found404 not_foundNo SEO action template with that id is reachable from this organization.
seo_item_not_found404 not_foundNo SEO planner action with that id in this organization.
seo_pack_item_not_found404 not_foundNo item with that id in the pack.
seo_pack_not_found404 not_foundNo SEO action pack with that id is reachable from this organization.
sequence_cycle409 conflictThis would create a loop between sequences: … (via …). A contact would keep cycling between them.
sequence_enrollment_not_found404 not_foundNo sequence enrollment with that id in this organization.
sequence_enrollment_status_conflict409 conflictThe enrollment is not in a status that allows this operation: see details.status and details.allowed.
sequence_inactive409 conflictstartAt only works on an active sequence: in an inactive one the contacts wait as pending and all start when it is activated, so the time would be lost. Activate it first, or enroll without startAt.
sequence_mode_downgrade409 conflictAn advanced sequence cannot go back to simple mode.
sequence_not_found404 not_foundNo sequence with that id in this organization.
sequence_notify_recipient_invalid400 invalid_requestThe recipient of a 'notify user' step must be a member of this organization (never an AI position).
sequence_remove_target_not_allowed403 permissionA 'remove from sequence' step can only point to a sequence you can manage: "…" belongs to someone else.
sequence_ruleset_not_found404 not_foundNo sequence sending rules with that id in this organization.
sequence_schedule_not_found404 not_foundNo sequence schedule with that id in this organization.
sequence_sender_not_allowed403 permissionOnly CRM admins can send from another seller's Gmail.
sequence_sender_not_verified400 invalid_requestThe SES sender … is not a verified sender of this organization's email domain.
sequence_steps_incomplete409 conflictThe sequence has … incomplete 'move deal stage' step(s): set the destination pipeline and stage in each before activating it.
sequence_whatsapp_template_unsupported400 invalid_requestThe WhatsApp template "…" (…) of step … cannot be sent from MB Suite: …. Choose another template for that step.
sequence_without_steps409 conflictThe sequence has no steps: add at least one before enrolling contacts.
series_not_found404 not_foundNo Content Studio series with that id in this organization (Ad Creator creatives are not series).
ses_identity_not_found409 conflictThe email provider has no identity for this domain: remove it and add it again.
share_html_expired409 conflictThe stored email is no longer available (it is older than 12 months).
share_html_unavailable409 conflictThis email has no stored HTML copy (sent before February 21, 2026).
share_pdf_expired409 conflictThe stored PDF is no longer available (it is older than 12 months).
share_pdf_unavailable409 conflictThis email has no stored PDF (sent before February 21, 2026, or in html format).
simulate_empty400 invalid_requestmode text needs a text to test.
simulate_missing400 invalid_requestmode post needs root_resource_id (the post).
single_won_stage400 invalid_requestOnly one stage can be the won stage.
sitemap_not_found404 not_foundNo sitemap with that feedpath is submitted to this property: see seo_indexation.sitemaps.list.
slot_conflict409 conflictThat slot overlaps another confirmed booking of the seller.
slot_taken409 conflictSomeone else just booked that slot: read crm.booking.availability again and pick another one.
slot_unavailable409 conflictThat start is sooner than the event type's minimum notice: pick a later slot from crm.booking.availability.
slug_taken409 conflictAnother organization already uses that slug: choose a different one.
slug_unavailable409 conflictCould not find a free slug for the copy.
sms_not_supported409 conflictThis line cannot send SMS (the number has no SMS capability).
snooze_in_past400 invalid_requestsnoozed_until must be a future time (ms since epoch).
social_competitor_not_found404 not_foundNo competitor with that id in this organization.
social_post_not_found404 not_foundNo post matching that reference among what the connected … account published between … and …….
source_blocks_not_found400 invalid_requestNone of the source blocks exist in the saved report.
source_blocks_without_data409 conflictThe source blocks returned no data to analyze.
source_not_allowed400 invalid_requestPlans created through the API are imports (source 'import'); 'chat' is MIA's plan card.
stage_not_empty409 conflictThe removed stage still has deals; reassign them first.
stage_not_found404 not_foundNo pipeline of this organization has the stage of rules[…].
stage_not_in_pipeline400 invalid_requestThe stage of rules[…] is not a stage of its pipeline "…".
stage_too_large409 conflictThe stage has too many deals to reassign at once; move them in parts first.
status_not_allowed400 invalid_requestOnly workflow statuses can be set (draft, internal_review, client_review, changes_requested, approved). Use social_planner.posts.schedule or social_planner.posts.publish_now to publish.
status_not_done400 invalid_requestUse a status of the DONE category to complete a task (task_management.config.get lists them).
status_not_found400 invalid_request'…' is not a status of the type '…' (…).
status_not_open400 invalid_requestUse a status of the OPEN category to reopen a task (task_management.config.get lists them).
storage_object_not_found404 not_foundNothing was uploaded to that storagePath: upload the file first with the URL from crm.files.uploads.create (it expires 10 minutes after it is issued).
storage_path_invalid400 invalid_requeststoragePath must be a file uploaded for this record with crm.files.uploads.create (organizations/{orgId}/crm/files/{entityType}/{entityId}/…).
strategy_generating409 conflictThe strategy is already generating: wait for that run to finish.
strategy_not_found404 not_foundNo strategy with that id in this organization.
strategy_not_ready409 conflictThe strategy has no generated result to export yet (it is generating for the first time or its generation failed).
subdomain_reserved400 invalid_requestThat subdomain is reserved by MB Suite.
subscription_required402 payment_requiredThe organization's subscription is not active: the activity timeline is read-only until it is settled.
subtask_scope400 invalid_requestA subtask follows its parent: change the scope of the parent task.
suppression_compliance_locked403 permissionThe address … unsubscribed or complained: only the person can opt back in (through a form or the preferences link), not an API key or an app. A credential can only undo, within an hour, an unsubscribe it added itself through the API.
system_credential400 invalid_requestSystem-level connections cannot be disconnected.
system_media_plan_template_not_found404 not_foundNo published system media plan template with that id.
system_monitor_not_found404 not_foundNo published system monitor with that id.
system_report_template_not_found404 not_foundNo published system report template with that id. List them with reports.system_templates.list.
system_template_not_found404 not_foundNo published system template with that id. List them with dashboards.templates.list (source SYSTEM).
system_theme_read_only409 conflictSystem themes cannot be edited or deleted: create your own with reports.themes.create (you can copy its colors from reports.themes.get).
target_access_denied403 permissionYou do not have full access to Tasks in the destination organization.
target_org_invalid400 invalid_requesttargetOrgId must be this organization or one of its accounts.
target_org_not_found404 not_foundNo account with that id belongs to this workspace.
target_required400 invalid_requestOne of dealId, personId, companyId or prospectId is required.
target_unavailable400 invalid_requestThat Account is archived or not activated yet: alerts can only watch active Accounts.
task_access_denied403 permissionCreating a task needs full access to the Tasks module in this organization.
task_label_not_found404 not_foundNo task label with that id in this organization. If it was deleted in the last 30 days, it is in platform.trash.list, and platform.trash.restore brings it back.
task_not_found404 not_foundNo task with that id in this organization (private tasks only exist for their creator and assignee). If it was deleted in the last 30 days, it is in platform.trash.list, and platform.trash.restore brings it back.
task_pack_item_not_found404 not_foundNo item with that id in the pack. If it was deleted in the last 30 days, it is in platform.trash.list, and platform.trash.restore brings it back.
task_pack_not_found404 not_foundNo task pack with that id. If it was deleted in the last 30 days, it is in platform.trash.list, and platform.trash.restore brings it back.
template_filters_unsupported400 invalid_requestThis template has no default data source whose platform supports global filters${platformId ?
template_header_variables_unsupported400 invalid_requestMB Suite cannot send WhatsApp templates with variables in the header yet (it only sends the body's variables): use a template whose header has no {{n}}.
template_media_header_unsupported400 invalid_requestMB Suite cannot send WhatsApp templates with a non-TEXT header (IMAGE, VIDEO, DOCUMENT or LOCATION) yet (it does not attach the header's file or location): use a template with no header or with a text header.
template_not_found404 not_foundNo dashboard template with that id is available to this organization. List them with dashboards.templates.list.
template_not_published400 invalid_requestThe monitor template is a draft: publish it first (monitors.templates.publish).
template_parent_mismatch403 permissionAn inherited template can only come from this account's own workspace.
template_platform_mismatch400 invalid_requestThe monitor template is built for …, not for ….
template_too_large400 invalid_requestThe template would exceed … bytes: fewer pages or widgets.
template_variables_not_sequential400 invalid_requestTemplate variables must be sequential starting at {{1}}.
territory_not_found404 not_foundThese territories do not exist: …. Take the ids from crm.territories.list.
test_key_no_special_permissions400 invalid_requestA test key works on the practice organization: it cannot reveal vault passwords, edit live AI agents or create AI agents.
text_too_long400 invalid_requestThe text exceeds the … … this network accepts.
thumbnail_only_for_videos400 invalid_requestOnly videos and documents take a thumbnail (an image is its own preview).
thumbnail_path_invalid400 invalid_requestthumbnail_storage_path must be a thumbnail uploaded with media_library.uploads.create (purpose video_thumbnail or document_thumbnail).
too_many_accounts400 invalid_requestAt most … new Account assignments per call.
too_many_items400 invalid_requestApplying this pack would create … actions (max …).
too_many_labeled_contacts409 conflictMore than … contacts carry this label: the trash could not put it back on all of them. Delete it from the app.
too_many_labeled_items409 conflictMore than … credentials carry this label: delete it from the app.
too_many_labeled_tasks409 conflictMore than … tasks carry this label: delete it from the app.
too_many_projects_affected400 invalid_requestThis change would update … projects at once (more than one batch): split it (for example, remove one status at a time).
too_many_replies409 conflictThis entry has more than … replies: delete some replies first.
too_many_tagged_articles409 conflictMore than … articles carry this tag: the trash could not put it back on all of them. Delete it from the app.
too_many_tasks400 invalid_requestApplying this pack would create … tasks (max …).
tracking_not_configured409 conflictThe tracking pixel is not set up in this organization: enable it first with organizations.tracking.enable.
trigger_event_required400 invalid_requestA flow triggered by an event needs trigger_event_name (contact_added or contact_labeled).
unknown_campaign_ids400 invalid_requestSome ids are not rows of the original plan: see details.campaign_ids (row ids come from media_planner.campaigns.list).
unknown_dimension400 invalid_request'…' is not a dimension of ….
unknown_issue_id400 invalid_request'…' is not an issue of the audit engine${suggestions.length > 0 ?
unknown_label_ids400 invalid_requestThese label ids are not campaign labels of this organization or its workspace: ….
unknown_metric400 invalid_request'…' is not a metric of ….
unknown_platform400 invalid_request'…' is not a platform of the Explorer.
unsupported_filter400 invalid_requestinclude_workspace_notes lists newest first and without the pinned filter.
unsupported_order400 invalid_requestPinned and unpinned entries can only be listed newest first: drop order=asc or the pinned filter.
updates_conflict400 invalid_requestSend the fields at the top level or inside updates, not both (… came outside).
url_not_in_property400 invalid_requestThe URL is not inside the property: a URL-prefix property needs the same protocol and host and a URL under its path; a domain property covers any protocol and subdomain. Google may also refuse a URL the connected account cannot inspect.
url_not_recognized400 invalid_requesturl is not a valid link.
user_not_found404 not_foundNo MB Suite user with that id.
user_not_member404 not_foundThat user is not a member of this organization.
user_slug_taken409 conflictAnother seller of the organization already uses that slug.
utm_url_invalid400 invalid_requesturl is not a valid web address. Send an http or https URL such as https://example.com/landing (https:// is added when the scheme is missing); other schemes (ftp:, mailto:, javascript:) cannot carry UTM parameters.
validation_failed400 invalid_requestSome values do not pass the form's field rules: see details.fields.
vault_access_user_invalid400 invalid_requestThese access.user_ids are not members of this organization: ….
vault_account_invalid400 invalid_request'…' is not an account of this workspace.
vault_app_only403 permissionPasswords and secure links are only available in the MB Suite app: never through an API key, an OAuth app or the support channel.
vault_item_access_denied403 permissionVault item '…' has custom access that does not include you.
vault_item_not_found404 not_foundNo vault item '…' in this organization.
vault_item_not_shareable400 invalid_requestVault item '…' has nothing to share (no username, server, URL, port or secret).
vault_label_not_found404 not_foundNo vault label with that id in this organization. If it was deleted in the last 30 days, it is in platform.trash.list, and platform.trash.restore brings it back.
vault_request_account_required400 invalid_requestA workspace asks for access on behalf of one of its accounts: send assigned_child_org_id.
vault_request_email_unavailable409 conflictEmailing access requests is not available yet in MB Suite: send the link from the app (Vault → Requests) meanwhile.
vault_request_not_found404 not_foundNo access request with that id in this organization.
vault_request_not_pending409 conflictThe access request is no longer pending.
vault_request_recipient_email_required400 invalid_requestThe access request has no recipient email: create the request with recipient.email to have MB Suite email it.
vault_request_recipient_is_self400 invalid_requestThe access request's recipient is the person behind this API key or app: the secure link only goes to the client. Create the request with the client's email as recipient.
vault_reveal_needs_vault_scope400 invalid_requestRevealing vault passwords also needs the vault scope (read or write) on the key.
vault_reveal_not_granted403 permissionThis API key cannot reveal this credential's password: an owner or admin adds the credential to the key's Vault reveal list (only on the key's own organization).
vault_share_key_invalid400 invalid_requestThe key must be 8 symbols of the share-key alphabet (XXXX-XXXX).
vault_share_mixed_clients400 invalid_requestAll the items of a shared link must belong to the same client account.
vault_share_not_active409 conflictThe shared link is no longer active.
vault_share_not_found404 not_foundNo shared link with that id in this organization.
vendor_not_crm_user400 invalid_requestThe seller (userId) is not a member of the CRM team.
vendor_not_found404 not_foundvendor_user_id is not a person with access to this organization: take it from crm.calendar.vendors.list or crm.team.list.
viewer_not_allowed400 invalid_requestMembers with the viewer role cannot operate the CRM.
visibility_agency_requires_account400 invalid_requestThe 'agency' visibility exists only in an account (child organization): it hides the project from the account's own members.
visible_to_requires_custom400 invalid_requestvisible_to_user_ids only applies to the 'custom' visibility.
web_form_already_linked409 conflictThis form is already linked to another lead source: unlink it first with web_forms.forms.unlink_crm.
web_form_not_found404 not_foundNo web form with that id in this organization. If it was deleted in the last 30 days, it is in platform.trash.list, and platform.trash.restore brings it back.
web_form_submission_is_test409 conflictThat response is a test from the editor or web_forms.forms.test_submit (origin __test__), not one that came in through the public endpoint: there is nothing to record.
web_form_submission_not_found404 not_foundNo response with that id in this form.
web_form_submission_rejected409 conflictThat response was rejected by the form's filters (spam, honeypot or reCAPTCHA): it was stored without its values, so its notification cannot be re-sent.
web_form_submission_too_old409 conflictOnly a response received in the last … minutes can be recorded as a test made through the public endpoint.
webhook_log_already_retried409 conflictThis entry was already re-processed successfully.
webhook_log_not_found404 not_foundNo webhook log with that id in this organization.
webhook_log_not_retryable409 conflictOnly error entries of generic webhook and MB Suite form sources carry a payload that can be re-processed.
whatsapp_line_not_crm409 conflictThat WhatsApp line is not a CRM line: lead sources are created only on CRM lines.
whatsapp_line_not_subscribed409 conflictThat WhatsApp line is not subscribed to MB Suite's webhook yet: add it again from CRM → Settings → Lines → WhatsApp.
whatsapp_number_not_in_waba409 conflictOne of the new numbers does not belong to the WhatsApp account it was sent with.
whatsapp_numbers_in_app400 invalid_requestWhatsApp numbers are linked and unlinked from the app (Data sources, or CRM → Settings → Phones and WhatsApp).
whatsapp_owner_unknown409 conflictThe Meta business of one of the new numbers could not be identified: try again in a moment.
whatsapp_reminder_requires_phone400 invalid_requestA WhatsApp reminder needs the phone field enabled and required.
whatsapp_same_business_account409 conflictBoth lines belong to the same WhatsApp Business account: templates are already shared.
whatsapp_template_not_found404 not_foundNo synced WhatsApp template matches that name and id on this line's WhatsApp Business account; run crm.whatsapp.templates.sync first.
won_at_in_future400 invalid_requestwonAt cannot be in the future.
won_stage_invalid400 invalid_requestThe pipeline '…' has no won stage: mark the deal won without wonStageId and it keeps its stage.
workspace_member_not_found404 not_foundNo direct member of this Account's workspace matches that user id or email.
workspace_required400 invalid_requestAlerts are created in the workspace and watch its Accounts through target_org_id: call this on the workspace (its org_id, or none; over REST, without MB-Organization).