WhatsApp

Utilisez cette API pour envoyer des messages WhatsApp via l'API WhatsApp Business (WABA). Vous pouvez envoyer des messages modèles, des messages libres, des médias (image, vidéo, audio, document, sticker), des localisations, des contacts et des messages interactifs. Les réactions sont envoyées via le point de terminaison des événements.

POST/api/waba/messages

Envoyer un message

Envoyez un message WhatsApp à un destinataire. Vous pouvez envoyer des messages modèles, des messages libres, des médias (image, vidéo, audio, document, sticker), des localisations, des contacts et des messages interactifs (boutons, listes).

Paramètres obligatoires

  • Name
    from
    Type
    string
    Description

    Votre numéro d'expéditeur WhatsApp Business enregistré au format international (ex. 4915112345678).

  • Name
    to
    Type
    string
    Description

    Numéro de téléphone du destinataire au format international (ex. 4917612345678).

Paramètres de message modèle

  • Name
    type
    Type
    string
    Description

    Définissez template pour envoyer un message modèle WhatsApp pré-approuvé.

  • Name
    template
    Type
    string
    Description

    Le nom du modèle WhatsApp approuvé (ex. hello_world).

  • Name
    language
    Type
    string
    Description

    Code de langue du modèle (ex. de, en, fr).

  • Name
    components
    Type
    object
    Optional
    Optional
    Description

    Valeurs des paramètres du modèle. Contient des tableaux optionnels pour header, body et buttons. Les valeurs sont positionnelles et remplacent {{1}}, {{2}}, etc. dans le modèle.

  • components
    object
    Paramètres des composants du modèle
      • Name
        header
        Type
        array
        Optional
        Optional
        Description

        Valeurs pour les espaces réservés de l'en-tête. Pour les en-têtes texte, fournissez des chaînes. Pour les en-têtes image, fournissez une URL.

      • Name
        body
        Type
        array
        Optional
        Optional
        Description

        Valeurs pour les espaces réservés du corps. Chaque entrée remplace la variable {{n}} correspondante.

      • Name
        buttons
        Type
        array
        Optional
        Optional
        Description

        Valeurs des paramètres de boutons. Chaque entrée est un objet avec type, sub_type et parameters.

  • Paramètres de message libre

    • Name
      type
      Type
      string
      Description

      Définissez text ou omettez. Le texte du message est envoyé dans une fenêtre de conversation de 24 heures.

    • Name
      text
      Type
      string
      Description

      Le texte du message. Ne peut être envoyé que dans une fenêtre de conversation active de 24 heures.

    Paramètres de message image

    • Name
      type
      Type
      string
      Description

      Définissez image.

    • Name
      url
      Type
      string
      Description

      URL publique du fichier image (JPEG, PNG).

    • Name
      caption
      Type
      string
      Optional
      Optional
      Description

      Légende optionnelle pour l'image.

    Paramètres de message vidéo

    • Name
      type
      Type
      string
      Description

      Définissez video.

    • Name
      url
      Type
      string
      Description

      URL publique du fichier vidéo (MP4, 3GPP).

    • Name
      caption
      Type
      string
      Optional
      Optional
      Description

      Légende optionnelle pour la vidéo.

    Paramètres de message audio

    • Name
      type
      Type
      string
      Description

      Définissez audio.

    • Name
      url
      Type
      string
      Description

      URL publique du fichier audio (MP3, OGG, AMR, AAC).

    Paramètres de message document

    • Name
      type
      Type
      string
      Description

      Définissez document.

    • Name
      url
      Type
      string
      Description

      URL publique du fichier document (PDF, DOC, etc.).

    • Name
      filename
      Type
      string
      Description

      Le nom de fichier affiché au destinataire.

    • Name
      caption
      Type
      string
      Optional
      Optional
      Description

      Légende optionnelle pour le document.

    Paramètres de message sticker

    • Name
      type
      Type
      string
      Description

      Définissez sticker.

    • Name
      url
      Type
      string
      Description

      URL publique du fichier sticker (WebP). Stickers statiques : 512x512px, max 100Ko. Stickers animés : 512x512px, max 500Ko.

    Paramètres de message localisation

    • Name
      type
      Type
      string
      Description

      Définissez location.

    • Name
      latitude
      Type
      number
      Description

      Latitude de la localisation.

    • Name
      longitude
      Type
      number
      Description

      Longitude de la localisation.

    • Name
      name
      Type
      string
      Optional
      Optional
      Description

      Nom de la localisation.

    • Name
      address
      Type
      string
      Optional
      Optional
      Description

      Adresse de la localisation.

    Paramètres de message contacts

    • Name
      type
      Type
      string
      Description

      Définissez contacts.

    • Name
      contacts
      Type
      array
      Description

      Tableau d'objets contact. Chaque contact doit avoir un objet name (avec first_name et last_name optionnel) et un tableau phones (chacun avec phone et type optionnel : cell, main, iphone, home, work).

    Paramètres de message interactif boutons

    • Name
      type
      Type
      string
      Description

      Définissez interactive.

    • Name
      interactive_type
      Type
      string
      Description

      Définissez button.

    • Name
      body
      Type
      string
      Description

      Texte du corps affiché à l'utilisateur.

    • Name
      buttons
      Type
      array
      Description

      Tableau de 2-3 objets bouton, chacun avec id (identifiant unique) et title (texte d'affichage, max 20 caractères).

    • Name
      header
      Type
      string
      Optional
      Optional
      Description

      Texte d'en-tête optionnel.

    • Name
      footer
      Type
      string
      Optional
      Optional
      Description

      Texte de pied de page optionnel.

    Paramètres de message interactif liste

    • Name
      type
      Type
      string
      Description

      Définissez interactive.

    • Name
      interactive_type
      Type
      string
      Description

      Définissez list.

    • Name
      body
      Type
      string
      Description

      Texte du corps affiché à l'utilisateur.

    • Name
      button_text
      Type
      string
      Description

      Texte affiché sur le bouton de liste.

    • Name
      sections
      Type
      array
      Description

      Tableau d'objets section, chacun avec title et rows (tableau d'objets ligne avec id, title et description optionnelle).

    • Name
      header
      Type
      string
      Optional
      Optional
      Description

      Texte d'en-tête optionnel.

    • Name
      footer
      Type
      string
      Optional
      Optional
      Description

      Texte de pied de page optionnel.

    Paramètres optionnels

    • Name
      delay
      Type
      timestamp
      Optional
      Optional
      Description

      Date/heure pour l'envoi programmé. Format : AAAA-MM-JJ hh:mm:ss ou horodatage Unix.

    • Name
      ttl
      Type
      integer
      Optional
      Optional
      Description

      Spécifie la durée de validité du message en minutes. La valeur par défaut est 2880, soit 48 heures.

    • Name
      label
      Type
      string
      Optional
      Optional
      Description

      Libellé personnalisé pour les statistiques. Max. 100 caractères, caractères autorisés : a-z, A-Z, 0-9, .-_@.

    • Name
      performance_tracking
      Type
      boolean
      Optional
      Optional
      Description

      Activer le suivi des clics et des performances pour les URL trouvées dans le texte du message. Cela active également le raccourcisseur d'URL.

    • Name
      foreign_id
      Type
      string
      Optional
      Optional
      Description

      Votre propre ID pour ce message. Retourné dans les callbacks de rapports de statut. Max. 64 caractères, caractères autorisés : a-z, A-Z, 0-9, .-_@.

    Message modèle

    POST
    /api/waba/messages
    curl -X POST https://gateway.seven.io/api/waba/messages \
        -H "X-Api-Key: VOTRE_CLE_API" \
        -H "Content-Type: application/json" \
        -d '{
          "from": "4915112345678",
          "to": "4917612345678",
          "type": "template",
          "template": "hello_world",
          "language": "de"
        }'
    

    Réponse

    {
        "success": "100",
        "total_price": 0.0735,
        "balance": 123.45,
        "debug": "false",
        "sms_type": "WA",
        "messages": [
            {
                "id": "12345678",
                "sender": "4915112345678",
                "recipient": "4917612345678",
                "text": "{\"type\":\"template\",\"template\":\"hello_world\",\"language\":\"de\",\"rendered\":{\"body\":\"Hallo Welt!\"}}",
                "encoding": "gsm",
                "label": null,
                "parts": 1,
                "udh": null,
                "is_binary": false,
                "price": 0.0735,
                "channel": "WA",
                "success": true,
                "error": null,
                "error_text": null
            }
        ]
    }
    

    Modèle avec paramètres

    POST
    /api/waba/messages
    curl -X POST https://gateway.seven.io/api/waba/messages \
        -H "X-Api-Key: VOTRE_CLE_API" \
        -H "Content-Type: application/json" \
        -d '{
          "from": "4915112345678",
          "to": "4917612345678",
          "type": "template",
          "template": "order_confirmation",
          "language": "de",
          "components": {
            "body": ["Max Mustermann", "ORD-12345"],
            "buttons": [
              {
                "type": "button",
                "sub_type": "url",
                "parameters": [{"type": "text", "text": "ORD-12345"}]
              }
            ]
          }
        }'
    

    Message libre

    POST
    /api/waba/messages
    curl -X POST https://gateway.seven.io/api/waba/messages \
        -H "X-Api-Key: VOTRE_CLE_API" \
        -H "Content-Type: application/json" \
        -d '{
          "from": "4915112345678",
          "to": "4917612345678",
          "text": "Merci pour votre message, nous nous en occupons !"
        }'
    

    Message image

    POST
    /api/waba/messages
    curl -X POST https://gateway.seven.io/api/waba/messages \
        -H "X-Api-Key: VOTRE_CLE_API" \
        -H "Content-Type: application/json" \
        -d '{
          "from": "4915112345678",
          "to": "4917612345678",
          "type": "image",
          "url": "https://example.com/photo.jpg",
          "caption": "Regardez cette image !"
        }'
    

    Message vidéo

    POST
    /api/waba/messages
    curl -X POST https://gateway.seven.io/api/waba/messages \
        -H "X-Api-Key: VOTRE_CLE_API" \
        -H "Content-Type: application/json" \
        -d '{
          "from": "4915112345678",
          "to": "4917612345678",
          "type": "video",
          "url": "https://example.com/video.mp4",
          "caption": "Regardez cette vidéo"
        }'
    

    Message audio

    POST
    /api/waba/messages
    curl -X POST https://gateway.seven.io/api/waba/messages \
        -H "X-Api-Key: VOTRE_CLE_API" \
        -H "Content-Type: application/json" \
        -d '{
          "from": "4915112345678",
          "to": "4917612345678",
          "type": "audio",
          "url": "https://example.com/audio.mp3"
        }'
    

    Message document

    POST
    /api/waba/messages
    curl -X POST https://gateway.seven.io/api/waba/messages \
        -H "X-Api-Key: VOTRE_CLE_API" \
        -H "Content-Type: application/json" \
        -d '{
          "from": "4915112345678",
          "to": "4917612345678",
          "type": "document",
          "url": "https://example.com/facture.pdf",
          "filename": "facture.pdf",
          "caption": "Votre facture"
        }'
    

    Message sticker

    POST
    /api/waba/messages
    curl -X POST https://gateway.seven.io/api/waba/messages \
        -H "X-Api-Key: VOTRE_CLE_API" \
        -H "Content-Type: application/json" \
        -d '{
          "from": "4915112345678",
          "to": "4917612345678",
          "type": "sticker",
          "url": "https://example.com/sticker.webp"
        }'
    

    Message localisation

    POST
    /api/waba/messages
    curl -X POST https://gateway.seven.io/api/waba/messages \
        -H "X-Api-Key: VOTRE_CLE_API" \
        -H "Content-Type: application/json" \
        -d '{
          "from": "4915112345678",
          "to": "4917612345678",
          "type": "location",
          "latitude": 48.8566,
          "longitude": 2.3522,
          "name": "Tour Eiffel",
          "address": "5 Avenue Anatole France, 75007 Paris"
        }'
    

    Message contacts

    POST
    /api/waba/messages
    curl -X POST https://gateway.seven.io/api/waba/messages \
        -H "X-Api-Key: VOTRE_CLE_API" \
        -H "Content-Type: application/json" \
        -d '{
          "from": "4915112345678",
          "to": "4917612345678",
          "type": "contacts",
          "contacts": [
            {
              "name": {
                "first_name": "Jean",
                "last_name": "Dupont"
              },
              "phones": [
                {
                  "phone": "+33123456789"
                }
              ]
            }
          ]
        }'
    

    Message interactif boutons

    POST
    /api/waba/messages
    curl -X POST https://gateway.seven.io/api/waba/messages \
        -H "X-Api-Key: VOTRE_CLE_API" \
        -H "Content-Type: application/json" \
        -d '{
          "from": "4915112345678",
          "to": "4917612345678",
          "type": "interactive",
          "interactive_type": "button",
          "header": "Support",
          "body": "Comment pouvons-nous vous aider ?",
          "footer": "Appuyez sur un bouton",
          "buttons": [
            {"id": "btn_sales", "title": "Ventes"},
            {"id": "btn_support", "title": "Support"},
            {"id": "btn_other", "title": "Autre"}
          ]
        }'
    

    Message interactif liste

    POST
    /api/waba/messages
    curl -X POST https://gateway.seven.io/api/waba/messages \
        -H "X-Api-Key: VOTRE_CLE_API" \
        -H "Content-Type: application/json" \
        -d '{
          "from": "4915112345678",
          "to": "4917612345678",
          "type": "interactive",
          "interactive_type": "list",
          "header": "Nos Produits",
          "body": "Parcourez nos catégories :",
          "footer": "Sélectionnez une option",
          "button_text": "Voir les options",
          "sections": [
            {
              "title": "Électronique",
              "rows": [
                {"id": "smartphones", "title": "Smartphones", "description": "Derniers modèles"},
                {"id": "ordinateurs", "title": "Ordinateurs", "description": "Business & Gaming"}
              ]
            }
          ]
        }'
    

    Composants de modèle

    La structure components prend en charge trois tableaux optionnels : header, body et buttons. Les valeurs sont positionnelles et remplacent {{1}}, {{2}}, etc. dans le modèle.

    Paramètres d'en-tête

    • En-tête texte : Fournissez des valeurs de chaîne pour les espaces réservés
    • En-tête image : Fournissez une URL vers l'image

    Paramètres du corps

    Fournissez des valeurs de chaîne qui remplacent {{1}}, {{2}}, etc. dans le corps du modèle.

    Paramètres de bouton

    Pour les boutons URL avec des suffixes dynamiques, fournissez un tableau d'objets bouton :

    • Name
      type
      Type
      string
      Description

      Toujours button.

    • Name
      sub_type
      Type
      string
      Description

      Le type de bouton, ex. url.

    • Name
      parameters
      Type
      array
      Description

      Tableau d'objets paramètres avec les propriétés type et text.

    En-tête + Corps + Boutons

    {
        "from": "4915112345678",
        "to": "4917612345678",
        "type": "template",
        "template": "appointment_reminder",
        "language": "fr",
        "components": {
            "header": ["Confirmation de rendez-vous"],
            "body": ["Max Mustermann", "15/02/2026", "14h00", "Dr. Schmidt"],
            "buttons": [
                {
                    "type": "button",
                    "sub_type": "url",
                    "parameters": [{"type": "text", "text": "abc123"}]
                }
            ]
        }
    }
    

    En-tête image + Corps

    {
        "from": "4915112345678",
        "to": "4917612345678",
        "type": "template",
        "template": "product_available",
        "language": "fr",
        "components": {
            "header": ["https://example.com/product.jpg"],
            "body": ["Premium Widget"]
        }
    }
    

    DELETE/api/waba/messages/{id}

    Supprimer un message

    Supprimez un message WhatsApp programmé avant son envoi.

    • Name
      id
      Type
      string
      Description

      L'ID du message à supprimer. Transmis en paramètre de chemin URL.

    Requête

    DELETE
    /api/waba/messages/{id}
    curl -X DELETE https://gateway.seven.io/api/waba/messages/12345678 \
        -H "X-Api-Key: VOTRE_CLE_API"
    

    Réponse (succès)

    {
        "success": true
    }
    

    Réponse (déjà envoyé)

    {
        "error_code": 400,
        "error_message": "Message already sent. WhatsApp does not support message revocation."
    }
    

    Réponse (non trouvé)

    {
        "code": 404,
        "message": "Page not found",
        "errors": []
    }
    

    POST/api/waba/events

    Envoyer un événement

    Envoyez des événements de conversation tels que des accusés de lecture, des indicateurs de saisie ou des réactions à un contact WhatsApp.

    Paramètres d'événement lecture/saisie

    • Name
      from
      Type
      string
      Description

      Votre numéro d'expéditeur WhatsApp Business enregistré.

    • Name
      to
      Type
      string
      Optional
      Optional
      Description

      Numéro de téléphone du destinataire au format international. Au moins to ou msg_id doit être fourni.

    • Name
      event
      Type
      string
      Description

      Le type d'événement. Valeurs disponibles : read, is_typing.

    • Name
      msg_id
      Type
      string
      Optional
      Optional
      Description

      ID de message explicite à marquer comme lu. Au moins to ou msg_id doit être fourni.

    Paramètres d'événement réaction

    • Name
      event
      Type
      string
      Description

      Définissez reaction.

    • Name
      msg_id
      Type
      string
      Description

      L'ID du message WhatsApp auquel réagir.

    • Name
      emoji
      Type
      string
      Description

      L'emoji à utiliser comme réaction (ex. 👍). Envoyez une chaîne vide pour supprimer la réaction.

    Accusé de lecture

    POST
    /api/waba/events
    curl -X POST https://gateway.seven.io/api/waba/events \
        -H "X-Api-Key: VOTRE_CLE_API" \
        -H "Content-Type: application/json" \
        -d '{
          "from": "4915112345678",
          "to": "4917612345678",
          "event": "read"
        }'
    

    Indicateur de saisie

    POST
    /api/waba/events
    curl -X POST https://gateway.seven.io/api/waba/events \
        -H "X-Api-Key: VOTRE_CLE_API" \
        -H "Content-Type: application/json" \
        -d '{
          "from": "4915112345678",
          "to": "4917612345678",
          "event": "is_typing"
        }'
    

    Réaction

    POST
    /api/waba/events
    curl -X POST https://gateway.seven.io/api/waba/events \
        -H "X-Api-Key: VOTRE_CLE_API" \
        -H "Content-Type: application/json" \
        -d '{
          "event": "reaction",
          "msg_id": "123456789",
          "emoji": "👍"
        }'
    

    Réponse

    {
        "success": true
    }
    

    Réponse d'erreur

    {
        "success": false,
        "error_code": 400,
        "error_message": "Invalid WhatsApp sender number"
    }
    

    Réponses d'erreur

    • Name
      100
      Description

      Le message a été accepté par la passerelle et est en cours d'envoi.

    • Name
      7002001
      Description

      Pas de conversation active. Les messages libres ne peuvent être envoyés que dans une fenêtre de conversation active de 24 heures. Utilisez un message modèle pour initier une conversation.

    • Name
      400
      Description

      Requête invalide. Peut indiquer un numéro d'expéditeur invalide, un numéro de destinataire invalide ou d'autres erreurs de validation.

    • Name
      404
      Description

      Message non trouvé. L'ID de message spécifié n'existe pas ou n'appartient pas à votre compte.

    • Name
      900
      Description

      L'authentification a échoué. Veuillez vérifier la clé API utilisée dans Authentification.

    • Name
      902
      Description

      La clé API n'a pas les droits d'accès à ce point de terminaison. Assurez-vous que le scope waba est activé.

    Dernière mise à jour: Il y a 2 minutes