API de messagerie
API d'envoi de messages à un groupe WhatsApp
Envoyez un texte, une image ou un document WhatsApp à un groupe WhatsApp dont votre numéro connecté est membre. Utilisez-la pour les annonces d'équipe, les actualités de communauté et les notifications de diffusion.
https://wbiztool.com/api/v1/send_msg/group/Corps: JSON, champs de formulaire, ou multipart/form-data pour téléverser un fichier
Le message est mis en file d'attente et envoyé au groupe depuis votre numéro WhatsApp. La réponse vous fournit un msg_id que vous pouvez utiliser pour vérifier son statut.
Exemple rapide#
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');
}Remplacez 12345, YOUR_API_KEY et 678 par vos propres valeurs. Consultez Authentification pour savoir où les trouver.
Paramètres de la requête#
Authentification
client_idintegerobligatoireVotre ID client API, dans Paramètres → Clés API.
api_keystringobligatoireVotre clé API, sur cette même page.
whatsapp_clientintegerObligatoire si le propriétaire a plusieurs numéros connectésID du numéro WhatsApp depuis lequel envoyer, dans les paramètres WhatsApp. Il doit s'agir d'un numéro appartenant au propriétaire de l'espace de travail. Si vous l'omettez et que le propriétaire possède exactement un numéro connecté, c'est ce numéro qui est utilisé.
Groupe et message
group_namestringobligatoireNom du groupe WhatsApp, écrit exactement comme il apparaît dans WhatsApp. Envoyez-le sous forme de chaîne. Un nombre JSON comme
2024renvoie une page d'erreur HTML (HTTP500). Consultez Comment le groupe est trouvé.msg_typeintegerfacultatif0texte (par défaut),1image,2fichier ou document.msgstringObligatoire lorsque msg_type vaut 0Texte du message. Pour les images et les fichiers, il s'agit de la légende, qui peut être vide. La mise en forme WhatsApp fonctionne :
*bold*,_italic_,~strikethrough~.messageest accepté comme alias.
Images et fichiers
img_urlstringObligatoire lorsque msg_type vaut 1 et qu'aucun fichier n'est téléverséURL publique
httpouhttpsde l'image.file_urlstringObligatoire lorsque msg_type vaut 2 et qu'aucun fichier n'est téléverséURL publique
httpouhttpsà partir de laquelle le fichier peut être téléchargé directement.filefilefacultatifTéléversez l'image ou le fichier au lieu de fournir une URL. Envoyez la requête en
multipart/form-dataavec le champ nomméfile.file_namestringfacultatifNom du fichier affiché dans le groupe, par exemple
price-list.pdf. Son extension détermine la façon dont le fichier est envoyé : incluez-en donc une. Il est envoyé en minuscules, les caractères comme& : ? * $ ;sont remplacés par_, et il est tronqué à 150 caractères. Si vous l'omettez, le nom est tiré de l'URL ou du fichier téléversé.
Options d'envoi
expire_after_secondsintegerfacultatifMarque le message comme expiré (statut
4) s'il n'a pas été envoyé dans ce nombre de secondes, par exemple3600pour une heure. Une tâche en arrière-plan s'en charge au moins 30 secondes après l'échéance : ne comptez donc pas dessus pour des délais inférieurs à une minute.webhookstringfacultatifURL qui reçoit un
POSTlorsque le message est envoyé ou échoue. Le contenu est le même que pour Envoyer un message.
Les images et les fichiers suivent les mêmes règles que pour l'envoi de messages : les URL sont téléchargées au moment où vous appelez l'API (jusqu'à 100 Mo). Au moment de l'envoi du message, les images de plus de 16 Mo et les vidéos de plus de 64 Mo échouent, l'audio WAV et OGG n'est pas pris en charge, et .pdf est ajouté aux fichiers (msg_type 2) sans extension prise en charge, fichiers téléversés compris. Les noms de fichiers sont envoyés en minuscules. Consultez Envoyer des images et des fichiers pour la liste complète des extensions et des erreurs.
Pour téléverser un fichier, utilisez les exemples multipart de Envoyer un message, en remplaçant l'URL par /api/v1/send_msg/group/ et phone/country_code par 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);Comment le groupe est trouvé#
Wbiztool ne vérifie pas le nom du groupe lorsque vous appelez l'API. Au moment de l'envoi du message, Wbiztool recherche group_name dans vos discussions WhatsApp et ouvre le premier résultat. Par conséquent :
- Votre numéro WhatsApp connecté doit être membre du groupe.
- Utilisez le nom complet du groupe, exactement tel que WhatsApp l'affiche, y compris les emoji et la ponctuation. Les espaces en début et en fin sont ignorés.
- Choisissez un nom unique. Un nom court ou partiel peut correspondre à une autre discussion qui apparaît en premier dans la recherche.
- Si aucun résultat ne correspond, si seuls les administrateurs peuvent envoyer des messages dans le groupe et que votre numéro n'est pas administrateur, ou si seuls les administrateurs de la communauté peuvent publier, le message échoue avec l'erreur
Group not found. - Si votre numéro a quitté le groupe, le message échoue avec l'erreur
Group member blocked.
Les problèmes de groupe n'apparaissent pas dans la réponse de l'API. Utilisez un webhook ou Statut du message pour savoir si le message a été envoyé.
Utiliser le client officiel#
Le client Python appelle cet endpoint pour vous.
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)Les erreurs lèvent requests.HTTPError. Lisez la raison avec e.response.json()["message"].
Réponse#
Une requête réussie renvoie le code HTTP 200 :
{
"status": 1,
"message": "Created",
"msg_id": 9817263
}
| Champ | Type | Description |
|---|---|---|
status | integer | 1 si le message a été mis en file d'attente, 0 si la requête a échoué. |
message | string | Created en cas de succès, sinon l'erreur. |
msg_id | integer | ID du message en file d'attente. Enregistrez-le pour vérifier son statut plus tard. Présent uniquement en cas de succès. |
"status": 1 signifie que le message a été mis en file d'attente, pas qu'il a déjà atteint le groupe. Utilisez un webhook ou Statut du message pour confirmer qu'il a été envoyé.
Erreurs#
Les erreurs renvoient le code HTTP 400 avec status à 0 :
{ "status": 0, "message": "Group Name cant be null" }
| Message | Comment corriger |
|---|---|
Auth Error - Please send correct API key and Client id | Envoyez une api_key non vide. |
Invalid client id. | Envoyez client_id sous forme de nombre. |
Auth Error: invalid api key | Vérifiez que la clé existe, n'a pas été supprimée et appartient à ce client_id. |
Group Name cant be null | Ajoutez group_name. |
Msg cant be null | Les messages texte (msg_type 0) nécessitent msg. |
Image Url Can't be null | Pour msg_type 1, envoyez img_url ou téléversez un file. |
File Url Can't be null | Pour msg_type 2, envoyez file_url ou téléversez un file. |
Invalid file url, Can't download / Invalid file url | L'URL n'est pas publique, le délai a expiré ou le fichier dépasse 100 Mo. |
Invalid whatsapp client None | Cet ID whatsapp_client n'appartient pas au propriétaire de l'espace de travail. Consultez l'avertissement ci-dessus. |
Invalid whatsapp client id. | Envoyez whatsapp_client. Il est obligatoire, sauf si le propriétaire possède exactement un numéro connecté. |
Not enough credits | Votre forfait n'a plus de messages disponibles. |
Demo Account can not access apis | Utilisez un compte standard. |
Account Disabled | Votre compte est désactivé. Contactez le support. |
Invalid JSON format: … | Le corps JSON n'est pas valide, souvent à cause d'une virgule finale ou d'un saut de ligne non échappé dans msg. Utilisez \n pour les retours à la ligne. |
Conseils#
- Testez d'abord le nom : envoyez un court texte au groupe et vérifiez Statut du message avant d'automatiser quoi que ce soit.
- Groupes renommés : si quelqu'un renomme le groupe dans WhatsApp, mettez aussi à jour
group_namedans votre intégration. - Types de message : seules les valeurs
0,1et2sont valides pourmsg_type. Toute valeur qui n'est pas un nombre entier renvoie une page d'erreur HTML (HTTP500) au lieu de JSON. - Plusieurs groupes à la fois : Envoyer à plusieurs numéros accepte des noms de groupe mélangés à des numéros de téléphone dans une même requête.
