API

Riferimento API Migasender

22 endpoint · 101 parametri · 36 esempi pratici

URL di base https://apidb.migasender.com/p/YOUR_REGISTRATION_TOKEN/… Dove lo trovo?

Nessun risultato. Prova con il nome di un endpoint, un percorso o un parametro.

Il tuo token di registrazione

Ogni percorso inizia con /p/<token di registrazione>/. Il token indica a Migasender per quale piattaforma è la chiamata. A un token sbagliato l'API risponde Piattaforma sconosciuta. (Unknown platform. con lang=en); un percorso senza /p/…/ riceve HTTP 404.

Lo trovi in tre posti:

  • L'indirizzo del tuo pannello. Da collegato, il token è tutto ciò che segue /p/ nella barra degli indirizzi, ad es. https://dashboard.migasender.com/p/907a0888…c1f61b.
  • Il vecchio backoffice Siberian. Menu in alto Manage → Modules → Migawhatsapp (pagina …/migawhatsapp/backoffice_migawhatsapp), sezione Migration. Su una riga con stato MIGRATED, la colonna New endpoint mostra https://apidb.migasender.com/p/<token> (API) e https://dashboard.migasender.com/p/<token> (pannello), ciascuno con un pulsante di copia. Le app ancora OFF mostrano solo un trattino.
  • Il pannello di amministrazione Migasender (amministratori di piattaforma): https://apidb.migasender.com/panel/ → Piattaforme → colonna Token di registrazione.

Non è uguale ai token inviati in security_token: il platform token (Gestione linee, Gruppi), il token Send Message e il token Chat History. Il manuale utente lo spiega passo per passo.

Attenzione

PLATFORM TOKEN: richiedilo all'amministratore della piattaforma. Le API Gestione Linee, QR Code, Istanze / Log Linee e Gruppi richiedono il platform token. Non è mostrato nella dashboard cliente né nel pannello degli endpoint API. Gli amministratori lo trovano in Manage → Modules → Migawhatsapp, riquadro Platform Token for API (vecchio backoffice), oppure su https://apidb.migasender.com/panel/ → Settings → Platform Token for API. (vedi il manuale utente).

Lingua delle risposte

Le risposte arrivano in italiano per impostazione predefinita. Aggiungi lang=en — come parametro di query o campo del corpo — per ottenere l'inglese, che è la lingua in cui sono riportati tutti i messaggi di questa pagina.

Vale per i campi error e message; i dati non cambiano. L'intestazione Accept-Language viene ignorata di proposito, così la lingua del browser non può mai cambiare in silenzio ciò che riceve la tua integrazione.

bash
curl -X POST 'https://apidb.migasender.com/p/YOUR_REGISTRATION_TOKEN/api_send/heartbeat?lang=en' \
  -H 'Content-Type: application/json' \
  -d '{ "app_id": 1, "security_token": "YOUR_SEND_MESSAGE_TOKEN" }'

7 endpoint

Gestione linee

Creare, elencare, rinominare, ridatare ed eliminare le linee WhatsApp da cui invia un'applicazione, e impostare il suo limite mensile.

Attenzione

PLATFORM TOKEN obbligatorio — richiedilo all'amministratore della piattaforma. Non è mostrato nella dashboard cliente. Dove lo trovano gli amministratori.

Il token è un token di piattaforma sotto un nome da livello app

Facile sbagliare

Questi endpoint si autenticano con il tuo token di piattaforma — ma il campo si chiama security_token, non platform_token. Inviare qui il token di Send Message o di Chat History fallisce con Security token mismatched.

Una “linea” è una coppia di righe gateway, MASTER e SLAVE. Crearne una le crea entrambe; eliminarne una le rimuove entrambe; un aggiornamento scrive su entrambe.

Ciò che serve a ogni endpoint di Gestione linee

security_token string Obbligatorio
Il tuo token di piattaforma, nonostante il nome del campo.
app_id int Obbligatorio
L'applicazione a cui appartiene la linea.
Errori che qualsiasi endpoint di Gestione linee può restituire5
Security token missing.
security_token non è stato incluso.
Security token mismatched.
Il valore non è il token di questa piattaforma — un token API a livello di app qui fallisce.
App id missing.
app_id non è stato incluso.
Invalid app id.
Nessuna applicazione corrisponde a quell'app_id su questa piattaforma.
This app is in read-only mode. Write operations are disabled.
Restituito da create, update, delete e dall'impostazione del limite quando l'applicazione è in sola lettura. Le letture continuano a funzionare.
POST /p/{regToken}/api_line/getall

Elenca tutte le linee

Attenzione

PLATFORM TOKEN obbligatorio — richiedilo all'amministratore della piattaforma. Non è mostrato nella dashboard cliente. Dove lo trovano gli amministratori.

Restituisce tutte le linee dell'applicazione, indicizzate per ID linea.

Parametri

Bastano i due parametri comuni.

POST /p/{regToken}/api_line/get

Ottieni una linea

Attenzione

PLATFORM TOKEN obbligatorio — richiedilo all'amministratore della piattaforma. Non è mostrato nella dashboard cliente. Dove lo trovano gli amministratori.

Restituisce una singola linea, più i token Chat History e Send Message dell'applicazione.

Oltre ai parametri comuni

line_id int Obbligatorio
La linea da leggere.
Errori2
Line id missing.
line_id non è stato incluso.
Invalid line id.
Nessuna linea con quell'ID su questa applicazione.
POST /p/{regToken}/api_line/create

Crea una linea

Attenzione

PLATFORM TOKEN obbligatorio — richiedilo all'amministratore della piattaforma. Non è mostrato nella dashboard cliente. Dove lo trovano gli amministratori.

Aggiunge una linea all'applicazione — una riga gateway MASTER e una SLAVE. Ogni campo oltre ai due comuni è facoltativo.

Oltre ai parametri comuni

line_label string Facoltativo
Un nome per la linea. Deve essere unico all'interno dell'applicazione.
line_expiration_date string (date) Facoltativo
Y-m-d, e deve essere nel futuro. Lascia vuoto per UNLIMITED. Ignorato sulle piattaforme YEARLY, che ottengono sempre un anno da oggi.
max_messages_per_month int Facoltativo
Il limite mensile dell'applicazione. Minimo 1.
Errori5
Maximum allowed lines reached.
Il numero di linee previsto per l'applicazione è esaurito. Un valore di 0 significa illimitato.
Line name already exists.
Un'altra linea di questa applicazione usa già quel line_label.
Invalid date format for line_expiration_date. Expected format: Y-m-d.
La data non è nel formato Y-m-d.
Invalid date for line_expiration_date. Date should be greater than the current date.
La data è oggi o nel passato.
Invalid max_messages_per_month value.
Non è un numero, oppure è inferiore a 1.
POST /p/{regToken}/api_line/update

Aggiorna una linea

Attenzione

PLATFORM TOKEN obbligatorio — richiedilo all'amministratore della piattaforma. Non è mostrato nella dashboard cliente. Dove lo trovano gli amministratori.

Modifica etichetta, scadenza o stato di una linea. La modifica viene scritta su entrambe le sue righe gateway.

Oltre ai parametri comuni

Devi inviare almeno uno tra line_expiration_date e line_status, altrimenti la chiamata viene rifiutata. line_label da solo non basta.

line_id int Obbligatorio
La linea da modificare.
line_label string Facoltativo
Un nuovo nome. Deve comunque essere unico all'interno dell'applicazione.
line_expiration_date string (date) Facoltativo
Y-m-d, nel futuro.
line_status string Facoltativo
Uno tra CONFIGURED, NOT_CONFIGURED, EXPIRED, DISABLED.
enable_instance_status_webhook int Facoltativo
Attiva per la linea il webhook di stato dell'istanza.
instance_status_webhook_url string Condizionale
Obbligatorio ogni volta che il webhook è attivo.
Errori7
No data posted for update.
Non è stato inviato né line_expiration_date né line_status.
Line id missing.
line_id non è stato incluso.
Invalid line id.
Nessuna linea con quell'ID su questa applicazione.
Line status missing.
Il campo dello stato era presente ma vuoto.
Invalid line status.
Non è uno dei quattro valori accettati.
Line name already exists.
Un'altra linea usa già quell'etichetta.
Instance Status Webhook URL is required when webhook is enabled.
enable_instance_status_webhook è attivo senza URL.
POST /p/{regToken}/api_line/setmaxmessagespermonth

Imposta il limite mensile di messaggi

Attenzione

PLATFORM TOKEN obbligatorio — richiedilo all'amministratore della piattaforma. Non è mostrato nella dashboard cliente. Dove lo trovano gli amministratori.

Imposta quanti messaggi al mese può inviare l'applicazione. È lo stesso limite che, in fase di invio, produce “You have reached the maximum limit of messages for this month.”

Oltre ai parametri comuni

max_messages_per_month int Obbligatorio
Il nuovo limite. Minimo 1.
Errori2
Value for max_messages_per_month is missing.
Il campo non è stato inviato.
Invalid max_messages_per_month value.
Non è un numero, oppure è inferiore a 1.
POST /p/{regToken}/api_line/delete

Elimina una linea

Attenzione

PLATFORM TOKEN obbligatorio — richiedilo all'amministratore della piattaforma. Non è mostrato nella dashboard cliente. Dove lo trovano gli amministratori.

Rimuove la linea, cioè entrambe le sue righe gateway MASTER e SLAVE.

Oltre ai parametri comuni

line_id int Obbligatorio
La linea da eliminare.
Errori2
Line id missing.
line_id non è stato incluso.
Invalid line id.
Nessuna linea con quell'ID su questa applicazione.
Non si può annullare

L'eliminazione rimuove entrambe le righe gateway della linea. Tutto ciò che inviava su quella linea si ferma, e la connessione va ricreata da una scansione QR.

POST /p/{regToken}/api_line/heartbeat

Heartbeat

Attenzione

PLATFORM TOKEN obbligatorio — richiedilo all'amministratore della piattaforma. Non è mostrato nella dashboard cliente. Dove lo trovano gli amministratori.

Controllo di attività che restituisce anche i token API dell'applicazione. Alla prima chiamata i token Chat History e Send Message vengono generati per l'app.

Parametri

Bastano i due parametri comuni.

5 endpoint

Invio messaggi

Invio di messaggi WhatsApp: testo, media, voce, gruppi, linee a rotazione e template Meta Cloud API.

Come viene instradato un invio

Ogni invio prova prima WA API MASTER e ripiega su WA API SLAVE solo se il tentativo sul master fallisce.

  • Ogni gateway ha esattamente un tentativo per richiesta. Non c'è un ciclo interno di ritentativi né un filtro preventivo in base allo stato memorizzato.
  • Un tentativo fallito segna subito quel gateway come PROBABLY_DISCONNECTED, aggiorna last_status_checked e ricalcola lo stato di salute della linea prima di provare il gateway successivo.
  • Per ogni tentativo viene scritta la telemetria — tipo di gateway, stato, tempi e un dettaglio classificato di successo/errore.
  • Il primo tentativo riuscito restituisce subito successo. Se falliscono entrambi, ricevi una risposta di errore che tiene conto dello stato di salute.

Quando falliscono entrambi i gateway

La risposta contiene success: false più un error_code che riflette lo stato di salute complessivo della linea:

error_codeQuandoMessaggio
gateways_probably_disconnectedLa salute della linea è PROBABLY_OFFLINE, o un misto di stati non connessi“GATEWAYS ARE PROBABLY DISCONNECTED, WE ARE CHECKING THE REAL STATUS, TRY AGAIN IN ABOUT 10 MINUTES.”
gateways_disconnectedLa salute della linea è OFFLINE, oppure ogni gateway è DISCONNECTED“GATEWAYS ARE DISCONNECTED. PLEASE RECONNECT BY SCANNING THE QR CODE, THEN TRY AGAIN.”

Insieme tornano line_id e app_id. La risposta viene restituita dopo che ogni tentativo fallito ha segnato il proprio gateway e ha innescato il ricalcolo dello stato di salute.

Da quale linea esce il messaggio

line_idroundbin_idComportamento
fornito—Invia tramite quella linea specifica.
—fornitoIl sistema sceglie nel roundbin la linea connessa usata meno di recente.
fornitofornitovince roundbin_id — line_id viene ignorato.
——Ripiega sulla linea connessa dell'applicazione. Se nessuna è connessa: no active/connected gateway for this app — connect a line first
Nota

send_via=cloud_api salta del tutto l'instradamento per linea e roundbin — non è coinvolta alcuna linea WhatsApp. Prima della chiamata a Meta vengono verificati solo app_id, security_token e phone.

Fallback su Meta Cloud API

Un messaggio può uscire tramite Meta Cloud API invece che dalla linea WhatsApp, come template approvato. In quel caso il testo di message non viene consegnato: lo sostituisce il template. Succede in due casi.

CasoQuandoQuale template
Soglia giornalieraLa linea ha già inviato oggi il numero di messaggi della sua soglia giornaliera.Quello della chiamata (fallback_template_*), altrimenti quello della linea. Quello della linea si usa quando Fallback Enabled è attivo.
La linea non può inviareLa linea non esiste, non è connessa, è segnata DISCONNECTED oppure rifiuta l'invio (per esempio un numero bannato o disconnesso). Anche un roundbin con tutte le linee giù.Solo quello della chiamata. Senza, ricevi il solito errore.
  • La soglia si conta per linea, non per contatto, e il contatore si azzera alle 00:00 UTC. Conta solo i messaggi che passano dal controllo della soglia: il fallback deve essere attivo per quel messaggio (Fallback Enabled sulla linea, oppure un fallback_template_* nella chiamata) e, in modalità standard, un contatto che ha scritto negli ultimi 7 giorni viene saltato e non conta. Con soglia 1, il primo messaggio contato del giorno esce dalla linea e il successivo da Meta. Il lato master e il lato slave di una linea hanno contatori separati.
  • Se fallisce anche l'invio del template, l'URL Failure Webhook della linea riceve {"event":"waba_send_failed", "app_id", "line_id", "phone", "template_name", "error", "fallback_reason", "reference", "timestamp"}. fallback_reason è null per un invio diretto send_via=cloud_api, e reference è il valore che hai passato nella chiamata.
  • Un numero senza account WhatsApp non riceve nulla: niente invio dalla linea e niente template, perché nemmeno Meta Cloud API può raggiungerlo. La chiamata restituisce l'errore The phone number does not exist on WhatsApp. e l'URL Failure Webhook della linea riceve lo stesso evento con fallback_reason: "number_not_on_whatsapp" e template_name: null. L'invio compare nella pagina Log come fallito, non conta nel limite mensile, e api_send/status con il suo reference risponde state: not_sent, status: failed. Se il controllo non si può fare, il messaggio parte come al solito. Un numero il cui account esiste ancora, ma con il telefono spento o perso, non viene rilevato.
  • La modalità soglia standard (predefinita) esclude i contatti che hanno scritto all'applicazione negli ultimi 7 giorni, oggi escluso: ricevono sempre il messaggio normale e non vengono contati. strict conta ogni messaggio.
  • Se la linea non risponde in tempo, non viene reinviato nulla tramite Meta. Il messaggio potrebbe essere già partito, e un secondo invio lo consegnerebbe due volte. Invia un reference e chiedi a api_send/status prima di ritentare: ti dice se il messaggio è partito.
  • La risposta dice quale strada è stata presa. via vale migasender per la linea e cloud_api_fallback per un fallback, che riporta anche fallback_reason (threshold, line_not_found, line_disconnected, send_refused, all_lines_down) e il message_id di Meta.
  • Gli stati di consegna di un fallback arrivano al webhook di consegna della linea, come per ogni altro invio, con channel: "waba".

Ciò che serve a ogni endpoint di Invio messaggi

app_id int Obbligatorio
L'ID della tua applicazione, mostrato in alto a sinistra nella dashboard del modulo.
security_token string Obbligatorio
Il token dell'API Send Message, generato in Impostazioni → Impostazioni API con l'etichetta Send Message API Token. L'API deve essere abilitata nello stesso punto.
Errori che qualsiasi endpoint di Invio messaggi può restituire2
Security token mismatched.
Un'unica risposta copre quattro casi: security_token mancante, security_token errato, app_id mancante o app_id inesistente. Verifica entrambi in Impostazioni → Impostazioni API.
Send Message API is disabled.
L'API Send Message è disattivata per questa applicazione. Attivala nelle impostazioni API.
POST /p/{regToken}/api_send/message

Invia un messaggio

Invia un messaggio WhatsApp — testo, media, nota vocale, messaggio di gruppo o template Meta. I parametri sono campi del corpo POST, in JSON o form-data.

Autenticazione

app_id int Obbligatorio
L'ID della tua applicazione, mostrato in alto a sinistra nella dashboard del modulo.
security_token string Obbligatorio
Il token dell'API Send Message, generato in Impostazioni → Impostazioni API con l'etichetta Send Message API Token. Nello stesso punto l'API Send Message deve essere abilitata.

Destinatario e contenuto

phone string Condizionale
10–14 cifre con + iniziale e prefisso internazionale. Facoltativo se invii email per un utente registrato che ha un telefono valido nel profilo; altrimenti obbligatorio. Non viene usato negli invii a gruppi. Se il numero esiste già nel database ricevi anche sib_user_id.
email string Condizionale
Un indirizzo valido presente nel database, con un numero di telefono associato a quell'account. Facoltativo se invii phone. Quando li invii entrambi, l'API verifica che la coppia esista prima di inviare qualsiasi cosa.
message string Condizionale
Il testo da inviare. Facoltativo quando è presente file_url, perché un file può essere inviato da solo.
name string Facoltativo
Nome — solo se vuoi anche registrare l'utente.
surname string Facoltativo
Cognome — solo se vuoi anche registrare l'utente.
file_url url Facoltativo
Qualsiasi URL di file pubblicamente raggiungibile supportato da WhatsApp. Massimo 25 MB. I file audio funzionano solo se il gateway MASTER è attivo.
is_link_preview_enabled int Facoltativo
1 mostra l'anteprima del link (predefinito), 0 la nasconde.

Sintesi vocale

tts_enabled int Facoltativo
1 converte il testo del messaggio in audio e lo invia come nota vocale invece che come testo; 0 è il valore predefinito. Solo gateway MASTER, e il TTS deve essere abilitato per l'applicazione.
tts_voice string Facoltativo
OpenAI: alloy (predefinito), echo, fable, onyx, nova, shimmer. ElevenLabs: il voice_id mostrato sotto il player della voce scelta. Il provider si seleziona in Impostazioni → Configurazione OpenAI → Servizio TTS.
tts_speed float Facoltativo
OpenAI: 0.25–4.0, predefinito 1.0. ElevenLabs: 0.1–1.2. Sotto 1.0 rallenta il parlato, sopra lo accelera.

Instradamento

line_id int Facoltativo
La linea da cui inviare. Deve essere valida; se non viene inviata vale 1. La trovi in Impostazioni gateway → Gestione linee WhatsApp, nella colonna Line ID.
roundbin_id int Facoltativo
Un gruppo roundbin. Il sistema sceglie da lì la prossima linea connessa disponibile (rotazione per uso meno recente) e prevale su line_id. Se tutte le linee del gruppo sono disconnesse e il roundbin ha un template di fallback configurato, viene inviato quel template tramite Meta Cloud API.

Invio a gruppo

is_sent_to_group int Facoltativo
1 indica all'API che si tratta di un messaggio di gruppo. 0 o assente significa invio normale.
group_id string Condizionale
Obbligatorio quando is_sent_to_group=1, e in quel caso phone non è più necessario. Formato: 1203630000000000@g.us. Ottieni gli ID dall'endpoint Elenca i gruppi più sotto.

Invio diretto tramite Meta Cloud API

send_via string Facoltativo
Imposta cloud_api per bypassare completamente la linea WhatsApp e inviare un template Meta. Predefinito migasender.
template_name string Condizionale
Obbligatorio quando send_via=cloud_api. Il nome esatto del template come appare in Meta Business Manager, e deve essere APPROVED.
template_language string Facoltativo
Codice BCP-47 corrispondente alla lingua del template approvato. Predefinito en_US.
template_variables array | string Facoltativo
Valori ordinati per i segnaposto {{1}}, {{2}} … del corpo del template. Accetta un array nativo o una stringa JSON. Il numero deve corrispondere esattamente al template.
template_buttons array | string Facoltativo
Payload per i pulsanti di tipo URL — ogni elemento è il suffisso dinamico dell'URL o il codice coupon.

Template di fallback per singola chiamata

Usati solo quando il messaggio finisce nel fallback: alla soglia giornaliera della linea, oppure quando la linea non può inviare. Per questa sola richiesta sostituiscono il template di fallback configurato sulla linea. Vedi Fallback su Meta Cloud API più sopra.

fallback_template_name string Facoltativo
Nome di un template APPROVED sul WABA dell'applicazione. Inviarlo attiva il fallback per questo messaggio, anche se sulla linea è spento. Se invii anche fallback_template_id, vince il nome.
reference string Facoltativo
Un tuo identificativo per questo invio, fino a 255 caratteri. Torna come reference sul failure webhook e, se l'invio va in timeout, puoi usarlo con api_send/status per sapere se il messaggio è davvero partito. Funziona per gli invii dalla linea e per quelli via Cloud API, fallback compresi.
not_sent_after int Facoltativo
Secondi senza conferma, dopo un invio andato in timeout, prima che api_send/status risponda not_sent per il suo reference. Da 60 a 86400; predefinito 180 (3 minuti).
fallback_template_id int Facoltativo
L'ID locale del template (template_id). Utile quando più template condividono lo stesso nome in lingue diverse. Ignorato se invii anche fallback_template_name.
fallback_template_language string Facoltativo
Normalmente ricavata in automatico dal record del template. Invia questo campo solo per forzarne un altro.
fallback_template_variables array | string Facoltativo
Valori per il template di fallback. Il numero viene verificato rispetto al template prima di inviare qualsiasi cosa.
fallback_template_buttons array | string Facoltativo
Payload dei pulsanti URL nel template di fallback.
Errori40
Gateway settings do not exist.
Nessun gateway attivo per quella combinazione app_id + line_id.
GATEWAYS ARE PROBABLY DISCONNECTED… TRY AGAIN IN ABOUT 10 MINUTES.
Risposta basata sullo stato di salute, error_code: gateways_probably_disconnected.
GATEWAYS ARE DISCONNECTED. PLEASE RECONNECT BY SCANNING THE QR CODE…
Risposta basata sullo stato di salute, error_code: gateways_disconnected.
No eligible gateway available for retry.
Durante l'invio non è stato trovato alcun gateway funzionante.
message or media is required
Non è stato fornito né message né file_url.
phone is required
Non è stato fornito né phone né email.
Phone number is missing or invalid. Include country code, e.g. +39123456789.
phone non valido — deve iniziare con + e includere il prefisso internazionale.
The phone number does not exist on WhatsApp.
Il numero non ha un account WhatsApp. Non è stato inviato nulla e l'URL Failure Webhook della linea ha ricevuto fallback_reason: "number_not_on_whatsapp".
The email address is invalid.
email non valida.
No such account exists with this email and phone pair.
Li hai inviati entrambi e quella coppia non è nel database — quando invii entrambi, l'API verifica prima l'utente. Inviando anche name e surname l'account viene invece creato, e ricevi sib_user_id.
The phone number associated with this account is not correct. …The current one is: API_SENT_PHONE_NUMBER
Invio con la sola email; l'account esiste ma il telefono memorizzato non è valido.
No phone number is associated with this account.
Invio con la sola email; l'account esiste ma non ha un telefono associato.
No such account exists with this email.
Invio con la sola email; nessun account con quell'indirizzo.
We are sorry but this account is already linked to one of our customers.
Invio con la sola email più name/surname; l'indirizzo appartiene già a un altro cliente.
The file does not exist.
file_url è stato fornito ma a quell'URL non viene servito nulla.
The file size is too large. The maximum file size allowed is 25 MB.
Il file supera il limite di 25 MB.
The file type is not supported.
Il file non rientra nei tipi supportati — vedi la nota sotto questa tabella.
The tts_voice value is not valid.
La voce non è tra le opzioni accettate.
The tts_speed value must be between 0.25 and 4.0.
Fuori intervallo per OpenAI.
The tts_speed value must be between 0.1 and 1.2 for ElevenLabs.
Fuori intervallo per ElevenLabs.
Text to Speech is not enabled for this application.
tts_enabled=1 ma il TTS è disattivato o non configurato per l'app.
Service is temporarily unavailable, please try later.
tts_enabled=1 e nessun gateway è in stato CONNECTED.
no active/connected gateway for this app — connect a line first
Il line_id non corrisponde a un gateway utilizzabile. È anche ciò che ricevi quando nessuna linea è connessa.
Roundbin not found.
Nessun roundbin con quel roundbin_id su questa applicazione.
You cannot send a message because your line status is EXPIRED|DISABLED|NOT_CONFIGURED.
La linea scelta non è in stato CONFIGURED.
All lines in this roundbin are disconnected and no fallback template is set.
Tutte le linee del roundbin sono giù e non c'è un template di fallback. Riconnetti una linea o configurane uno.
You have reached the maximum limit of messages for this month.
Il limite mensile — 10.000 per impostazione predefinita — conta ogni messaggio in uscita andato a buon fine. È un limite di piattaforma, non la soglia giornaliera.
The is_link_preview_enabled value is not valid.
Un valore diverso da 0 o 1.
The phone number does not exist on WhatsApp.
Il destinatario non ha un account WhatsApp.
Group id missing.
is_sent_to_group=1 ma group_id è mancante o vuoto.
Group not found.
group_id non è un gruppo valido. Viene sollevato solo su WA API MASTER — il gateway slave non supporta i gruppi né questa verifica.
template_name is required for cloud_api send.
senza un nome di template.
Template requires {N} variables, {M} provided.
Il numero di template_variables non corrisponde alla definizione del template.
Fallback template not found or not approved.
fallback_template_id non corrisponde a un template APPROVED di questa applicazione. Risincronizza i template da Meta.
Fallback template '{name}' requires {N} variables, {M} provided.
Numero di variabili non corrispondente nel template di fallback della singola chiamata.
{line error} Fallback template send failed: {reason}
La linea non ha potuto inviare, e anche il template di fallback è stato rifiutato. Non è stato consegnato nulla. La prima parte dice perché la linea ha fallito, la seconda perché Meta ha rifiutato.
{line error} Fallback template not delivered: {reason}
La linea non ha potuto inviare. Meta ha accettato il template di fallback, poi lo ha segnalato come non consegnato.
(#190) Access token has expired
Il token di accesso Meta WABA è scaduto. Riconnetti dalla pagina di configurazione WABA.
(#132000) Variable parameter count mismatch
Meta ha rifiutato la chiamata al template — il numero di variabili non corrisponde alla definizione lato Meta.
(#131005) …
Un limite o un errore di permessi di Meta Cloud API. Controlla lo stato dell'account WABA in Meta Business Manager.
Tipi di file supportati

Immagini image/jpeg, image/jpg, image/png · Video video/mp4, video/ogg, application/octet-stream · Audio audio/mpeg, audio/ogg · Documenti application/pdf, application/msword, tipi OpenXML di Word/Excel/PowerPoint, application/vnd.ms-excel, application/vnd.ms-powerpoint, text/plain, text/html, text/css, application/ics.

Il fallback non è la stessa cosa di un invio diretto via Cloud API

send_via=cloud_api passa sempre da Meta, qualunque cosa dica il contatore giornaliero. I parametri fallback_template_* agiscono solo su un invio tramite la linea (migasender): il template parte quando la soglia giornaliera della linea viene raggiunta, oppure quando la linea non può inviare. Un fallback per singola chiamata sostituisce quello configurato sulla linea solo per quella richiesta.

La lingua del template deve corrispondere esattamente

I codici lingua devono corrispondere al template approvato su Meta — it, en_US, en, pt_BR. Una discordanza fa restituire a Meta un errore di template non trovato.

Un fallback per soglia che anche Meta rifiuta

Ricevi HTTP 200 con il campo error valorizzato e il messaggio reale di Meta propagato, ad esempio { "error": "(#190) Access token has expired", "data": null }. La soglia giornaliera della linea è stata raggiunta e l'invio a Meta è fallito, quindi non è stato consegnato nulla.

POST /p/{regToken}/api_send/checkphone

Verifica un numero di telefono

Risponde se un numero esiste su WhatsApp. Solo tre parametri. Lo stesso controllo viene eseguito dentro l'endpoint di invio.

app_id int Obbligatorio
L'ID della tua applicazione.
security_token string Obbligatorio
Il token dell'API Send Message.
phone string Obbligatorio
10–14 cifre con + iniziale e prefisso internazionale.
Errori2
The service is currently unavailable due to an issue with the WA API Master. Please try again later.
Il server MASTER è giù — questo endpoint non ha un fallback sullo slave.
The phone number is not correct. Please add a phone between 10-14 digits with + international country code at the beginning.
phone non valido.
POST /p/{regToken}/api_send/status

Controllare lo stato di un messaggio inviato

Dice che fine ha fatto un messaggio dopo l'invio: tramite il message_id restituito dall'invio, oppure tramite il tuo reference quando l'invio è andato in timeout e non ha restituito alcun id.

app_id int Obbligatorio
L'ID della tua applicazione.
security_token string Obbligatorio
Il token dell'API Send Message.
message_id string Condizionale
Il message_id restituito dall'invio (un id della linea o un wamid della Cloud API). Invia questo oppure reference.
reference string Condizionale
Il reference che hai passato all'invio: un invio dalla linea, un invio diretto send_via=cloud_api, oppure uno che il fallback ha spostato sulla Cloud API. Usalo quando l'invio è andato in timeout e non ha restituito un message_id: la risposta dice se il messaggio è davvero partito.
Errori3
message_id is required.
Non è stato inviato né message_id né reference.
message_id not found.
Nessun messaggio con quell'id in questa applicazione.
reference not found.
Nessun invio aveva quel reference: l'invio non ha mai raggiunto una linea (rifiutato o non valido), oppure il reference è sbagliato. Un invio rifiutato perché il numero non ha WhatsApp ha invece un record: risponde not_sent.
POST /p/{regToken}/api_send/groups

Elenca i gruppi di una linea

Restituisce tutti i gruppi WhatsApp a cui appartiene la linea, con i valori group_id che ti servono per un invio a gruppo.

app_id int Obbligatorio
L'ID della tua applicazione.
security_token string Obbligatorio
Il token dell'API Send Message.
line_id int Facoltativo
Vale 1 se non viene inviato.
POST /p/{regToken}/api_send/heartbeat

Heartbeat

Conferma che l'API Send Message è raggiungibile e che il tuo token e app ID sono accettati. Accetta gli stessi parametri dell'endpoint di invio, ma non invia nulla.

Parametri

Bastano i due parametri comuni.

Forma della risposta

Il documento ufficiale non riporta un corpo di esempio per gli endpoint heartbeat, quindi non ne viene riprodotto nessuno qui. Considera raggiungibile una risposta con error: null, e per i casi di errore leggi la tabella qui sopra.

2 endpoint

Cronologia chat

Lettura delle conversazioni memorizzate, con filtri per telefono, email, data, linea, origine, destinazione e direzione.

Che cosa torna

I messaggi con media compaiono nella stessa chiave message del testo. Quando un messaggio ha entrambi, il testo precede l'URL del media.

Ogni record contiene un campo in_out — IN per i messaggi in entrata, OUT per quelli in uscita.

Importante

filter_start_time viene confrontato con l'orologio del tuo server, quindi il fuso orario dell'applicazione o del server deve essere impostato correttamente perché significhi ciò che ti aspetti.

Ciò che serve a ogni endpoint di Cronologia chat

app_id int Obbligatorio
L'ID della tua applicazione.
security_token string Obbligatorio
Il token dell'API Chat History, generato in Impostazioni → Impostazioni API con l'etichetta Chat History API Token. L'API deve essere abilitata nello stesso punto.
Errori che entrambi gli endpoint di Cronologia chat possono restituire2
Security token mismatched.
Un'unica risposta copre quattro casi: security_token mancante, security_token errato, app_id mancante o app_id inesistente. Verifica entrambi in Impostazioni → Impostazioni API.
Chat History API is disabled.
L'API Chat History è disattivata per questa applicazione. Attivala nelle impostazioni API.
GET /p/{regToken}/api_chathistory/history

Leggi la cronologia chat

Restituisce i messaggi memorizzati dell'applicazione. Tutti i filtri sono facoltativi e si combinano tra loro.

Nota

La documentazione più vecchia riporta questo endpoint come POST. È un GET, e i filtri sono parametri della query string.

Autenticazione

app_id int Obbligatorio
L'ID della tua applicazione.
security_token string Obbligatorio
Il token dell'API Chat History, generato in Impostazioni → Impostazioni API con l'etichetta Chat History API Token. Nello stesso punto l'API Chat History deve essere abilitata.

Filtri

filter_history_id int Facoltativo
L'ID di chat/log da cui partire — indicando 10 ottieni la cronologia da 10 in poi.
filter_start_date string (date) Facoltativo
yyyy-mm-dd. Confrontata con il created_at del record; restituisce la cronologia da quella data in poi.
filter_start_time string (time) Facoltativo
HH:mm:ss. Valido solo insieme a filter_start_date. Usa il fuso orario del server.
filter_phone_number string (phone) Facoltativo
10–14 cifre con + iniziale e prefisso internazionale.
filter_email string (email) Facoltativo
Filtra per l'email di un cliente, se il cliente esiste e ne ha una assegnata.
filter_origin string Facoltativo
Uno tra WA API MASTER, WA API SLAVE, MIGACHAT, API, WEBHOOK. I messaggi inviati da una linea tramite api_send/message vengono restituiti solo filtrando su API.
filter_destination string Facoltativo
Uno tra WA API MASTER, WA API SLAVE, MIGACHAT, WEBHOOK, WA_USER.
filter_line_id int Facoltativo
Accettato ma non applicato. La richiesta va a buon fine e il valore viene ignorato, quindi i risultati non sono limitati a quella linea. Per ora filtra per linea dalla tua parte.
filter_in_out string Facoltativo
Accettato ma non applicato. IN / OUT vengono ignorati; ogni record contiene il proprio campo in_out, quindi filtra su quello dopo la lettura.
Errori1
This app has not yet configured the gateway settings so you cannot get the history.
L'app non ha alcun gateway configurato.
I filtri non vengono validati — un valore errato viene ignorato, non rifiutato

Una data non valida, un'origine fuori elenco, una direzione che non è né IN né OUT: nessuno di questi casi viene rifiutato. Il filtro semplicemente non viene applicato e ricevi il risultato non filtrato con error: null. Valida i valori dei filtri prima di inviarli e confronta il numero di righe con quello che ti aspettavi, invece di dare per scontato che un errore vuoto significhi che il filtro è stato compreso.

GET /p/{regToken}/api_chathistory/heartbeat

Heartbeat

Conferma che l'API Chat History è raggiungibile e che il tuo token è accettato.

Nota

La documentazione più vecchia indica questo percorso come api_chat/heartbeat. Il percorso attuale è api_chathistory/heartbeat, e accetta sia GET sia POST.

Parametri

Bastano i due parametri comuni.

Forma della risposta

Il documento ufficiale non riporta un corpo di esempio per gli endpoint heartbeat, quindi non ne viene riprodotto nessuno qui. Considera raggiungibile una risposta con error: null.

5 endpoint · v2.0.0

Codice QR

Collegare un numero WhatsApp a una linea: ottenere il codice QR, seguire la scansione e verificare in seguito lo stato della linea.

Attenzione

PLATFORM TOKEN obbligatorio — richiedilo all'amministratore della piattaforma. Non è mostrato nella dashboard cliente. Dove lo trovano gli amministratori.

Cosa è cambiato nella v2.0.0

  • /get ora riutilizza lo stesso instance_id in attesa per impostazione predefinita, così le chiamate ripetute non accumulano più sessioni duplicate.
  • Invia action=RESET o reset=1 per forzare deliberatamente una nuova istanza e un nuovo QR.
  • Le richieste QR hanno un limite di frequenza a livello di linea, app e piattaforma, configurabile nel backoffice.
  • I contatori QR di una linea si azzerano automaticamente quando una scansione riesce.
  • Gli errori di limite indicano esattamente quando termina l'attesa.

Limiti di frequenza predefiniti

LivelloIntervallo minimoFinestraRichieste maxAttesa
Linea30s600s51800s
App—600s201800s
Globale—600s1001800s

Tutti e nove i valori sono modificabili nel backoffice, in QR Code API Rate Limits.

Parametri necessari a ogni endpoint QR

platform_token string Obbligatorio
Token di piattaforma dal backoffice, sezione Platform Token for API. Può anche essere inviato come header X-Platform-Token.
app_id int Obbligatorio
L'ID della tua applicazione, mostrato in alto a sinistra nella dashboard del modulo.
line_id int Obbligatorio
La linea su cui vuoi agire.
whatsapp_gateway_type string Obbligatorio
Quale gateway della linea: WA API MASTER o WA API SLAVE.
action / reset string / int Facoltativo
Invia action=RESET o reset=1 per forzare una nuova istanza e un nuovo QR. Senza, /get riutilizza l'instance_id già in attesa invece di aprire una sessione duplicata.
Errori che qualsiasi endpoint QR può restituire15
Platform token missing.
Nessun platform_token e nessun header X-Platform-Token.
Platform settings not found.
La piattaforma non ha alcuna impostazione.
Platform token not found.
Le impostazioni esistono, ma non vi è memorizzato alcun token di piattaforma.
Platform token mismatched.
Il token inviato non è quello della piattaforma.
App id missing.
app_id non è stato inviato.
Invalid app id.
Nessuna applicazione corrisponde a quell'app_id.
Line id missing.
line_id non è stato inviato.
WhatsApp gateway type is missing.
Ogni richiesta deve indicare quale gateway: WA API MASTER o WA API SLAVE.
WhatsApp gateway type is invalid.
Il valore inviato non è nessuno dei due accettati.
Line settings do not exist.
La combinazione di parametri inviata non corrisponde ad alcuna linea.
Line status is EXPIRED | DISABLED.
Una linea in uno di questi due stati non può essere modificata.
Line QR rate limit reached (max X requests per Y seconds). Please wait until YYYY-MM-DD HH:MM:SS before trying again.
Limite per linea. Il messaggio riporta l'orario esatto in cui termina l'attesa.
App QR rate limit reached (max X requests per Y seconds). Please wait until YYYY-MM-DD HH:MM:SS before trying again.
Limite per applicazione.
Platform QR rate limit reached (max X requests per Y seconds). Please wait until YYYY-MM-DD HH:MM:SS before trying again.
Limite a livello di piattaforma.
Please wait 25s before requesting a new QR code for this line. Next allowed at YYYY-MM-DD HH:MM:SS.
L'intervallo minimo tra due richieste QR sulla stessa linea.
POST /p/{regToken}/api_qr/get

Ottieni un codice QR

Attenzione

PLATFORM TOKEN obbligatorio — richiedilo all'amministratore della piattaforma. Non è mostrato nella dashboard cliente. Dove lo trovano gli amministratori.

Restituisce un PNG in base64 da mostrare per la scansione, più l'instance_id che ti servirà per seguire la scansione.

Oltre ai parametri comuni

phone string Obbligatorio
10–14 cifre con + iniziale e prefisso internazionale. Deve essere unico per linea e deve essere lo stesso numero che scansionerà il QR.
Errori4
Phone is missing.
phone non è stato inviato, oppure è vuoto.
The phone number is not correct. Please add a phone between 10-14 digits with + international country code at the beginning.
phone non valido.
This phone number is already used.
Un'altra linea usa già quel numero.
This gateway for the line is already working. You cannot get the QR code for it.
Il gateway è già connesso — non c'è nulla da scansionare.
Il QR scade in 30 secondi

Inserisci la stringa base64 direttamente in un tag <img>. Se non viene scansionato entro 30 secondi scade e può smettere di funzionare. Conserva l'instance_id — serve a ogni chiamata successiva.

Poi inizia il polling

Appena il QR è a schermo, chiama check-scan-status ogni 2000 ms con l'instance_id (e il team_id su un gateway slave) finché non segnala successo.

POST /p/{regToken}/api_qr/check-scan-status

Verifica lo stato della scansione

Attenzione

PLATFORM TOKEN obbligatorio — richiedilo all'amministratore della piattaforma. Non è mostrato nella dashboard cliente. Dove lo trovano gli amministratori.

Interroga questo endpoint dopo aver mostrato il QR per sapere se è già stato scansionato.

Oltre ai parametri comuni

instance_id string Obbligatorio
L'ID istanza restituito da /get.
team_id int Condizionale
Obbligatorio solo su WA API SLAVE, dove /get lo ha restituito. Non usato su MASTER.
Errori2
Instance ID is missing.
instance_id non è stato inviato.
Team id is missing.
Una chiamata su gateway slave senza team_id.
Frequenza del polling

Chiama ogni 2000 ms mentre il QR è visualizzato. Fermati appena status è success e message è Success.

POST /p/{regToken}/api_qr/get-current-status

Ottieni lo stato attuale

Attenzione

PLATFORM TOKEN obbligatorio — richiedilo all'amministratore della piattaforma. Non è mostrato nella dashboard cliente. Dove lo trovano gli amministratori.

Indica se un'istanza memorizzata sta funzionando in questo momento. Salva l'instance_id in locale dopo /get e usalo qui ogni volta che ti serve lo stato reale.

Oltre ai parametri comuni

instance_id string Obbligatorio
L'ID istanza restituito da /get, conservato nel tuo database.
Errori2
Instance ID is missing.
instance_id non è stato inviato.
Instance ID mismatched.
Quell'istanza non appartiene alle impostazioni gateway corrispondenti.
POST /p/{regToken}/api_qr/rescan

Nuova scansione

Attenzione

PLATFORM TOKEN obbligatorio — richiedilo all'amministratore della piattaforma. Non è mostrato nella dashboard cliente. Dove lo trovano gli amministratori.

Restituisce un nuovo QR per un'istanza che ha smesso di funzionare, così il numero può essere riconnesso.

Oltre ai parametri comuni

instance_id string Obbligatorio
L'ID istanza da riconnettere. Ha senso solo quando quell'istanza è NOT_WORKING.
Errori5
Instance ID is missing.
instance_id non è stato inviato.
Instance ID mismatched.
Quell'istanza non appartiene alle impostazioni gateway corrispondenti.
Line status is NOT_CONFIGURED.
La linea non è mai stata configurata, quindi non c'è alcuno stato da recuperare.
This instance is not configured.
La linea è CONFIGURED ma non per questa istanza — una linea può contenerne almeno due.
This instance is already working.
Non c'è nulla da riscansionare.
Anche la nuova scansione ha un limite di frequenza

Valgono gli stessi limiti per linea, app e globali. Poi interroga check-scan-status ogni 2000 ms, esattamente come dopo /get.

POST /p/{regToken}/api_qr/get-instance-info

Ottieni informazioni sull'istanza

Attenzione

PLATFORM TOKEN obbligatorio — richiedilo all'amministratore della piattaforma. Non è mostrato nella dashboard cliente. Dove lo trovano gli amministratori.

Restituisce il token di accesso del gateway, il telefono associato e lo stato sia della linea sia dell'istanza. Funziona con i soli parametri comuni — cambia whatsapp_gateway_type per esaminare l'altro gateway.

Parametri

Nessun parametro aggiuntivo — bastano i quattro comuni.

Errori1
Instance not found.
Nessuna istanza o linea di questo tipo nel sistema.

2 endpoint · v1.0.0

Gruppi

Creare gruppi WhatsApp da un sistema esterno e leggere ciò che vi è stato detto.

Attenzione

PLATFORM TOKEN obbligatorio — richiedilo all'amministratore della piattaforma. Non è mostrato nella dashboard cliente. Dove lo trovano gli amministratori.

Prima della prima chiamata

Questa famiglia si autentica con un unico token di piattaforma, inviato come header X-Platform-Token oppure come campo platform_token nel corpo. La creazione dei gruppi passa da una linea agente AI dedicata, che va configurata prima.

Nel backoffice, in AI Agent Settings, compila tutti e sei i campi:

  • AI Agent Name
  • AI Agent Instance ID
  • AI Agent Access Token
  • AI Agent Phone — E.164, ad esempio +391234567890
  • AI Agent Gateway API URL
  • AI Agent Gateway API Key

Nella stessa schermata trovi il Platform Token for API da copiare, i Group Creation Logs con i gruppi creati e falliti, e il visualizzatore Group Chat History con filtri, link ai media e un badge ADMIN sui messaggi dell'agente.

Ogni endpoint risponde con la stessa struttura: { "error": null | string, "data": object | null }.

Parametro necessario a ogni endpoint Gruppi

platform_token string Obbligatorio
Token di piattaforma dal backoffice. Può essere inviato come header X-Platform-Token invece che come campo del corpo.
POST /p/{regToken}/api_group/create

Crea un gruppo

Attenzione

PLATFORM TOKEN obbligatorio — richiedilo all'amministratore della piattaforma. Non è mostrato nella dashboard cliente. Dove lo trovano gli amministratori.

Crea un gruppo WhatsApp con l'agente AI come creatore e amministratore. Il corpo è JSON grezzo.

Oltre al token di piattaforma

members array Obbligatorio
Almeno 2 numeri di telefono in formato E.164 con + iniziale. L'agente AI viene aggiunto in più, quindi il gruppo più piccolo possibile è di 3 persone.
group_name string Facoltativo
Il titolo del gruppo. Se omesso, il gateway genera un nome predefinito.
description string Facoltativo
La descrizione del gruppo.
metadata object Facoltativo
Qualsiasi dato tu voglia conservare insieme al gruppo — match_id, source e così via.
Errori6
Platform token missing.
Nessun token né nell'header né nel corpo.
Platform token mismatched.
Il token inviato non è quello della piattaforma.
At least 2 member phone numbers are required.
Meno di due numeri validi — e devono esistere su WhatsApp.
Invalid member phone number. Use +countrycode format.
Uno dei numeri non è in formato E.164.
Invalid date for line_expiration_date. Date should be greater than the current date.
line_expiration_date è nel passato.
AI agent instance ID is missing in settings.
Le impostazioni AI Agent Settings nel backoffice sono incomplete.
Da dove arrivano le credenziali del gateway

Il Gateway API URL e la API Key usati per la creazione vengono letti da AI Agent Settings — non li invii mai nella chiamata.

POST /p/{regToken}/api_group/history

Ottieni la cronologia chat del gruppo

Attenzione

PLATFORM TOKEN obbligatorio — richiedilo all'amministratore della piattaforma. Non è mostrato nella dashboard cliente. Dove lo trovano gli amministratori.

Restituisce i messaggi del gruppo paginati, riportando insieme ai risultati i filtri che hai applicato.

Nota

La documentazione più vecchia riporta questo endpoint come GET con parametri di query. È un POST, e i filtri vanno nel corpo JSON.

Filtri — tutti facoltativi, ma inviane almeno uno

group_id string Facoltativo
Filtra per ID gruppo. Consigliato rispetto al nome.
group_name string Facoltativo
Filtra per nome del gruppo, che viene ricondotto a un ID gruppo.
member_phone string Facoltativo
Filtra per mittente, in formato +123….
from_date string (date) Facoltativo
YYYY-MM-DD.
to_date string (date) Facoltativo
YYYY-MM-DD.
search string Facoltativo
Ricerca libera all'interno dei messaggi.
page int Facoltativo
Predefinito 1.
limit int Facoltativo
Predefinito 50, massimo 200.

1 endpoint

Configurazione automatica Migachat

Attivare l'assistente AI su una linea con una sola chiamata — istanza, credenziali, prompt e tutti i token che ti serviranno dopo.

Che cosa fa un solo POST

Pensato per sistemi esterni — pannelli di fatturazione, CRM — per attivare MigaChat dentro una specifica applicazione e su una specifica linea WhatsApp senza che nessuno apra il backoffice. Una sola richiesta:

  • aggiunge e attiva la funzione MigaChat nell'app,
  • memorizza le credenziali OpenAI (API key, ID organizzazione, modello),
  • inserisce il prompt di sistema per il chatbot,
  • collega la linea WhatsApp all'istanza MigaChat,
  • e restituisce i token Bridge, Chat History e Send Message.
POST /p/{regToken}/api_migachat-setup/setup

Attiva MigaChat su una linea

Crea e configura un'istanza MigaChat e la collega a una linea WhatsApp.

Nota

Questo endpoint è raggiungibile anche senza il prefisso /p/<token>/, all'indirizzo /api_migachat-setup/setup. Entrambi i percorsi sono attivi; su quello con prefisso il registration token può arrivare dal percorso invece che dal corpo.

Obbligatori

app_id int Obbligatorio
L'ID della tua applicazione.
security_token string Obbligatorio
Il security token della tua piattaforma.
line_id int Obbligatorio
La linea WhatsApp a cui collegare MigaChat.
openai_api_key string Obbligatorio
La tua chiave segreta OpenAI. Viene validata presso OpenAI prima che qualsiasi cosa venga salvata.
organization_id string Obbligatorio
L'ID della tua organizzazione OpenAI.
gpt_model string Obbligatorio
Il modello da usare, ad esempio gpt-4o-mini.
prompt string Obbligatorio
Il prompt di sistema — le istruzioni permanenti del chatbot.

Facoltativi

chat_type string Facoltativo
chatgpt (predefinito) oppure assistant.
enable_stt int Facoltativo
1 attiva il riconoscimento vocale. Predefinito 0.
enable_tts int Facoltativo
1 attiva la sintesi vocale. Predefinito 0.
overwrite int Facoltativo
1 sostituisce un'istanza MigaChat già presente su questa linea. Predefinito 0, che invece fa fallire la chiamata.
Errori5
MigaChat not installed
Il modulo MigaChat non è installato su questo server.
Invalid Line ID
Quel line_id non appartiene a quell'app_id.
Already configured
La linea ha già un'istanza MigaChat. Invia overwrite=1 per sostituirla.
Invalid OpenAI Key
Non è stato possibile validare la chiave presso OpenAI.
missing required fields: app_id, line_id, openai_api_key, …
La risposta elenca ogni campo obbligatorio assente o vuoto.