API di messaggistica
API Invia messaggio a un gruppo WhatsApp
Invia un testo, un'immagine o un documento WhatsApp a un gruppo WhatsApp di cui fa parte il tuo numero collegato. Usala per annunci al team, aggiornamenti per la community e notifiche broadcast.
https://wbiztool.com/api/v1/send_msg/group/Corpo: JSON, campi di un modulo o multipart/form-data quando carichi un file
Il messaggio viene messo in coda e inviato al gruppo dal tuo numero WhatsApp. La risposta ti restituisce un msg_id che puoi usare per verificarne lo stato.
Esempio rapido#
curl -X POST https://wbiztool.com/api/v1/send_msg/group/ \
-H "Content-Type: application/json" \
-d '{
"client_id": 12345,
"api_key": "YOUR_API_KEY",
"whatsapp_client": 678,
"msg_type": 0,
"group_name": "Sales Team Mumbai",
"msg": "Reminder: *weekly review* starts at 4 PM today."
}'import requests
response = requests.post(
"https://wbiztool.com/api/v1/send_msg/group/",
json={
"client_id": 12345,
"api_key": "YOUR_API_KEY",
"whatsapp_client": 678,
"msg_type": 0,
"group_name": "Sales Team Mumbai",
"msg": "Reminder: *weekly review* starts at 4 PM today.",
},
timeout=60,
)
result = response.json() # read the body even when the HTTP code is 400
if result.get("status") == 1:
print("Queued with msg_id", result["msg_id"])
else:
print("Failed:", result.get("message"))// Node.js 18+ (built-in fetch). Save as .mjs to use top-level await.
const response = await fetch("https://wbiztool.com/api/v1/send_msg/group/", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
client_id: 12345,
api_key: "YOUR_API_KEY",
whatsapp_client: 678,
msg_type: 0,
group_name: "Sales Team Mumbai",
msg: "Reminder: *weekly review* starts at 4 PM today.",
}),
});
const result = await response.json(); // read the body even when the HTTP code is 400
if (result.status === 1) {
console.log("Queued with msg_id", result.msg_id);
} else {
console.error("Failed:", result.message);
}<?php
$payload = [
'client_id' => 12345,
'api_key' => 'YOUR_API_KEY',
'whatsapp_client' => 678,
'msg_type' => 0,
'group_name' => 'Sales Team Mumbai',
'msg' => 'Reminder: *weekly review* starts at 4 PM today.',
];
$ch = curl_init('https://wbiztool.com/api/v1/send_msg/group/');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 60,
]);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
if (($result['status'] ?? 0) === 1) {
echo 'Queued with msg_id ' . $result['msg_id'];
} else {
echo 'Failed: ' . ($result['message'] ?? 'no response');
}Sostituisci 12345, YOUR_API_KEY e 678 con i tuoi valori. Consulta Autenticazione per sapere dove trovarli.
Parametri della richiesta#
Autenticazione
client_idintegerobbligatorioIl tuo ID Client API, da Impostazioni → Chiavi API.
api_keystringobbligatorioLa tua chiave API, dalla stessa pagina.
whatsapp_clientintegerObbligatorio se il proprietario ha più di un numero collegatoID del numero WhatsApp da cui inviare, dalle Impostazioni WhatsApp. Deve essere un numero che appartiene al proprietario dello spazio di lavoro. Se lo ometti e il proprietario ha esattamente un numero collegato, viene usato quel numero.
Gruppo e messaggio
group_namestringobbligatorioNome del gruppo WhatsApp, scritto esattamente come appare in WhatsApp. Invialo come stringa. Un numero JSON come
2024restituisce una pagina di errore HTML (HTTP500). Vedi Come viene trovato il gruppo.msg_typeintegerfacoltativo0testo (predefinito),1immagine,2file o documento.msgstringObbligatorio quando msg_type è 0Testo del messaggio. Per immagini e file è la didascalia e può essere vuoto. La formattazione di WhatsApp funziona:
*bold*,_italic_,~strikethrough~.messageè accettato come alias.
Immagini e file
img_urlstringObbligatorio quando msg_type è 1 e non viene caricato alcun fileURL pubblico
httpohttpsdell'immagine.file_urlstringObbligatorio quando msg_type è 2 e non viene caricato alcun fileURL pubblico
httpohttpsda cui il file può essere scaricato direttamente.filefilefacoltativoCarica l'immagine o il file invece di fornire un URL. Invia la richiesta come
multipart/form-datacon il campo chiamatofile.file_namestringfacoltativoNome del file che vede il gruppo, ad esempio
price-list.pdf. La sua estensione determina come viene inviato il file, quindi includila. Viene inviato in minuscolo, caratteri come& : ? * $ ;vengono sostituiti con_e viene troncato a 150 caratteri. Se lo ometti, il nome viene preso dall'URL o dal file caricato.
Opzioni di consegna
expire_after_secondsintegerfacoltativoSegna il messaggio come scaduto (stato
4) se non è stato inviato entro questo numero di secondi, ad esempio3600per un'ora. Lo fa un processo in background almeno 30 secondi dopo la scadenza, quindi non farci affidamento per scadenze inferiori a un minuto.webhookstringfacoltativoURL che riceve una
POSTquando il messaggio viene inviato o non riesce. Il payload è lo stesso di Invia messaggio.
Immagini e file seguono le stesse regole di Invia messaggio: gli URL vengono scaricati quando chiami l'API (fino a 100 MB). Al momento dell'invio, le immagini oltre 16 MB e i video oltre 64 MB non riescono, l'audio WAV e OGG non è supportato, e ai file (msg_type 2) senza un'estensione supportata viene aggiunto .pdf, compresi quelli caricati. I nomi dei file vengono inviati in minuscolo. Consulta Invio di immagini e file per l'elenco completo delle estensioni e degli errori.
Per caricare un file, usa gli esempi multipart di Invia messaggio, sostituendo l'URL con /api/v1/send_msg/group/ e phone/country_code con group_name.
curl -X POST https://wbiztool.com/api/v1/send_msg/group/ \
-H "Content-Type: application/json" \
-d '{
"client_id": 12345,
"api_key": "YOUR_API_KEY",
"whatsapp_client": 678,
"msg_type": 1,
"group_name": "Sales Team Mumbai",
"img_url": "https://example.com/reports/weekly-sales.png",
"msg": "This week'\''s sales summary"
}'import requests
response = requests.post(
"https://wbiztool.com/api/v1/send_msg/group/",
json={
"client_id": 12345,
"api_key": "YOUR_API_KEY",
"whatsapp_client": 678,
"msg_type": 1,
"group_name": "Sales Team Mumbai",
"img_url": "https://example.com/reports/weekly-sales.png",
"msg": "This week's sales summary",
},
timeout=60,
)
print(response.json())// Node.js 18+ (built-in fetch). Save as .mjs to use top-level await.
const response = await fetch("https://wbiztool.com/api/v1/send_msg/group/", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
client_id: 12345,
api_key: "YOUR_API_KEY",
whatsapp_client: 678,
msg_type: 1,
group_name: "Sales Team Mumbai",
img_url: "https://example.com/reports/weekly-sales.png",
msg: "This week's sales summary",
}),
});
console.log(await response.json());<?php
$ch = curl_init('https://wbiztool.com/api/v1/send_msg/group/');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode([
'client_id' => 12345,
'api_key' => 'YOUR_API_KEY',
'whatsapp_client' => 678,
'msg_type' => 1,
'group_name' => 'Sales Team Mumbai',
'img_url' => 'https://example.com/reports/weekly-sales.png',
'msg' => "This week's sales summary",
]),
CURLOPT_RETURNTRANSFER => true,
]);
echo curl_exec($ch);
curl_close($ch);Come viene trovato il gruppo#
Wbiztool non controlla il nome del gruppo quando chiami l'API. Al momento dell'invio del messaggio, Wbiztool cerca group_name nelle tue chat WhatsApp e apre il primo risultato. Di conseguenza:
- Il tuo numero WhatsApp collegato deve essere membro del gruppo.
- Usa il nome completo del gruppo esattamente come lo mostra WhatsApp, emoji e punteggiatura compresi. Gli spazi all'inizio e alla fine vengono ignorati.
- Assicurati che il nome sia univoco. Un nome breve o parziale può corrispondere a un'altra chat che compare prima nella ricerca.
- Se non c'è alcuna corrispondenza, se nel gruppo solo gli amministratori possono inviare messaggi e il tuo numero non è amministratore, oppure se solo gli amministratori della community possono pubblicare, il messaggio non riesce con l'errore
Group not found. - Se il tuo numero ha lasciato il gruppo, il messaggio non riesce con l'errore
Group member blocked.
I problemi relativi al gruppo non compaiono nella risposta dell'API. Usa un webhook o Stato del messaggio per sapere se il messaggio è stato inviato.
Usare il client ufficiale#
Il client Python chiama questo endpoint per te.
from wbiztool_client import WbizToolClient
client = WbizToolClient(api_key="YOUR_API_KEY", client_id=12345)
result = client.send_message_to_group(
group_name="Sales Team Mumbai",
msg="Reminder: weekly review starts at 4 PM today.",
whatsapp_client=678,
)
print(result)Gli errori sollevano requests.HTTPError. Leggi il motivo con e.response.json()["message"].
Risposta#
Una richiesta riuscita restituisce HTTP 200:
{
"status": 1,
"message": "Created",
"msg_id": 9817263
}
| Campo | Tipo | Descrizione |
|---|---|---|
status | integer | 1 se il messaggio è stato messo in coda, 0 se la richiesta non è riuscita. |
message | string | Created in caso di successo, altrimenti l'errore. |
msg_id | integer | ID del messaggio in coda. Salvalo per verificarne lo stato in seguito. Presente solo in caso di successo. |
"status": 1 significa che il messaggio è stato messo in coda, non che abbia raggiunto il gruppo. Usa un webhook o Stato del messaggio per confermare che è stato inviato.
Errori#
Gli errori restituiscono HTTP 400 con status impostato su 0:
{ "status": 0, "message": "Group Name cant be null" }
| Messaggio | Come risolvere |
|---|---|
Auth Error - Please send correct API key and Client id | Invia un api_key non vuoto. |
Invalid client id. | Invia client_id come numero. |
Auth Error: invalid api key | Verifica che la chiave esista, non sia stata eliminata e appartenga a questo client_id. |
Group Name cant be null | Aggiungi group_name. |
Msg cant be null | I messaggi di testo (msg_type 0) richiedono msg. |
Image Url Can't be null | Per msg_type 1, invia img_url o carica un file. |
File Url Can't be null | Per msg_type 2, invia file_url o carica un file. |
Invalid file url, Can't download / Invalid file url | L'URL non è pubblico, è scaduto il tempo di download oppure il file supera i 100 MB. |
Invalid whatsapp client None | Quell'ID whatsapp_client non appartiene al proprietario dello spazio di lavoro. Vedi l'avviso sopra. |
Invalid whatsapp client id. | Invia whatsapp_client. È obbligatorio a meno che il proprietario non abbia esattamente un numero collegato. |
Not enough credits | Il tuo piano non ha più messaggi disponibili. |
Demo Account can not access apis | Usa un account normale. |
Account Disabled | Il tuo account è disattivato. Contatta l'assistenza. |
Invalid JSON format: … | Il corpo JSON non è valido, spesso a causa di una virgola finale o di un a capo non codificato in msg. Usa \n per andare a capo. |
Suggerimenti#
- Prova prima il nome: invia un breve testo al gruppo e controlla Stato del messaggio prima di automatizzare qualsiasi cosa.
- Gruppi rinominati: se qualcuno rinomina il gruppo in WhatsApp, aggiorna anche
group_namenella tua integrazione. - Tipi di messaggio: gli unici valori validi per
msg_typesono0,1e2. Qualsiasi valore che non sia un numero intero restituisce una pagina di errore HTML (HTTP500) invece di JSON. - Più gruppi insieme: Invia a più numeri accetta nomi di gruppi insieme a numeri di telefono in un'unica richiesta.
