⏳ Controllo sistema...
Uptime: -- Sessioni: -- Ultimo check: --

Dispositivi Attivi

Gestisci le tue sessioni WhatsApp

Caricamento dispositivi...

Coda Messaggi

Monitoraggio invio messaggi in tempo reale

Caricamento code...

Documentazione Sviluppatore

Benvenuto nell'API della Piattaforma WhatsApp. Usa questi endpoint per integrare l'invio di messaggi nelle tue applicazioni.

1. Sicurezza e Autenticazione

Tutte le chiamate API sono protette e richiedono un'autenticazione tramite API Key.

Ottenere la Chiave (Login)

Effettua una richiesta POST per ottenere il tuo token di accesso:

POST /auth/login
{
  "username": "admin",
  "password": "password123"
}

// Risposta:
{ "token": "a1b2c3d4..." }

Usare la Chiave

Includi la chiave nell'header x-api-key di ogni richiesta successiva:

x-api-key: a1b2c3d4...

2. Monitoraggio Sistema 🔍

Nuovi endpoint per monitorare lo stato del server e delle sessioni.

Health Check (Pubblico)

Controlla se il server è attivo. Non richiede autenticazione:

GET /health

// Risposta:
{
  "status": "ok",
  "pid": 12345,
  "uptime": 3600.5
}

Informazioni Sistema

Ottieni versione della libreria e numero di sessioni attive:

GET /system/info

// Risposta:
{
  "pid": 12345,
  "installed": "1.34.4",
  "latest": "1.34.4",
  "updateAvailable": false,
  "sessions": 2
}

3. Gestione Sessioni

Le sessioni di WhatsApp sono gestite tramite clientId (una stringa univoca definita da te).

Stati della Sessione

Una sessione può trovarsi in uno dei seguenti stati:

Stato Descrizione
INITIALIZING Sessione in fase di avvio
QR_READY QR code pronto per la scansione
AUTHENTICATED QR scansionato, sincronizzazione in corso
READY ✅ Pronto per inviare/ricevere messaggi
DISCONNECTED Disconnesso, riconnessione automatica in corso
RECONNECTING Tentativo di riconnessione
AUTH_FAILURE ❌ Autenticazione fallita

4. Endpoint API

Crea Sessione

POST /sessions
{ "clientId": "il-tuo-id" }

Lista Sessioni

GET /sessions

// Risposta:
[
  { "id": "session-1", "status": "READY", "lastError": null },
  { "id": "session-2", "status": "QR_READY", "lastError": null }
]

Ottieni Stato

GET /sessions/:clientId/status

// Risposta:
{ "status": "READY", "lastError": null }

Ottieni QR Code

GET /sessions/:clientId/qr

// Risposta (se disponibile):
{ "qr": "data:image/png;base64,...", "raw": "..." }

Elimina Sessione

DELETE /sessions/:clientId

Invia Messaggio (con Coda)

I messaggi vengono accodati e inviati con ritardi casuali per simulare un comportamento umano.

🔒 Comportamento Coda:

Esempio: Un messaggio di 50 caratteri richiederà ~15-25 secondi

POST /sessions/:clientId/message
{
  "number": "39333123456",
  "message": "Ciao Mondo"
}

// Risposta:
{
  "queued": true,
  "position": 5,
  "estimatedDelay": "15-55 seconds"
}

Per inviare immediatamente (senza coda), aggiungi "immediate": true:

{
  "number": "39333123456",
  "message": "Urgente!",
  "immediate": true
}

Stato Coda

GET /sessions/:clientId/queue

// Risposta:
{
  "pending": 5,
  "processing": true,
  "queueSize": 6
}

Ricevi Messaggi (Webhook) ⚡

Per ricevere i messaggi in tempo reale, configura la variabile d'ambiente WEBHOOK_URL nel file .env.

Il sistema invierà una richiesta POST automatica a quell'URL per ogni nuovo messaggio.

Esempio di Payload JSON inviato:

{
  "sessionId": "session-1",
  "from": "39333123456@c.us",
  "to": "39333987654@c.us",
  "body": "Ciao!",
  "context": "Privato",
  "timestamp": 1704283400,
  "hasMedia": false,
  "type": "chat"
}

Nota: Non sono presenti firme di sicurezza o criptografia nell'header. Assicurati che l'URL del tuo Webhook sia segreto o gestisca la convalida internamente.

Polling (Alternativa Lenta)

Se non puoi usare i Webhook, puoi interrogare periodicamente questo endpoint:

GET /sessions/:clientId/messages

5. Filtri Messaggi ⚙️

Puoi filtrare quali tipi di messaggi vengono salvati nei log e inviati al webhook. I tipi disponibili sono:

Tipo Descrizione
Privato Messaggi uno-a-uno diretti
Gruppo Messaggi nei gruppi
Stato Storie/Status dei contatti
Broadcast Liste broadcast

Ottieni Filtri

GET /sessions/:clientId/filters

// Risposta:
{ "filters": ["Privato", "Gruppo"] }

Imposta Filtri

PUT /sessions/:clientId/filters
{
  "filters": ["Privato"]  // Solo messaggi privati
}

// Risposta:
{ "success": true, "filters": ["Privato"] }

Nota: Se l'array è vuoto [], tutti i messaggi passano (nessun filtro attivo).

6. Configurazione .env

Variabili d'ambiente disponibili:

# Porta del server (default: 3000)
PORT=3000

# Credenziali admin
ADMIN_USERNAME=admin
ADMIN_PASSWORD=password123

# API Key fissa (opzionale, altrimenti generata automaticamente)
WA_API_KEY=your_secret_key

# URL per ricevere messaggi in tempo reale
WEBHOOK_URL=https://tuo-server.com/webhook

7. Troubleshooting

Il server non parte

Se vedi l'errore "Another instance is already running", elimina il file .server.pid:

rm .server.pid

Le sessioni non si ripristinano

Controlla che non ci siano processi Chrome orfani:

pkill -9 -f ".wwebjs_auth"

Verificare lo stato del sistema

curl http://localhost:3000/health