Dev

WhatsApp se desconecta solo en la API: causas y solución

Una instancia de WhatsApp se desconecta sola, en la práctica, por cinco motivos: el dispositivo fue eliminado de la lista de Dispositivos vinculados en el celular, la instancia fue suspendida por falta de saldo, WhatsApp restringió el número, alguien llamó a desconectar o reiniciar por la API, o WhatsApp invalidó la sesión. El status de la instancia suele traer el último motivo, y el evento connection del webhook avisa en el momento exacto de la caída. Aquí está cómo distinguir cada caso y qué hacer.

Publicado el · 6 min de lectura

Este artículo también está disponible en: Português · English

¿Cómo descubrir por qué se cayó la instancia?

Empieza por el status de la instancia. La respuesta trae el estado actual (disconnected, connecting o connected) y, en instancias desconectadas, campos como lastDisconnect y lastDisconnectReason, que registran cuándo y por qué motivo terminó la conexión (por ejemplo, una desconexión pedida por la propia API). No es una lista cerrada de motivos: trata el texto como una pista y cruza la información con la tabla de abajo.

Después mira tu lado. ¿Alguien del equipo llamó a desconectar instancia o a reiniciar instancia? Un script de mantenimiento, una prueba automatizada o una automatización mal diseñada que llama a desconectar en bucle explican muchos casos de caídas recurrentes.

Status e motivo da última desconexão

curl "https://api.zapzapapi.com/api/v1/$INSTANCE_ID/instance/status" \
  -H "x-api-key: $ZAPZAP_API_KEY" \
  -H "x-api-secret: $ZAPZAP_API_SECRET"
# veja instance.status e, quando houver, instance.lastDisconnect e instance.lastDisconnectReason

¿Cuáles son las causas más comunes y qué hacer en cada una?

CausaCómo reconocerlaQué hacer
Dispositivo eliminado en el celularEl número aparece sin la sesión en Dispositivos vinculadosLee el QR de nuevo. Indica al equipo que no elimine el dispositivo
Celular con problemas (sin internet, WhatsApp desactualizado, app reinstalada)Caída después de cambiar de teléfono o reinstalarActualiza la app, reconecta y evita reinstalar sin necesidad
Saldo insuficienteInstancia suspendida, y la llamada del QR devuelve 402 PROXY_SUSPENDEDRegulariza el saldo. Tras la reactivación, la instancia vuelve desconectada y pide un QR nuevo
Restricción o baneo de WhatsAppReconexión rechazada o caída repetida justo después de vincularMira la guía de número baneado y detén los envíos
Desconectar o reiniciar llamado por APIlastDisconnectReason indica un pedido por la APIRevisa scripts y automatizaciones que llaman a esos endpoints
Sesión invalidada por WhatsAppCaída sin causa aparente, sin acción tuyaReconecta y observa si se repite; si se repite, investiga el uso

Sobre el saldo: ZapZap suspende las instancias cuando el saldo no cubre la renovación pasado el período de gracia, y la reactivación tras el pago deja la instancia desconectada, lo que exige una nueva vinculación. Por eso mantener el saldo con holgura evita la caída. Los detalles de cobro están en precios.

Sobre el celular: la conexión de dispositivos adicionales depende del dispositivo principal. Si el WhatsApp del celular principal pasa mucho tiempo sin uso, WhatsApp puede cerrar las sesiones vinculadas. Consulta el artículo 'Acerca de los dispositivos vinculados' en el Centro de ayuda de WhatsApp para ver las reglas actuales, porque cambian.

¿Cómo reconectar la instancia?

Si la instancia quedó desconectada, el camino es vincular de nuevo: pide el QR en QR Code de la instancia o usa la vinculación por código en conectar instancia. El paso a paso y los códigos de error están en la guía de QR que no aparece.

Si la instancia aparece conectada pero no responde, reiniciar el runtime puede resolverlo. No borra tu configuración. Si la instancia está desconectada, el reinicio no reemplaza a la vinculación: habrá que leer el QR de nuevo. Registra cada reconexión con fecha y motivo; tres caídas en la misma semana piden investigar la causa, no solo reconectar.

Reiniciar o runtime e conferir o status

BASE="https://api.zapzapapi.com/api/v1"
H1="x-api-key: $ZAPZAP_API_KEY"
H2="x-api-secret: $ZAPZAP_API_SECRET"

curl -X POST "$BASE/$INSTANCE_ID/instance/reset" -H "$H1" -H "$H2"
sleep 10
curl "$BASE/$INSTANCE_ID/instance/status" -H "$H1" -H "$H2"

¿Cómo enterarte de la caída antes que el cliente?

Activa el evento connection en el webhook. Se dispara con cada cambio de estado del número (conectado, desconectado, conectando). Al recibir desconectado, tu sistema puede abrir una alerta para el equipo, pausar las colas de envío y, si la regla de negocio lo permite, avisar al cliente final que la atención está inestable. La configuración está en configurar webhook, y el tratamiento seguro del evento, en la guía de webhook en producción.

Como segunda red, haz una verificación periódica del status de la instancia. Un webhook puede fallar, y un monitor simple que consulte el status cada pocos minutos y alerte ante una caída cubre ese hueco. Si usas n8n, la integración con n8n trae el disparador de webhook listo para esa automatización.

Node.js: monitor simples de status

const BASE = "https://api.zapzapapi.com/api/v1";
const headers = {
  "x-api-key": process.env.ZAPZAP_API_KEY,
  "x-api-secret": process.env.ZAPZAP_API_SECRET,
};

async function checar(id) {
  const resp = await fetch(BASE + "/" + id + "/instance/status", { headers });
  if (!resp.ok) return console.error("status falhou", resp.status);
  const { instance } = await resp.json();
  if (instance.status !== "connected") {
    console.error("ALERTA: instância", id, "está", instance.status, instance.lastDisconnectReason || "");
    // aqui: enviar e-mail, Slack, etc.
  }
}

setInterval(() => checar(process.env.INSTANCE_ID).catch(console.error), 3 * 60 * 1000);

¿Cómo reducir caídas y riesgo en el día a día?

Las caídas recurrentes tienen menos que ver con la suerte y más con el proceso. Ten un responsable del celular del número, mantén la aplicación actualizada, no elimines el dispositivo vinculado sin avisar a la operación y evita usar el mismo número en otra herramienta al mismo tiempo. Para operaciones donde el número es crítico, ten un número de respaldo y separa funciones (atención, cobranza, ventas) en instancias distintas, de modo que una caída no detenga todo.

Si la desconexión vino acompañada de una restricción de WhatsApp, no es una falla técnica que se arregle con un reinicio. Ninguna herramienta elimina ese riesgo, y el uso de una API no oficial no está previsto en los Términos de WhatsApp. La guía de antibloqueo en WhatsApp explica qué reduce el riesgo y qué no lo elimina.

Checklist rápido para una instancia estable

[ ] Hay un responsable del celular del número y de mantener la aplicación actualizada

[ ] Nadie elimina el dispositivo vinculado sin avisar a la operación

[ ] El saldo cubre la renovación con holgura

[ ] Los scripts y automatizaciones no llaman a desconectar o reiniciar sin necesidad

[ ] El evento connection está activado en el webhook y alerta al equipo

[ ] Existe un monitor de status como segunda red

[ ] Hay un número de respaldo y un canal alternativo para avisar a los clientes

Cada caída que se repite es un dato. Anota la fecha, la hora, el lastDisconnectReason y qué cambió ese día (deploy, cambio de celular, campaña). En pocas semanas aparece el patrón, y casi siempre es una causa operativa que se resuelve con proceso y no con tecnología.

Resumen rápido

  • El status de la instancia trae el estado y, cuando está desconectada, el último motivo (lastDisconnectReason).
  • Causas comunes: dispositivo eliminado en el celular, saldo insuficiente, restricción de WhatsApp, desconectar o reiniciar por API y sesión invalidada.
  • Tras una suspensión por saldo, la instancia vuelve desconectada y necesita una nueva vinculación.
  • Activa el evento connection en el webhook y ten un monitor de status como segunda red.
  • Las caídas recurrentes piden investigar la causa, no solo reconectar.

Lee también

Preguntas frecuentes

¿Por qué mi instancia de WhatsApp se desconecta sola?

Las causas más comunes son un dispositivo eliminado de la lista de Dispositivos vinculados, saldo insuficiente, restricción de WhatsApp al número, una llamada a desconectar o reiniciar por la API y una sesión invalidada por WhatsApp. El status de la instancia trae el último motivo.

¿Tengo que leer el QR cada vez que se cae?

Si la instancia se desconectó de verdad, sí: hay que vincular de nuevo, por QR o por código de teléfono. Reiniciar el runtime solo sirve para una instancia conectada que dejó de responder.

¿Cómo enterarme cuando el número se desconecte?

Activa el evento connection en el webhook de la instancia y trata el estado desconectado. Como segunda red, consulta el status de la instancia periódicamente.

Se acabó el saldo. ¿Qué pasa con la instancia?

Se suspende pasado el período de gracia. Al regularizar el saldo, la instancia se reactiva, vuelve desconectada y exige una nueva vinculación.

¿Desconexión significa que el número fue baneado?

No necesariamente. Muchas caídas son de sesión, de celular o de saldo. Si la reconexión es rechazada o la caída se repite justo después de vincular, conviene investigar una restricción del número.

Monitorea tus instancias por webhook

Crea la cuenta, verifica tu teléfono y recibe el crédito de bienvenida, sin depositar (uno por teléfono, sujeto a la campaña vigente). Conecta un número y activa el evento connection.