Usa estos endpoints para conectar Visito con un CRM, helpdesk o backend de operaciones. La URL base es:
Envía Authorization: Bearer <token> desde el servidor. Consulta Autenticación para scopes, errores e idempotencia.
Endpoints
Listar y leer conversaciones
GET /conversations devuelve la ventana de trabajo actual. GET /conversations/{conversationId} devuelve solo metadatos. El campo conversation.needsReply es la única señal autoritativa de que se requiere acción; lastMessageRole solo describe la cronología.
Para consultar únicamente los contactos que se dieron de baja mediante un comando STOP de WhatsApp compatible, usa GET /conversations?optedOut=true. La respuesta incluye optedOut, optedOutAt y optedOutReason; usa el identificador del participante para excluir al contacto correspondiente en tu sistema de campañas. Visito seguirá bloqueando los envíos a una conversación dada de baja aunque tu sincronización externa se retrase.
GET /conversations/{conversationId}/messages devuelve el historial externo ordenado del más reciente al más antiguo. Usa limit y el cursor opaco de nextCursor para consultar mensajes anteriores. hasMore=true significa que quedan mensajes externos anteriores y nextCursor es null al terminar. Los eventos internos system y tool no forman parte de este recurso.
Enviar una respuesta
Incluye un Idempotency-Key estable en cada envío:
La respuesta 202 Accepted indica que el envío está en cola, no entregado. Guarda conversationId, replyId, requestEventId, correlationId e Idempotency-Key y vuelve a leer /conversations/{conversationId}/messages para reconciliar requestEventId con messages[].eventId.
Reintenta un envío únicamente con el mismo cuerpo y la misma clave de idempotencia. No expongas el token en frontend o apps móviles.
Cuando la ventana de respuesta de WhatsApp esté cerrada, utiliza una plantilla aprobada.