Documentazione API WhatsApp interna

Informazioni generali

URL base: https://message1w.7180.eu/api/

Tutte le API richiedono autenticazione tramite token Bearer.

Authorization: Bearer TOKEN_API
Content-Type: application/json
Il token API non deve essere inserito nel codice pubblico, nei log, nelle pagine HTML o nei repository Git.

Limite di invio

Il sistema invia globalmente al massimo un messaggio ogni 60 secondi.

Le richieste API inseriscono i messaggi nella coda. Non comportano necessariamente un invio immediato.

1. Stato WhatsApp

GET /api/whatsapp-status.php

Esempio

curl -X GET "https://message1w.7180.eu/api/whatsapp-status.php" \
-H "Authorization: Bearer TOKEN_API"

Risposta

{
  "status": "ready",
  "last_qr": null,
  "last_seen_at": "2026-07-31 18:00:00",
  "updated_at": "2026-07-31 18:00:00"
}

2. Creazione o aggiornamento contatto

POST /api/contact-create.php

Campi

Campo Obbligatorio Descrizione
phone Sì Numero con prefisso internazionale, ad esempio +393331234567.
name No Nome e cognome.
company No Azienda del contatto.
source No Origine del contatto.
consent_whatsapp Consigliato Valore booleano relativo all'autorizzazione al ricontatto.
consent_note No Nota sul consenso o sul contesto del contatto.

Esempio

curl -X POST "https://message1w.7180.eu/api/contact-create.php" \
-H "Authorization: Bearer TOKEN_API" \
-H "Content-Type: application/json" \
-d '{
  "name": "Mario Rossi",
  "company": "Rossi SRL",
  "phone": "+393331234567",
  "source": "Biglietto da visita",
  "consent_whatsapp": true,
  "consent_note": "Numero lasciato per essere ricontattato via WhatsApp."
}'

Risposta

{
  "success": true,
  "normalized_phone": "+393331234567"
}

3. Inserimento messaggio nella coda

POST /api/message-enqueue.php

Campi principali

Campo Obbligatorio Descrizione
phone Sì Numero WhatsApp con prefisso internazionale.
message Sì Testo del messaggio.
scheduled_at No Data e ora programmata. Se assente, il messaggio viene accodato subito.
create_contact_if_missing No Se true, crea automaticamente il contatto se non esiste.
source_system No Nome del software che genera la richiesta.
external_reference No Identificativo esterno di lead, pratica, ordine o attività.

Esempio con contatto già presente

curl -X POST "https://message1w.7180.eu/api/message-enqueue.php" \
-H "Authorization: Bearer TOKEN_API" \
-H "Content-Type: application/json" \
-d '{
  "phone": "+393331234567",
  "message": "Buongiorno Mario, grazie per il contatto.",
  "source_system": "crm-interno",
  "external_reference": "lead-123"
}'

Esempio con creazione automatica del contatto

curl -X POST "https://message1w.7180.eu/api/message-enqueue.php" \
-H "Authorization: Bearer TOKEN_API" \
-H "Content-Type: application/json" \
-d '{
  "phone": "+393331234567",
  "name": "Mario Rossi",
  "company": "Rossi SRL",
  "message": "Buongiorno Mario, grazie per il contatto.",
  "source": "Biglietto da visita",
  "consent_whatsapp": true,
  "consent_note": "Numero lasciato per concordare un appuntamento.",
  "create_contact_if_missing": true,
  "source_system": "crm-interno",
  "external_reference": "lead-123"
}'

Risposta

{
  "success": true,
  "queue_id": "10",
  "contact_id": 2,
  "contact_created": false
}

4. Stato di un messaggio

GET /api/message-status.php?id=10

Esempio

curl -X GET "https://message1w.7180.eu/api/message-status.php?id=10" \
-H "Authorization: Bearer TOKEN_API"

Risposta

{
  "id": 10,
  "phone": "+393331234567",
  "status": "sent",
  "scheduled_at": "2026-07-31 18:00:00",
  "sent_at": "2026-07-31 18:01:00",
  "attempts": 1,
  "last_error": null,
  "created_at": "2026-07-31 18:00:00"
}

Stati della coda

Stato Descrizione
pending Messaggio in attesa.
processing Messaggio preso in carico dal worker.
sent Messaggio inviato.
failed Invio non riuscito.
blocked Contatto bloccato.
cancelled Messaggio annullato manualmente.

Errori HTTP principali

Codice Descrizione
400 JSON non valido o richiesta errata.
401 Token API mancante.
403 Token API non valido o disattivato.
409 Contatto bloccato o consenso mancante.
422 Dati obbligatori mancanti o non validi.
500 Errore interno della piattaforma.

Note operative