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

# Obtener estado de sesión de WhatsApp

> Comprueba el estado de la ventana de mensajería de 24 horas de WhatsApp para una conversación de Famulor

<Warning>
  **API de Famulor 1.0 (legado).** Esta página se aplica únicamente a Famulor 1.0 (`app.famulor.de`) y se conserva por compatibilidad. Para la plataforma actual, usa la [referencia de la API de Famulor 2.0](/es/api-reference/introduction).
</Warning>

Comprueba si existe una ventana de mensajería de 24 horas de WhatsApp activa entre tu remitente de WhatsApp de Famulor y un destinatario específico. Usa este endpoint para determinar si puedes enviar [mensajes de texto libre](/es/api-v1/whatsapp/send-freeform) o si necesitas usar un [mensaje de plantilla](/es/api-v1/whatsapp/send-template).

### Parámetros de consulta

<ParamField query="sender_id" type="integer" required>
  El ID del remitente de WhatsApp (obtenido del endpoint [Obtener remitentes](/es/api-v1/whatsapp/get-senders))
</ParamField>

<ParamField query="recipient_phone" type="string" required>
  El número de teléfono del destinatario en formato internacional (p. ej., `+1234567890`)
</ParamField>

### Campos de la respuesta

<ResponseField name="success" type="boolean">
  Indica si la solicitud se completó correctamente
</ResponseField>

<ResponseField name="has_conversation" type="boolean">
  Indica si existe una conversación con este destinatario
</ResponseField>

<ResponseField name="conversation_id" type="integer">
  El ID de la conversación (solo presente cuando `has_conversation` es `true`)
</ResponseField>

<ResponseField name="customer_name" type="string">
  El nombre del cliente si está disponible (solo presente cuando `has_conversation` es `true`)
</ResponseField>

<ResponseField name="last_customer_message_at" type="string">
  Marca de tiempo ISO 8601 del último mensaje del cliente (solo presente cuando `has_conversation` es `true`)
</ResponseField>

<ResponseField name="session_status" type="object">
  <Expandable title="Propiedades de session_status">
    <ResponseField name="is_open" type="boolean">
      Indica si la ventana de mensajería de 24 horas está abierta actualmente
    </ResponseField>

    <ResponseField name="can_send_freeform" type="boolean">
      Indica si se pueden enviar mensajes de texto libre (sin plantilla) en este momento
    </ResponseField>

    <ResponseField name="requires_template" type="boolean">
      Indica si se requiere un mensaje de plantilla para enviar mensajes a este destinatario
    </ResponseField>

    <ResponseField name="message" type="string">
      Descripción legible para humanos del estado actual de la sesión
    </ResponseField>

    <ResponseField name="minutes_remaining" type="integer">
      Minutos restantes de la ventana de 24 horas (solo presente cuando la sesión está abierta)
    </ResponseField>

    <ResponseField name="expires_at" type="string">
      Marca de tiempo ISO 8601 de cuándo expira la sesión (presente cuando la sesión está abierta o no existe ningún mensaje del cliente)
    </ResponseField>

    <ResponseField name="expired_at" type="string">
      Marca de tiempo ISO 8601 de cuándo expiró la sesión (solo presente cuando la sesión ha expirado)
    </ResponseField>
  </Expandable>
</ResponseField>

### Respuestas de error

<ResponseField name="404 Not Found">
  <Expandable title="Respuesta de error">
    <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>

### Flujo de trabajo típico

Usa este endpoint como parte de un flujo de envío de mensajes de WhatsApp:

1. **Comprueba el estado de la sesión** antes de enviar un mensaje.
2. Si `can_send_freeform` es `true` → usa [Enviar mensaje de texto libre](/es/api-v1/whatsapp/send-freeform).
3. Si `requires_template` es `true` → usa [Enviar mensaje de plantilla](/es/api-v1/whatsapp/send-template).

### Notas

* La ventana de 24 horas se basa en la marca de tiempo del último mensaje entrante del cliente.
* Cada nuevo mensaje del cliente reinicia el temporizador de 24 horas.
* Este endpoint es de solo lectura y no consume saldo de Famulor.
