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

# Listar envíos masivos

> Listar todos los envíos masivos con filtros y paginación

## Descripción

Devuelve una lista paginada de todos los envíos masivos realizados. Soporta filtros por estado, template y rango de fechas para facilitar la búsqueda.

## Header de autenticación

<ParamField header="X-API-Key" type="string" required>
  Tu API Key de Mindo. Formato: `mindo_xxxxxxxxxxxxxxxxxxxxxxxx`
</ParamField>

## Parámetros de query

<ParamField query="status" type="string">
  Filtrar por estado del envío. Valores posibles: `QUEUED`, `PROCESSING`, `COMPLETED`, `PARTIAL`, `FAILED`, `CANCELLED`.
</ParamField>

<ParamField query="template" type="integer">
  Filtrar por ID del template utilizado.
</ParamField>

<ParamField query="created_after" type="string (date)">
  Filtrar envíos creados después de esta fecha. Formato: `YYYY-MM-DD`.
</ParamField>

<ParamField query="created_before" type="string (date)">
  Filtrar envíos creados antes de esta fecha. Formato: `YYYY-MM-DD`.
</ParamField>

<ParamField query="page" type="integer">
  Número de página. Por defecto: `1`.
</ParamField>

<ParamField query="page_size" type="integer">
  Cantidad de resultados por página. Por defecto: `20`.
</ParamField>

## Respuesta

<ResponseField name="count" type="integer">
  Total de envíos masivos que coinciden con los filtros.
</ResponseField>

<ResponseField name="next" type="string | null">
  URL de la siguiente página de resultados. `null` si es la última página.
</ResponseField>

<ResponseField name="previous" type="string | null">
  URL de la página anterior. `null` si es la primera página.
</ResponseField>

<ResponseField name="results" type="array">
  Lista de envíos masivos.

  <Expandable title="Propiedades de cada envío">
    <ResponseField name="id" type="string (UUID)">
      ID único del envío masivo.
    </ResponseField>

    <ResponseField name="status" type="string">
      Estado actual del envío.
    </ResponseField>

    <ResponseField name="template" type="object">
      Información del template utilizado.

      <Expandable title="Propiedades de template">
        <ResponseField name="id" type="integer">
          ID interno del template.
        </ResponseField>

        <ResponseField name="template_name" type="string">
          Nombre del template.
        </ResponseField>

        <ResponseField name="language" type="string">
          Idioma del template.
        </ResponseField>

        <ResponseField name="status" type="string">
          Estado del template en Meta.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="phone_number" type="object">
      Información del número de WhatsApp emisor.

      <Expandable title="Propiedades de phone_number">
        <ResponseField name="id" type="integer">
          ID interno del número.
        </ResponseField>

        <ResponseField name="display_phone_number" type="string">
          Número formateado para mostrar.
        </ResponseField>

        <ResponseField name="verified_name" type="string">
          Nombre verificado por Meta.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="total_recipients" type="integer">
      Total de destinatarios.
    </ResponseField>

    <ResponseField name="sent_count" type="integer">
      Mensajes enviados.
    </ResponseField>

    <ResponseField name="delivered_count" type="integer">
      Mensajes entregados.
    </ResponseField>

    <ResponseField name="read_count" type="integer">
      Mensajes leídos.
    </ResponseField>

    <ResponseField name="failed_count" type="integer">
      Mensajes fallidos.
    </ResponseField>

    <ResponseField name="pending_count" type="integer">
      Mensajes pendientes.
    </ResponseField>

    <ResponseField name="progress_percentage" type="float">
      Porcentaje de progreso (0-100).
    </ResponseField>

    <ResponseField name="created_at" type="string (ISO 8601)">
      Fecha y hora de creación.
    </ResponseField>

    <ResponseField name="completed_at" type="string (ISO 8601) | null">
      Fecha y hora de finalización. `null` si no completó.
    </ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X GET "https://api.mindosoftware.com/api/v1/meta-templates/bulk-sends/?status=COMPLETED&created_after=2025-11-01&page=1&page_size=10" \
    -H "X-API-Key: mindo_xxxxxxxxxxxxxxxxxxxxxxxx"
  ```

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

  response = requests.get(
      "https://api.mindosoftware.com/api/v1/meta-templates/bulk-sends/",
      headers={"X-API-Key": "mindo_xxxxxxxxxxxxxxxxxxxxxxxx"},
      params={
          "status": "COMPLETED",
          "created_after": "2025-11-01",
          "page": 1,
          "page_size": 10
      }
  )

  data = response.json()
  print(f"Total envíos: {data['count']}")
  for bulk in data["results"]:
      print(f"  {bulk['id']}: {bulk['status']} - {bulk['template']['template_name']} ({bulk['total_recipients']} destinatarios)")
  ```

  ```javascript JavaScript theme={null}
  const params = new URLSearchParams({
    status: "COMPLETED",
    created_after: "2025-11-01",
    page: "1",
    page_size: "10"
  });

  const response = await fetch(
    `https://api.mindosoftware.com/api/v1/meta-templates/bulk-sends/?${params}`,
    {
      headers: { "X-API-Key": "mindo_xxxxxxxxxxxxxxxxxxxxxxxx" }
    }
  );

  const data = await response.json();
  console.log(`Total envíos: ${data.count}`);
  data.results.forEach(bulk => {
    console.log(`  ${bulk.id}: ${bulk.status} - ${bulk.template.template_name} (${bulk.total_recipients} destinatarios)`);
  });
  ```
</RequestExample>

<ResponseExample>
  ```json 200 - OK theme={null}
  {
    "count": 2,
    "next": null,
    "previous": null,
    "results": [
      {
        "id": "a3f2b8c9-4d5e-6f7a-8b9c-0d1e2f3a4b5c",
        "status": "COMPLETED",
        "template": {
          "id": 45,
          "template_name": "welcome_message",
          "language": "es",
          "status": "APPROVED"
        },
        "phone_number": {
          "id": 123,
          "display_phone_number": "+54 9 223 675-0780",
          "verified_name": "Mindo Software"
        },
        "total_recipients": 3,
        "sent_count": 3,
        "delivered_count": 2,
        "read_count": 1,
        "failed_count": 0,
        "pending_count": 0,
        "progress_percentage": 100.0,
        "created_at": "2025-11-16T21:30:00Z",
        "completed_at": "2025-11-16T21:30:28Z"
      },
      {
        "id": "b4c3d9e0-5f6a-7b8c-9d0e-1f2a3b4c5d6e",
        "status": "COMPLETED",
        "template": {
          "id": 46,
          "template_name": "order_confirmation",
          "language": "es",
          "status": "APPROVED"
        },
        "phone_number": {
          "id": 123,
          "display_phone_number": "+54 9 223 675-0780",
          "verified_name": "Mindo Software"
        },
        "total_recipients": 150,
        "sent_count": 150,
        "delivered_count": 142,
        "read_count": 98,
        "failed_count": 0,
        "pending_count": 0,
        "progress_percentage": 100.0,
        "created_at": "2025-11-15T14:00:00Z",
        "completed_at": "2025-11-15T14:09:30Z"
      }
    ]
  }
  ```

  ```json 401 - No autenticado theme={null}
  {
    "error": "Este endpoint requiere autenticacion con API Key (header X-API-Key)"
  }
  ```
</ResponseExample>
