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

# Récupérer le statut de session WhatsApp

> Vérifie le statut de la fenêtre de messagerie WhatsApp de 24 heures pour une conversation Famulor

<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>

Vérifie si une fenêtre de messagerie WhatsApp de 24 heures active existe entre votre expéditeur WhatsApp Famulor et un destinataire spécifique. Utilisez ce point de terminaison pour déterminer si vous pouvez envoyer des [messages libres](/fr/api-v1/whatsapp/send-freeform) ou si vous devez utiliser un [message modèle](/fr/api-v1/whatsapp/send-template).

### Paramètres de requête

<ParamField query="sender_id" 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>

<ParamField query="recipient_phone" type="string" required>
  Le numéro de téléphone du destinataire au format international (par ex. `+1234567890`)
</ParamField>

### Champs de réponse

<ResponseField name="success" type="boolean">
  Indique si la requête a réussi
</ResponseField>

<ResponseField name="has_conversation" type="boolean">
  Indique si une conversation existe avec ce destinataire
</ResponseField>

<ResponseField name="conversation_id" type="integer">
  L'ID de la conversation (présent uniquement lorsque `has_conversation` vaut `true`)
</ResponseField>

<ResponseField name="customer_name" type="string">
  Le nom du client, si disponible (présent uniquement lorsque `has_conversation` vaut `true`)
</ResponseField>

<ResponseField name="last_customer_message_at" type="string">
  Horodatage ISO 8601 du dernier message du client (présent uniquement lorsque `has_conversation` vaut `true`)
</ResponseField>

<ResponseField name="session_status" type="object">
  <Expandable title="Propriétés du statut de session">
    <ResponseField name="is_open" type="boolean">
      Indique si la fenêtre de messagerie de 24 heures est actuellement ouverte
    </ResponseField>

    <ResponseField name="can_send_freeform" type="boolean">
      Indique si des messages libres (hors modèle) peuvent être envoyés dès maintenant
    </ResponseField>

    <ResponseField name="requires_template" type="boolean">
      Indique si un message modèle est requis pour contacter ce destinataire
    </ResponseField>

    <ResponseField name="message" type="string">
      Description lisible de l'état actuel de la session
    </ResponseField>

    <ResponseField name="minutes_remaining" type="integer">
      Minutes restantes dans la fenêtre de 24 heures (présent uniquement lorsque la session est ouverte)
    </ResponseField>

    <ResponseField name="expires_at" type="string">
      Horodatage ISO 8601 de l'expiration de la session (présent lorsque la session est ouverte ou qu'aucun message client n'existe)
    </ResponseField>

    <ResponseField name="expired_at" type="string">
      Horodatage ISO 8601 de l'expiration de la session (présent uniquement lorsque la session a expiré)
    </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/session-status?sender_id=12&recipient_phone=+1234567890" \
    -H "Authorization: Bearer YOUR_API_KEY"
  ```

  ```javascript JavaScript theme={null} theme={null}
  const params = new URLSearchParams({
    sender_id: '12',
    recipient_phone: '+1234567890'
  });

  const response = await fetch(
    `https://app.famulor.de/api/user/whatsapp/session-status?${params}`,
    {
      headers: {
        'Authorization': 'Bearer YOUR_API_KEY'
      }
    }
  );

  const data = await response.json();

  if (data.session_status.can_send_freeform) {
    console.log('Session is active — freeform messages allowed');
  } else {
    console.log('Session expired — use a template message');
  }
  ```

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

  response = requests.get(
      'https://app.famulor.de/api/user/whatsapp/session-status',
      headers={'Authorization': 'Bearer YOUR_API_KEY'},
      params={
          'sender_id': 12,
          'recipient_phone': '+1234567890'
      }
  )

  data = response.json()
  session = data['session_status']

  if session['can_send_freeform']:
      print('Session is active — freeform messages allowed')
  else:
      print('Session expired — use a template message')
  ```
</RequestExample>

<ResponseExample>
  ```json 200 Active Session theme={null} theme={null}
  {
    "success": true,
    "has_conversation": true,
    "conversation_id": 1234,
    "customer_name": "John Doe",
    "last_customer_message_at": "2026-02-24T10:30:00+00:00",
    "session_status": {
      "is_open": true,
      "can_send_freeform": true,
      "requires_template": false,
      "message": "Session open (23 hr 45 min remaining). Unlimited free-form messages allowed.",
      "minutes_remaining": 1425,
      "expires_at": "2026-02-25T10:30:00+00:00"
    }
  }
  ```

  ```json 200 Expired Session theme={null} theme={null}
  {
    "success": true,
    "has_conversation": true,
    "conversation_id": 1234,
    "customer_name": "John Doe",
    "last_customer_message_at": "2026-02-22T14:00:00+00:00",
    "session_status": {
      "is_open": false,
      "can_send_freeform": false,
      "requires_template": true,
      "message": "Session expired. Send a template or wait for customer to reply.",
      "expired_at": "2026-02-23T14:00:00+00:00"
    }
  }
  ```

  ```json 200 No Conversation theme={null} theme={null}
  {
    "success": true,
    "has_conversation": false,
    "session_status": {
      "is_open": false,
      "can_send_freeform": false,
      "requires_template": true,
      "message": "No conversation exists with this recipient. Send a template message first."
    }
  }
  ```

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

### Flux de travail type

Utilisez ce point de terminaison dans le cadre d'un flux d'envoi de messages WhatsApp :

1. **Vérifiez le statut de session** avant d'envoyer un message.
2. Si `can_send_freeform` vaut `true` → utilisez [Envoyer un message libre](/fr/api-v1/whatsapp/send-freeform).
3. Si `requires_template` vaut `true` → utilisez [Envoyer un modèle de message](/fr/api-v1/whatsapp/send-template).

### Remarques

* La fenêtre de 24 heures est basée sur l'horodatage du dernier message entrant du client.
* Chaque nouveau message du client réinitialise le minuteur de 24 heures.
* Ce point de terminaison est en lecture seule et ne consomme aucun solde Famulor.
