> ## Documentation Index
> Fetch the complete documentation index at: https://docs.waaconnect.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Boutons interactifs

> Ajoutez des réponses rapides, des liens et des boutons d'appel à vos messages WhatsApp

<Warning>
  Cette fonctionnalité s'appuie sur une extension du protocole WhatsApp qui
  n'est garantie par aucune documentation officielle. Son rendu peut varier
  selon l'appareil ou la version de l'application du destinataire. En cas
  d'instabilité détectée, le service peut désactiver les boutons
  automatiquement — vous ne perdez jamais le message : il repart simplement en
  texte simple, sans bouton ni pied de page.
</Warning>

**Types de boutons**

| `type`  | Champs supplémentaires           | Description         |
| ------- | -------------------------------- | ------------------- |
| `reply` | `id` (optionnel, généré si omis) | Réponse rapide      |
| `url`   | `url`                            | Ouvre un lien       |
| `call`  | `phoneNumber` (6 à 15 chiffres)  | Propose d'appeler   |
| `copy`  | `copyCode`                       | Copie un code/texte |

Le texte de chaque bouton (`text`) doit faire entre 1 et 20 caractères. 1 à 3 boutons par message, `footer` 60 caractères max.

Un même message peut combiner jusqu'à 3 boutons de types différents (voir l'exemple "Combiné (max 3)" dans le panneau de droite) — au-delà de 3, la requête est rejetée.

<Note>
  Les listes de sélection (`sections`) ne sont pas encore supportées : si
  elles sont fournies, le message est envoyé en texte brut sans liste.
</Note>


## OpenAPI

````yaml api-reference/openapi.json POST /sessions/{sessionId}/send-interactive
openapi: 3.1.0
info:
  title: WaaConnect API
  description: >-
    API WhatsApp multi-sessions de WaaConnect. Toutes les routes de messagerie
    sont préfixées par /sessions/:sessionId/ et nécessitent le header x-api-key.
  version: 1.0.0
servers:
  - url: https://api.waaconnect.com/v1
security:
  - apiKey: []
paths:
  /sessions/{sessionId}/send-interactive:
    post:
      tags:
        - Messages
      summary: Envoyer un message avec boutons
      description: >-
        S'appuie sur une extension du protocole WhatsApp non garantie par une
        documentation officielle. Peut être désactivée automatiquement en cas
        d'instabilité détectée (repli en texte simple).
      parameters:
        - name: sessionId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - chatId
                - body
                - buttons
              properties:
                chatId:
                  type: string
                  example: '22997000000'
                body:
                  type: string
                  description: Texte principal du message
                footer:
                  type: string
                  description: 60 caractères max
                buttons:
                  type: array
                  minItems: 1
                  maxItems: 3
                  items:
                    type: object
                    properties:
                      id:
                        type: string
                        description: reply uniquement, généré si omis
                      type:
                        type: string
                        enum:
                          - reply
                          - url
                          - call
                          - copy
                      text:
                        type: string
                        description: 1 à 20 caractères
                      url:
                        type: string
                        description: requis si type=url
                      phoneNumber:
                        type: string
                        description: requis si type=call, 6 à 15 chiffres
                      copyCode:
                        type: string
                        description: requis si type=copy
            examples:
              reply:
                value:
                  chatId: '22997000000'
                  body: Souhaitez-vous confirmer votre inscription ?
                  buttons:
                    - id: confirm
                      type: reply
                      text: Je confirme
              url:
                value:
                  chatId: '22997000000'
                  body: Découvrez notre nouvelle offre
                  buttons:
                    - type: url
                      text: Voir détails
                      url: https://waaconnect.com/offre
              call:
                value:
                  chatId: '22997000000'
                  body: Une question ? Contactez-nous
                  buttons:
                    - type: call
                      text: Nous appeler
                      phoneNumber: '+22990000000'
              copy:
                value:
                  chatId: '22997000000'
                  body: Voici votre code promo
                  buttons:
                    - type: copy
                      text: Copier le code
                      copyCode: PROMO2026
              Combiné (max 3):
                value:
                  chatId: '22997000000'
                  body: Souhaitez-vous confirmer votre inscription ?
                  footer: Validité 24h
                  buttons:
                    - id: confirm
                      type: reply
                      text: Je confirme
                    - type: url
                      text: Voir détails
                      url: https://waaconnect.com/offre
                    - type: call
                      text: Nous appeler
                      phoneNumber: '+22990000000'
      responses:
        '200':
          description: Message envoyé
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                  id:
                    type: string
        '400':
          description: >-
            Contraintes non respectées (plus de 3 boutons, texte trop long,
            champ requis manquant, etc.)
components:
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key

````