Cambios recientes
Cambios destacados en la API por fecha.
2026-05-20
- API keys con scope por número (phoneNumberIds): podés 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.