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

# Récupérer les modèles WhatsApp

> Liste les modèles de message WhatsApp d'un expéditeur Famulor spécifique

<Warning>
  **API Famulor 1.0 (héritée).** Cette page concerne uniquement Famulor 1.0 (`app.famulor.de`) et est conservée pour la compatibilité. Pour la plateforme actuelle, consultez la [référence API Famulor 2.0](/fr/api-reference/introduction).
</Warning>

Récupère tous les modèles de message WhatsApp Business associés à un expéditeur WhatsApp Famulor spécifique. Les modèles sont nécessaires pour initier des conversations ou envoyer des messages à des utilisateurs en dehors de la fenêtre de messagerie de 24 heures.

### Paramètres de chemin

<ParamField path="senderId" type="integer" required>
  L'ID de l'expéditeur WhatsApp (obtenu via le point de terminaison [Récupérer les expéditeurs](/fr/api-v1/whatsapp/get-senders))
</ParamField>

### Paramètres de requête

<ParamField query="status" type="string" optional>
  Filtre les modèles par statut d'approbation. Par défaut : `approved`. Utilisez `all` pour renvoyer tous les modèles quel que soit leur statut.
</ParamField>

### Champs de réponse

<ResponseField name="data" type="array">
  <Expandable title="Propriétés de l'objet modèle">
    <ResponseField name="id" type="integer">
      L'identifiant unique du modèle. Utilisez-le lors de l'envoi de messages modèles.
    </ResponseField>

    <ResponseField name="name" type="string">
      Le nom du modèle tel qu'enregistré auprès de Meta (par ex. `order_confirmation`, `appointment_reminder`)
    </ResponseField>

    <ResponseField name="language" type="string">
      Le code de langue du modèle (par ex. `en`, `es`, `pt_BR`)
    </ResponseField>

    <ResponseField name="category" type="string">
      La catégorie du modèle : `marketing`, `utility` ou `authentication`
    </ResponseField>

    <ResponseField name="status" type="string">
      Le statut d'approbation : `approved`, `pending` ou `rejected`
    </ResponseField>

    <ResponseField name="body_text" type="string">
      Le texte du corps du modèle, avec les emplacements de variables affichés sous la forme `{{1}}`, `{{2}}`, etc.
    </ResponseField>

    <ResponseField name="variables" type="array">
      Liste des noms de variables définis pour le modèle. Tableau vide si le modèle n'a pas de variables.
    </ResponseField>

    <ResponseField name="has_variables" type="boolean">
      Indique si ce modèle nécessite des variables lors de l'envoi
    </ResponseField>
  </Expandable>
</ResponseField>

### Réponses d'erreur

<ResponseField name="404 Not Found">
  <Expandable title="Réponse d'erreur">
    <ResponseField name="success" type="boolean">
      `false`
    </ResponseField>

    <ResponseField name="error" type="string">
      `Sender not found`
    </ResponseField>

    <ResponseField name="error_code" type="string">
      `SENDER_NOT_FOUND`
    </ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash cURL theme={null} theme={null}
  curl -X GET "https://app.famulor.de/api/user/whatsapp/senders/12/templates" \
    -H "Authorization: Bearer YOUR_API_KEY"
  ```

  ```bash All templates (including pending/rejected) theme={null} theme={null}
  curl -X GET "https://app.famulor.de/api/user/whatsapp/senders/12/templates?status=all" \
    -H "Authorization: Bearer YOUR_API_KEY"
  ```

  ```javascript JavaScript theme={null} theme={null}
  const senderId = 12;

  const response = await fetch(
    `https://app.famulor.de/api/user/whatsapp/senders/${senderId}/templates`,
    {
      headers: {
        'Authorization': 'Bearer YOUR_API_KEY'
      }
    }
  );

  const data = await response.json();
  console.log(data.data); // Array of templates
  ```

  ```python Python theme={null} theme={null}
  import requests

  sender_id = 12

  response = requests.get(
      f'https://app.famulor.de/api/user/whatsapp/senders/{sender_id}/templates',
      headers={'Authorization': 'Bearer YOUR_API_KEY'}
  )

  templates = response.json()['data']
  for template in templates:
      print(f"{template['name']} ({template['language']}): {template['body_text']}")
  ```
</RequestExample>

<ResponseExample>
  ```json 200 Response theme={null} theme={null}
  {
    "data": [
      {
        "id": 45,
        "name": "appointment_reminder",
        "language": "en",
        "category": "utility",
        "status": "approved",
        "body_text": "Hi {{1}}, this is a reminder for your appointment on {{2}} at {{3}}. Reply YES to confirm or NO to reschedule.",
        "variables": ["customer_name", "date", "time"],
        "has_variables": true
      },
      {
        "id": 46,
        "name": "welcome_message",
        "language": "en",
        "category": "marketing",
        "status": "approved",
        "body_text": "Welcome to Acme Corp! We're excited to have you. How can we help you today?",
        "variables": [],
        "has_variables": false
      }
    ]
  }
  ```

  ```json 404 Sender Not Found theme={null} theme={null}
  {
    "success": false,
    "error": "Sender not found",
    "error_code": "SENDER_NOT_FOUND"
  }
  ```
</ResponseExample>

### Remarques

* Seuls les modèles `approved` sont renvoyés par défaut. Les modèles au statut `pending` ou `rejected` ne peuvent pas être utilisés pour envoyer des messages.
* Le statut d'approbation des modèles est synchronisé automatiquement avec Meta toutes les 4 heures.
* Les variables dans `body_text` sont affichées sous la forme `{{1}}`, `{{2}}`, etc. Le tableau `variables` fournit des noms lisibles pour chaque emplacement.
* Les modèles sont nécessaires pour contacter un utilisateur pour la première fois ou en dehors de la fenêtre de messagerie de 24 heures.
