Aller au contenu
WbizTool

Envoyez des messages WhatsApp avec PHP

Envoyez des textes, images et fichiers WhatsApp depuis votre site ou votre application PHP, à partir de votre propre numéro relié à WbizTool comme WhatsApp Web. Il suffit de l’extension cURL de PHP et d’un POST vers un endpoint documenté.

Essai gratuit : 50 messages sur n’importe quelle période de 30 jours, sans carte bancaire.

Comment ça marche

  1. Obtenez votre clé API et reliez votre numéro

    Inscrivez-vous, puis reliez votre numéro WhatsApp sur la page Numéros WhatsApp avec un code QR ou un code de connexion, comme WhatsApp Web. Dans Paramètres → Clés API, créez une clé et copiez votre Client ID (le guide des clés API ci-dessous montre où). L’ID affiché sur la carte du numéro (par exemple ID 678) est votre whatsapp_client.

  2. Construisez la requête

    Mettez client_id, api_key, whatsapp_client, le numéro de téléphone et msg dans un tableau. Envoyez-le en JSON avec l’extension cURL de PHP – ou avec n’importe quel client HTTP que vous utilisez déjà, avec les mêmes champs.

  3. Envoyez le message

    Faites un POST vers https://wbiztool.com/api/v1/send_msg/. Une réponse avec "status": 1 et un msg_id signifie que le message est en file d’attente sur votre numéro.

  4. Vérifiez qu’il est parti

    Passez une URL webhook pour être prévenu quand le message est envoyé ou échoue, ou interrogez l’endpoint de statut du message avec le msg_id.

Exemples de code PHP

Envoyer un texte
<?php
$payload = [
    'client_id'       => 12345,
    'api_key'         => 'YOUR_API_KEY',
    'whatsapp_client' => 678,
    'msg_type'        => 0,
    'country_code'    => '91',
    'phone'           => '9876543210',
    'msg'             => 'Hi Aman, your order #4821 has shipped and will arrive on Thursday.',
];

$ch = curl_init('https://wbiztool.com/api/v1/send_msg/');
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');
}
Réponse
{"status": 1, "message": "Created", "msg_id": 9817263}
Envoyer une image depuis une URL
<?php
$ch = curl_init('https://wbiztool.com/api/v1/send_msg/');
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,
        'country_code'    => '91',
        'phone'           => '9876543210',
        'img_url'         => 'https://example.com/offers/diwali-sale.jpg',
        'msg'             => 'Our Diwali sale starts today 🎉',
    ]),
    CURLOPT_RETURNTRANSFER => true,
]);
echo curl_exec($ch);
curl_close($ch);
Envoyer un PDF (téléversement de fichier)
<?php
$ch = curl_init('https://wbiztool.com/api/v1/send_msg/');
curl_setopt_array($ch, [
    CURLOPT_POST           => true,
    // An array body (not json_encode) makes cURL send multipart/form-data.
    CURLOPT_POSTFIELDS     => [
        'client_id'       => 12345,
        'api_key'         => 'YOUR_API_KEY',
        'whatsapp_client' => 678,
        'msg_type'        => 2,
        'country_code'    => '91',
        'phone'           => '9876543210',
        'msg'             => 'Your invoice for order #4821 is attached.',
        'file_name'       => 'invoice-4821.pdf',
        'file'            => new CURLFile('/path/to/invoice-4821.pdf', 'application/pdf', 'invoice-4821.pdf'),
    ],
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT        => 120,
]);
echo curl_exec($ch);
curl_close($ch);
Planifier un message
<?php
$payload = [
    'client_id'       => 12345,
    'api_key'         => 'YOUR_API_KEY',
    'whatsapp_client' => 678,
    'msg_type'        => 0,
    'country_code'    => '91',
    'phone'           => '9876543210',
    'msg'             => 'Hi Aman, a reminder that your appointment is today at 11:30 AM.',
    'date'            => '24/12/2026',
    'time'            => '09:00',
    'timezone'        => 'Asia/Kolkata',
];

$ch = curl_init('https://wbiztool.com/api/v1/schedule_msg/');
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 'Scheduled with msg_id ' . $result['msg_id'];
} else {
    echo 'Failed: ' . ($result['message'] ?? 'no message in response');
}
Vérifier le statut du message
<?php
$msgId = 9817263;
$payload = [
    'client_id' => 12345,
    'api_key'   => 'YOUR_API_KEY',
];

$ch = curl_init("https://wbiztool.com/api/v1/message/status/{$msgId}/");
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['message'] ?? '') === 'Unknown message id') {
    echo 'No message with this ID in your workspace';
} elseif (!isset($result['status_text'])) {
    echo 'Request failed: ' . ($result['message'] ?? 'no message in response');
} elseif ($result['status'] === 1) {
    echo 'Sent';
} elseif ($result['status'] === 2) {
    echo 'Failed: ' . $result['error'];
} else {
    echo 'Status: ' . $result['status_text'];
}
Recevoir le webhook de statut
<?php
// webhook.php – WbizTool posts form fields, so they arrive in $_POST.
$msgId  = $_POST['msg_id'] ?? '';
$status = $_POST['status'] ?? ''; // SENT, FAILED, CANCELLED or EXPIRED
error_log("WbizTool message $msgId: $status");
http_response_code(200);

Ce que vous pouvez faire

  • Aucune bibliothèque à installer

    Les exemples n’utilisent que l’extension cURL de PHP. L’API accepte du JSON, des champs de formulaire, ou du multipart form data quand vous téléversez un fichier.

  • Textes, images et fichiers

    Réglez msg_type sur 0 pour du texte, 1 pour une image ou 2 pour un fichier. Indiquez une img_url ou une file_url publique, ou téléversez le fichier avec CURLFile.

  • Planifier pour plus tard

    Faites un POST vers /api/v1/schedule_msg/ avec date (jj/mm/aaaa), time (HH:MM) et un timezone comme Asia/Kolkata ou America/New_York.

  • Des webhooks pour chaque statut

    Passez webhook et votre script reçoit un POST encodé comme un formulaire – lisez $_POST['msg_id'] et $_POST['status'] (SENT, FAILED, CANCELLED ou EXPIRED).

  • Sur WordPress ? Utilisez le plugin

    Le plugin WordPress WbizTool envoie des messages WhatsApp pour les commandes WooCommerce, les réservations WP Amelia et les formulaires Contact Form 7, sans code.

Bon à savoir

  • "status": 1 signifie que le message est en file d’attente, pas qu’il est remis. Sent est l’état final de réussite ; l’API n’indique pas si le message a été remis ou lu.
  • Les erreurs d’envoi de message reviennent avec HTTP 400 (429 à la limite quotidienne) ; les erreurs de planification reviennent en général avec HTTP 200 et "status": 0 : décodez donc toujours le corps et vérifiez status.
  • Pour un téléversement de fichier, passez un tableau à CURLOPT_POSTFIELDS, pas json_encode, pour que cURL envoie du multipart/form-data avec le fichier dans un champ nommé file.
  • Gardez la clé API sur votre serveur, par exemple dans une variable d’environnement. Quiconque la possède peut envoyer depuis vos numéros : ne la mettez jamais dans du JavaScript côté navigateur, dans une application mobile ou dans du code que vous publiez.
  • L’essai gratuit inclut 50 messages sur n’importe quelle période de 30 jours et 1 numéro, sans carte bancaire. Les forfaits payants commencent à 25 $ par mois aux États-Unis (votre prix figure sur la page Tarifs) et envoient des messages illimités dans le cadre d’un usage raisonnable : jusqu’à 1 000 par jour et par numéro.
  • Les messages partent de votre propre numéro WhatsApp, donc les règles de WhatsApp s’appliquent : écrivez aux personnes qui s’attendent à avoir de vos nouvelles.

Questions fréquentes

Existe-t-il un SDK PHP ?
Il n’y a pas de package PHP officiel, et vous n’en avez pas besoin : chaque appel est un simple POST avec l’extension cURL, comme ci-dessus. N’importe quel client HTTP PHP fonctionne avec la même URL et les mêmes champs.
Comment envoyer une facture PDF depuis PHP ?
Utilisez msg_type 2. Indiquez une file_url publique, ou téléversez le fichier avec new CURLFile(...) dans un champ nommé file. Indiquez file_name avec son extension, comme invoice-4821.pdf.
Comment savoir si le message a été envoyé ?
Une réponse avec "status": 1 et un msg_id signifie qu’il est en file d’attente. Passez une URL webhook pour recevoir un POST avec SENT, FAILED, CANCELLED ou EXPIRED, ou appelez l’endpoint de statut du message avec le msg_id. Sent est l’état final : l’API n’indique pas si le message a été remis ou lu.
Quel format de numéro de téléphone envoyer ?
Envoyez le numéro avec son indicatif pays (919876543210), ou sans (9876543210) avec country_code (91). Les espaces, le +, les tirets et les parenthèses sont retirés pour vous : +91 98765-43210 fonctionne aussi.
Ai-je besoin de l’API WhatsApp Business ou d’une validation Meta ?
Non. WbizTool envoie depuis votre propre numéro WhatsApp ou WhatsApp Business, relié comme WhatsApp Web. Pas de validation Meta, et aucun modèle de message à faire approuver.
Est-ce payant au message ?
Non. L’essai gratuit inclut 50 messages sur n’importe quelle période de 30 jours. Les forfaits payants envoient des messages illimités dans le cadre d’un usage raisonnable, jusqu’à 1 000 par jour et par numéro : Lite 25 $, Standard 59 $ et Advanced 149 $ par mois aux États-Unis ; la page Tarifs affiche le prix de votre pays.

Lire les guides

Voir aussi

Envoyez votre premier message WhatsApp automatisé dès aujourd'hui

Créez un compte, scannez le QR code et envoyez un message en moins de cinq minutes.

Essai gratuit

Forfaits payants à partir de 25 $ par mois aux États-Unis. Tarifs