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

# Cerrar Conversación

> Cierra una conversación activa

## Parámetros

<ParamField path="id" type="string" required>
  UUID de la conversación
</ParamField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST "https://api.whaapy.com/conversations/v1/uuid/close" \
    -H "Authorization: Bearer wha_xxxxx"
  ```

  ```javascript Node.js theme={null}
  const conversationId = 'uuid';
  await fetch(
    `https://api.whaapy.com/conversations/v1/${conversationId}/close`,
    {
      method: 'POST',
      headers: { 'Authorization': 'Bearer wha_xxxxx' }
    }
  );
  ```

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

  conversation_id = 'uuid'
  response = requests.post(
      f'https://api.whaapy.com/conversations/v1/{conversation_id}/close',
      headers={'Authorization': 'Bearer wha_xxxxx'}
  )
  data = response.json()
  ```

  ```php PHP theme={null}
  $conversationId = 'uuid';
  $curl = curl_init();

  curl_setopt_array($curl, [
    CURLOPT_URL => "https://api.whaapy.com/conversations/v1/{$conversationId}/close",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => [
      "Authorization: Bearer wha_xxxxx"
    ],
  ]);

  $response = curl_exec($curl);
  $data = json_decode($response, true);
  ```
</RequestExample>

<ResponseExample>
  ```json 200 OK theme={null}
  {
    "message": "Conversación cerrada exitosamente",
    "advisorsToAnalyze": 1
  }
  ```
</ResponseExample>

## Efectos

Cerrar una conversación tiene los siguientes efectos:

1. **Cambia el estado** a `closed`
2. **Dispara webhook** `conversation.closed` (si tienes webhooks configurados)
3. **Analiza performance** de los agentes humanos que participaron
4. **La conversación puede reabrirse** si el contacto envía un nuevo mensaje

<Info>
  El campo `advisorsToAnalyze` indica cuántos agentes humanos participaron y serán analizados para métricas de performance.
</Info>

## Errores

<ResponseExample>
  ```json 404 Not Found theme={null}
  {
    "error": "Not found",
    "message": "Conversación no encontrada"
  }
  ```
</ResponseExample>

## Casos de uso

<AccordionGroup>
  <Accordion title="Cerrar después de resolver ticket">
    Cuando un ticket se resuelve en tu sistema de soporte, cierra la conversación:

    ```javascript theme={null}
    // Webhook de Zendesk/Freshdesk
    async function onTicketResolved(ticketData) {
      const phone = ticketData.customer.phone;
      
      // Buscar conversación por teléfono
      const conversation = await fetch(
        `https://api.whaapy.com/conversations/v1/by-phone/${encodeURIComponent(phone)}`,
        { headers: { 'Authorization': 'Bearer wha_xxxxx' } }
      ).then(r => r.json());
      
      if (conversation.data) {
        // Cerrar conversación
        await fetch(
          `https://api.whaapy.com/conversations/v1/${conversation.data.id}/close`,
          {
            method: 'POST',
            headers: { 'Authorization': 'Bearer wha_xxxxx' }
          }
        );
      }
    }
    ```
  </Accordion>

  <Accordion title="Cerrar conversaciones inactivas">
    Cierra automáticamente conversaciones sin actividad:

    ```javascript theme={null}
    // Cron job diario
    async function closeInactiveConversations() {
      // Obtener conversaciones inactivas por 7 días
      const inactive = await fetch(
        'https://api.whaapy.com/conversations/v1?filters=' + 
        encodeURIComponent(JSON.stringify({ inactiveDays: 7 })),
        { headers: { 'Authorization': 'Bearer wha_xxxxx' } }
      ).then(r => r.json());
      
      for (const conv of inactive.data) {
        await fetch(
          `https://api.whaapy.com/conversations/v1/${conv.id}/close`,
          {
            method: 'POST',
            headers: { 'Authorization': 'Bearer wha_xxxxx' }
          }
        );
      }
    }
    ```
  </Accordion>
</AccordionGroup>
