Cambios recientes

Cambios destacados en la API por fecha.

2026-09-07

  • Memoria del bot — fuentes nuevas: notas escritas a mano (POST /bot/knowledge/notes, PATCH /bot/knowledge/notes/:id) y páginas web públicas (POST /bot/knowledge/url). Con syncEveryHours la página se vuelve a leer cada N horas y solo se reprocesa si cambió el contenido. Los archivos aceptan además CSV.
  • Memoria del bot — búsqueda híbrida: la recuperación combina parecido semántico y palabras exactas en español (Reciprocal Rank Fusion). POST /bot/knowledge/search devuelve cada fragmento con similarity y porTexto; un acierto por palabra exacta se usa aunque no llegue a knowledgeMinSimilarity.
  • Memoria del bot — vacíos de conocimiento: GET /bot/knowledge/insights?dias= resume qué buscó el bot, las preguntas que quedaron sin respuesta agrupadas, el uso por agente y por documento. Una nota cierra un vacío con resolvesQuestionKey.
  • Agentes: documentos por agente con knowledgeDocIds en POST/PATCH /bot/agents (vacío = toda la biblioteca). knowledgeTags sigue funcionando, con menor precedencia.
  • Bot fuera de horario: cuando el cliente pide asesor y el equipo está cerrado, el bot ya no traspasa. Crea una tarea para el equipo (origin BOT), le dice al cliente cuándo lo contactan y sigue atendiendo. Por número en PUT /bot/config/:phoneId con outOfHoursTaskEnabled, outOfHoursTaskMessage ({apertura}) y outOfHoursTaskGraceMin; evento HANDOFF_DEFERRED. Guía en Handoff a humano.
  • Seguimiento por silencio: followUpEnabled, followUpAfterMin, followUpCloseAfterMin, followUpMode (AI | TEXT), followUpMessage y followUpCloseMessage en la misma configuración; eventos FOLLOWUP_SENT, FOLLOWUP_SKIPPED y FOLLOWUP_CLOSED.
  • Agentes: el traspaso entre agentes es invisible para el cliente (el destino responde en el mismo turno) y una etiqueta de ruteo ya no lo deshace.
  • Contrato OpenAPI: los cuerpos declarados en los controladores salen documentados en /openapi.json (varios POST/PATCH aparecían sin campos). Los SDKs y el portal se generan de ahí.

2026-09-06

  • Agentes multicanal: phoneNumberIds en POST/PATCH /bot/agents (vacío = todos los canales, incluidos web chat e Instagram); GET /bot/agents?phoneNumberId= filtra por canal. phoneNumberId (uno solo) queda como atajo legado.
  • Rendimiento por agente: GET /bot/agents/stats?dias= — conversaciones, respuestas, traspasos, escalamientos, ventas, citas, fallos, tokens y costo por agente y por canal. Lo anterior a la medición y lo del router sale como «sin atribuir».
  • Conversaciones: PATCH /conversations/:id/agent { agentId } fija a mano qué agente del bot atiende (null = que decida el enrutador). El detalle de la conversación incluye ahora sus etiquetas.
  • Enrutamiento: las routeTags son únicas (una etiqueta → un agente; 400 si choca) y el paso transfer_to_ai de los flujos acepta agentId para entregar a un agente concreto.
  • Passkeys: se acepta el origen Android de la app (huella de firma de Play) además del origen web; el login con passkey funciona desde la app móvil.

2026-09-05

  • Tiempo real: evento conversation.created para conversaciones nuevas en el canal del panel.
  • Mensajes: las plantillas se envían siempre al teléfono; el BSUID del contacto se usa solo para mensajes de sesión.

2026-09-04

  • Sesiones: GET /auth/me/sessions lista los dispositivos con sesión (una por sesión, marcando la actual); DELETE /auth/me/sessions cierra todas las demás y DELETE /auth/me/sessions/:id una en particular.
  • Miembros: PATCH /memberships/:id/suspension { suspended } suspende o reactiva el acceso de un miembro sin eliminarlo; /memberships/me devuelve suspended.
  • Ventas: POST /sales/einvoicing/license-orders/draft crea (o reutiliza) el pedido borrador de una venta de licencia sin emitir, para revisarlo y facturarlo después.
  • Licencias: POST /license-delivery/orders/:orderId/keys/:keyId/replace reemplaza una llave entregada que no funcionó (revoca la vieja, entrega una nueva) y dispara el webhook license.key_replaced. Mensaje y correo de reemplazo configurables.
  • Proveedores de IA: GET /bot/agents/modelos lista proveedores con sus modelos elegibles y si hay clave; las claves de Anthropic ligadas a identidad aceptan el Workspace ID (BYOK).

2026-09-03

  • Licencias: venta de carrito desde el asesor — POST /license-delivery/conversations/:conversationId/sell-cart (varios productos, una sola orden; method NEQUI o TRANSFERENCIA), con precio editable por línea.
  • Cobros: método TRANSFERENCIA (Bre-B a una llave, sin pasarela) junto a NEQUI y DAVIPLATA en el checkout y en la venta al chat.
  • Webhooks salientes: conversation.assignment_changed (asignar, reasignar o soltar una conversación). sale.completed incluye las llaves entregadas y phoneNumberId, para hooks con scope por número.

2026-09-02

  • Contactos: botExcluded en PATCH /contacts/:id — el bot no le responde nada a ese contacto (exclusión total).
  • Webhooks salientes: POST /webhooks-outbound/:id/test envía un evento webhook.test para comprobar el endpoint; evento nuevo sale.completed para ventas de licencias.

2026-08-30

  • Conversaciones: POST /conversations/:id/devolver-al-bot reactiva el bot tras un traspaso conservando el contexto.
  • Bot: ajuste de organización botMemoryResetHours (cada cuánto el bot olvida el historial de una conversación) y catálogo de modelos ampliado; los modelos que deprecaron temperature (Claude 5.x, gpt-5.x) ya no fallan.

2026-08-28

  • Conectores: módulo nuevo (/conectores) — WHMCS, Plesk, cPanel/WHM, WordPress/WooCommerce y HTTP genérico con catálogo cerrado de acciones, prueba de conexión y ejecución; identidad del cliente verificada por correo y acciones con confirmación del cliente o aprobación humana.
  • Licencias: cobro por transferencia a una llave (Bre-B) sin pasarela, bandeja de pagos conciliada con el correo del banco y QR de la llave; webhooks license.transfer_confirmed y license.payment_unmatched.

2026-08-23

  • Bot: GET /bot/salud (qué se está rompiendo y qué hacer), POST /bot/agents/:agentId/probador (conversar con un agente sin que salga nada al cliente), POST /bot/agents/:agentId/configurador (proponer cambios al prompt conversando) y catálogo de servicios /bot/servicios para sacar precios y enlaces del prompt.
  • Flujos: GET /bot/flows/plantillas con flujos de ejemplo; pasos nuevos: enviar imagen, enviar documento, botón de enlace y transfer_to_ai (entregar la conversación a la IA).

2026-08-19

  • Bot: librería de imágenes (/bot/images) que el agente IA, las auto-respuestas (acción «enviar imagen») y los flujos pueden enviar.
  • Licencias: vigencia por licencia y aviso de renovación automático (GET/POST /license-delivery/renewal-template); la respuesta del cliente al aviso tiene consecuencia.
  • Bot: activar una capacidad que el plan no incluye responde 400 con el nombre de la función.

2026-08-17

  • Listas de contactos: importar un CSV dentro de una lista (POST /contact-lists/:id/import), quitar contactos en bloque (DELETE /contact-lists/:id/members) y por filtro (POST /contact-lists/:id/remove-by-filter).
  • Versionado: GET /health devuelve la versión que está corriendo; todo el producto comparte un solo número desde la 2.1.0 (info.version de openapi.json va una versión por detrás del deploy).
  • Planes: catálogo de funciones contratables; Catálogo de WhatsApp y Flows pasan a ser funciones del plan.

2026-08-14

  • Jornada laboral — festivos y novedades: nueva API para el calendario de la organización. Alta masiva de festivos (POST /attendance/holidays, acepta varios de una vez), siembra del calendario oficial de un país y año (POST /attendance/holidays/seed) y novedades por persona —vacaciones, incapacidades, permisos— que tocan un rango de fechas (GET/POST/DELETE /attendance/leaves).
  • Jornada laboral — forma de trabajo: cada miembro puede estar en turno fijo o por horas (GET /attendance/work-modes, PATCH /attendance/work-modes/:agentId). Quien trabaja por horas no acumula ausencias por no cubrir un horario: se le cuenta lo trabajado. También se agregaron atajos de período —quincena, últimos 15/30 días, mes— resueltos en la zona horaria de la organización (GET /attendance/period-presets).
  • Bot: búsqueda semántica sobre la base de conocimiento (POST /bot/knowledge/search), que devuelve los fragmentos relevantes con su puntaje.
  • Difusiones: reintento en sitio de los destinatarios fallidos de un envío (POST /broadcasts/:id/retry-failed), sin crear una difusión nueva.

2026-08-06

  • Agentes de bot: la automatización pasa de un solo bot a agentes especializados (ventas, soporte…), cada uno con sus capacidades activables. CRUD completo en /bot/agents y catálogo de capacidades en /bot/agents/capabilities.

2026-08-05

  • Ventas y facturación electrónica: módulo nuevo con 31 endpoints. Productos, pedidos y perfiles de facturación por contacto (/sales/products, /sales/orders, /sales/billing-profiles), emisión de facturas y notas crédito, PDF por token firmado, y configuración del emisor con varias empresas emisoras (/sales/einvoicing/companies). Los permisos se separan: `sales:write` para operar y `sales:config` para tocar la configuración fiscal.

2026-08-04

  • Entrega de licencias digitales: módulo nuevo con 40 endpoints. Productos con variantes y pool de llaves, listas de precios, cupones, imágenes de producto, y el circuito completo de pedido → cobro → entrega automática por chat. Las llaves ya entregadas no se pueden borrar; al eliminar una variante sin ventas sus llaves libres vuelven al pool.
  • Cobros con Wompi: webhook de conciliación con validación de firma, general (POST /webhooks/wompi) y con URL propia por organización (POST /webhooks/wompi/:orgId).

2026-07-24

  • Agenda de citas: módulo nuevo con 20 endpoints. Reglas semanales de disponibilidad, días bloqueados por festivo o vacaciones, citas con filtros por rango/estado/contacto, y feed ICS público por token para suscribir la agenda desde cualquier calendario (GET /public/agenda/:token/calendar.ics).
  • Agenda — Google Calendar: conexión por OAuth (/agenda/google/connect y /callback), estado de la conexión, envío de citas al calendario y bloqueo automático de los huecos ocupados.
  • Agenda — reserva por WhatsApp Flow: se envía al contacto un Flow con selector de fecha nativo (POST /agenda/booking-flow/send) y su endpoint de datos para Meta.

2026-07-15

  • Cobros con Nequi: pago push a la app del celular (POST /billing/nequi/push), QR dinámico por monto (POST /billing/nequi/qr), consulta de estado en vivo y cancelación del pago pendiente.
  • Comprobantes de pago Bre-B/QR: la organización puede reportar un pago con su comprobante (POST /billing/payment-reports) y consultar la llave Bre-B de cobro para el modal.
  • Facturación: cambio de intervalo mensual/anual desde la API (PATCH /billing/interval).
  • Preferencias de interfaz por miembro (PATCH /memberships/me/preferences).
  • Números: sincronización de coexistencia con Meta —contactos e historial— (POST /phone-numbers/:id/coexistence/sync), y reintento de suscripción a los webhooks de una WABA (POST /waba/:id/webhooks/resubscribe).

2026-06-24

  • API v1.0.0: la referencia ahora cubre 68 módulos y ~400 endpoints. Se agregaron los módulos nuevos descritos abajo.
  • Recordatorios de jornada: API para configurar los avisos de turno de cada agente (inicio de turno, hora de almuerzo, regreso y fin de jornada), con anticipación configurable y canales por navegador, panel o correo (GET/PUT /organizations/:orgId/shift-reminders).
  • Equipo y turnos: endpoints de asistencia (entrada/salida, estado de trabajo) y de horarios de turno semanales por agente (franjas y almuerzo por día).
  • Tiendas (e-commerce): API para conectar WooCommerce/Shopify, mapear eventos de tienda (pedido, pago, envío, carrito abandonado) a plantillas de WhatsApp y revisar el log de eventos. Incluye el catálogo de plantillas de tienda listas para crear/sincronizar.
  • Avisos del sistema: endpoint para consultar los banners de estado activos que Mosend publica para todas las organizaciones.
  • Web Chat: el canal ahora soporta horario de atención por canal y acciones fuera de horario (ocultar, mostrar aviso, pedir correo o dejar mensaje con confirmación).
  • Mensajería: baja automática por palabra clave (opt-out) configurable por organización.

2026-06-06

  • Documentos: nueva API para gestionar los archivos de la organización — subir y organizar en carpetas, papelera con restaurar/purgar, uso de almacenamiento, enviar un documento a una conversación de WhatsApp (POST /documents/:docId/send), guardar un adjunto entrante como documento (POST /documents/from-message) y edición en vivo con OnlyOffice (editor-config + callback de guardado).
  • Páginas de enlaces (link-in-bio): API para crear páginas tipo Linktree — CRUD de páginas e ítems, subir avatar y portada, reordenar ítems, archivar y restaurar. El perfil público (GET /link-pages/p/:handle) y el redirect con seguimiento de clics (/go/:itemId) no requieren token.
  • Soluciones: catálogo de soluciones instalables (por ejemplo e-commerce). Listar el catálogo, ver el detalle por slug, instalar en una organización (con selección de WABA) y desinstalar.
  • Tareas: API de tareas tipo CRM — crear, listar con filtros, conteos para badges, tomar (claim), completar, editar y borrar. También se pueden listar por contacto.
  • Notas de contacto: notas internas por contacto (crear, listar con las fijadas primero, editar y borrar).
  • Créditos de IA (AI Power Pack): consultar el saldo con el desglose de uso de los últimos 30 días, ver el historial de transacciones y los paquetes de recarga disponibles.
  • Conversaciones: el listado (GET /conversations) ahora pagina por cursor (parámetros take + cursor) y acepta búsqueda por contacto (search, sobre nombre, nombre de perfil o número). Se agregó la galería de multimedia por conversación (/:id/media y /:id/media/counts) y los enlaces detectados en los mensajes (/:id/links).
  • Reportes de equipo: nuevos endpoints de desempeño — resumen semanal (reports/team/weekly), métricas por agente (reports/team/by-agent) y metas del equipo (reports/team/goals).
  • Verificación de email: endpoints para verificar el correo (POST /auth/verify-email) y reenviar el código (POST /auth/resend-verification). Las API keys no requieren verificación de email.

2026-05-20

  • API keys con scope por número (phoneNumberIds): puedes acotar una key a uno o más números de WhatsApp. Pensado para entregar una key a un bot externo o tercero y que solo opere su número — los envíos a números fuera de la lista devuelven 403 y los listados se filtran solos. Vacío = todos los números.
  • Webhooks salientes con scope por número (phoneNumberIds): un webhook puede restringirse a números específicos. Eventos con phoneNumberId se entregan solo si el número está permitido; template.status (con wabaId) si la WABA tiene algún número permitido; eventos globales de org (billing/uso) requieren un webhook sin scope.
  • Webhooks salientes: catálogo de eventos actualizado — conversation.handoff_requested (pedido de asesor humano), conversation.unanswered (mensaje sin respuesta humana tras N min, umbral configurable con unansweredThresholdMinutes 1–1440, default 2), conversation.updated, quality.changed. El bot IA, auto-respuestas y plantillas NO cuentan como respuesta humana para unanswered.
  • Broadcasts: nuevos conteos agregados en GET /broadcasts/:id (counts: total, sent, delivered, read, failed, replied) y endpoint GET /broadcasts/:id/recipients?filter= (replied · read · delivered · sent · failed) con paginación por cursor para listar destinatarios por estado. repliedAt marca a quienes contestaron dentro de los 30 días del envío.
  • Broadcasts: los broadcasts SCHEDULED ahora se ejecutan solos a la hora programada (job interno cada minuto). Ya no hace falta llamar /send manualmente.
  • Handoff a humano vía API: guía y endpoint para que un bot externo derive una conversación a un asesor humano.
  • Plantillas con botones dinámicos (URL con {{1}} o COPY_CODE): documentado el component button (sub_type url|copy_code) requerido en templateVariables para evitar el rechazo #131008 de Meta.

2026-05-15

  • Modelo de facturación clarificado: Mosend cobra solo la suscripción del plan (vía Mercado Pago). Los costos de las conversaciones de WhatsApp los cobra Meta directamente a la tarjeta vinculada a la WABA del cliente. Para activar plantillas, cada cliente debe configurar su método de pago en business.facebook.com → su WABA → Configuración de pago. UI del dashboard y /billing actualizado para reflejarlo (notice, labels honestos, step extra en el onboarding).
  • Traducción accionable de errores de Meta: cuando un mensaje falla (post-send, vía webhook de status), el motivo se persiste en Message.errorCode/errorTitle y se muestra en el inbox al hacer click sobre el icono ⚠ del estado. Cobertura inicial de ~30 códigos (#10, #100, #131042 billing, #131047 24h, #131049 capacity, #131056 opt-in, #132012-#132068 templates, etc.) con guías de cómo resolver cada uno.
  • Knowledge base (RAG) del bot: API CRUD para subir documentos (PDF, DOCX, TXT, MD), tagging y reproceso. Backend extrae texto, divide en chunks de ~700 tokens y embedea cada uno con text-embedding-3-small (1536 dim) vía OpenAI u OpenRouter. La búsqueda por similitud usa pgvector con índice IVFFLAT y operador `<=>` (distancia coseno).
  • Reactions: agregar/quitar emoji en mensajes propios o entrantes vía PUT/DELETE en /messages/:id/reactions.
  • Stickers: librería de stickers por organización con upload (cualquier imagen → WebP 512×512), guardado desde mensajes entrantes y envío a conversaciones.
  • WhatsApp Click-to-Chat Links: API para crear links cortos m.mosend.dev/<slug> con mensaje pre-cargado, QR code en PNG/SVG y analytics de clicks. Redirecciones públicas con tracking.
  • Passkeys (WebAuthn/FIDO2): registro y login passwordless completos. Endpoints públicos para opciones/verificación de login + JWT-protegidos para CRUD de passkeys del usuario.
  • Push notifications web: subscripciones VAPID, listado de dispositivos y endpoint de test.
  • Add-ons de billing: API GET y POST preview para extra seats, WABAs y storage como upgrades a la carta sobre el plan base.
  • Payment methods: tarjetas guardadas para auto-pay (CRUD + set-default + toggle de auto-pay).
  • Credit notes (admin staff): notas de crédito staff-only con generación de PDF y endpoint de regeneración.
  • Webhooks salientes: endpoint nuevo GET /webhooks-outbound/:id/deliveries para inspeccionar el log de entregas (status, attempt, body, response).

2026-05-03

  • Web Chat embebible: canal configurable con widget JS, sesiones anónimas, identificadas y verificación OTP.
  • Web Chat: historial de mensajes por visitante, vinculación de email post-sesión anónima.
  • Web Chat: gateway WebSocket dedicado en namespace /wc para comunicación en tiempo real con el widget.
  • Listas de contactos: CRUD completo con gestión de miembros (add/remove bulk).
  • Broadcasts: envío masivo a listas de contactos con estados de envío y cancelación.
  • Respuestas rápidas del inbox: atajos de teclado (/shortcut) con contador de uso.
  • Bot auto-respuestas: reglas por KEYWORD, OUT_OF_HOURS, WELCOME, FALLBACK con acciones de texto, template, flujo o transferencia.
  • Bot flujos secuenciales: diseñador de flujos conversacionales con pasos, variables y sandbox test-run.
  • Bot configuración: modos OFF / RULES_ONLY / RULES_PLUS_AI_FALLBACK / AI_AGENT por número, toggle rápido desde el panel.
  • Bot eventos: log de activaciones del bot por número para auditoría y debugging.
  • Agente IA: modelo configurable, prompt de sistema, temperatura, max_tokens, clasificador de intenciones.
  • Herramientas del agente IA: transfer_to_human y set_contact_attribute.
  • Transcripción de audio entrante vía Groq Whisper.
  • Planes: lista pública de planes, detalle por slug, cotización con cupón y cambio de plan self-service.
  • Límites de plan: endpoint de uso vs cuotas por organización (para barras de progreso en el dashboard).
  • Scope de WABA por usuario: visibilidad filtrada según asignaciones.
  • Fijar conversaciones en inbox.
  • Proveedores IA configurables por organización.

2026-05-01

  • Plantillas: soporte completo para header media (IMAGE/VIDEO/DOCUMENT) con upload resumable a Meta.
  • Plantillas: tipos nuevos de botones — FLOW, CATALOG, COPY_CODE.
  • Plantillas: modo carrusel con hasta 10 tarjetas (IMAGE o VIDEO + body + 2 botones por tarjeta).
  • Plantillas: componente LIMITED_TIME_OFFER (LTO).
  • Números: soft-delete (archivar) + restaurar + hard-delete con guardas anti-pérdida de cargos.
  • Embedded Signup: paso intermedio de selección manual de WABAs/números a importar.
  • Webhooks salientes: firma HMAC SHA-256 obligatoria en producción.
  • Auth: header X-Hub-Signature-256 validado en webhooks Meta antes de persistir.

2026-04-30

  • Lanzamiento de la API REST pública.
  • Integración Mercado Pago para suscripción de plan y recargas de saldo.