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

# Mensagens do envio

> Listar mensagens individuais de um envio em massa

## Descrição

Retorna uma lista paginada de mensagens individuais de um envio em massa. Permite filtrar por status para identificar rapidamente mensagens com falha, entregues ou lidas.

## Header de autenticação

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

## Parâmetros de path

<ParamField path="bulk_send_id" type="string (UUID)" required>
  ID do envio em massa obtido ao criar o envio com [Envio em massa](/pt/api-reference/envio-masivo/enviar-masivo).
</ParamField>

## Parâmetros de query

<ParamField query="status" type="string">
  Filtrar por status da mensagem. Valores possíveis: `sent`, `delivered`, `read`, `failed`.
</ParamField>

<ParamField query="page" type="integer">
  Número da página. Padrão: `1`.
</ParamField>

<ParamField query="page_size" type="integer">
  Resultados por página. Padrão: `20`.
</ParamField>

## Resposta

<ResponseField name="count" type="integer">
  Total de mensagens que correspondem aos filtros.
</ResponseField>

<ResponseField name="next" type="string | null">
  URL da próxima página de resultados. `null` se for a última página.
</ResponseField>

<ResponseField name="previous" type="string | null">
  URL da página anterior. `null` se for a primeira página.
</ResponseField>

<ResponseField name="results" type="array">
  Lista de mensagens individuais.

  <Expandable title="Propriedades de cada mensagem">
    <ResponseField name="id" type="integer">
      ID da mensagem.
    </ResponseField>

    <ResponseField name="recipient_phone" type="string">
      Número de telefone do destinatário.
    </ResponseField>

    <ResponseField name="status" type="string">
      Status atual da mensagem. Consulte a [tabela de status](#status-das-mensagens).
    </ResponseField>

    <ResponseField name="meta_message_id" type="string">
      ID da mensagem na Meta/WhatsApp.
    </ResponseField>

    <ResponseField name="variables_used" type="object">
      Variáveis utilizadas para este destinatário.
    </ResponseField>

    <ResponseField name="sent_at" type="string (ISO 8601)">
      Data e hora do envio da mensagem.
    </ResponseField>

    <ResponseField name="delivered_at" type="string (ISO 8601) | null">
      Data e hora da entrega. `null` se ainda não entregue.
    </ResponseField>

    <ResponseField name="read_at" type="string (ISO 8601) | null">
      Data e hora da leitura. `null` se ainda não lida.
    </ResponseField>

    <ResponseField name="error_message" type="string | null">
      Mensagem de erro se o envio falhou. `null` se não houve erro.
    </ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X GET "https://api.mindosoftware.com/api/v1/meta-templates/bulk-sends/a3f2b8c9-4d5e-6f7a-8b9c-0d1e2f3a4b5c/messages/?status=delivered&page=1&page_size=20" \
    -H "X-API-Key: mindo_xxxxxxxxxxxxxxxxxxxxxxxx"
  ```

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

  bulk_send_id = "a3f2b8c9-4d5e-6f7a-8b9c-0d1e2f3a4b5c"

  response = requests.get(
      f"https://api.mindosoftware.com/api/v1/meta-templates/bulk-sends/{bulk_send_id}/messages/",
      headers={"X-API-Key": "mindo_xxxxxxxxxxxxxxxxxxxxxxxx"},
      params={"status": "delivered", "page": 1, "page_size": 20}
  )

  data = response.json()
  print(f"Total de mensagens: {data['count']}")
  for msg in data["results"]:
      print(f"  {msg['recipient_phone']}: {msg['status']}")
  ```

  ```javascript JavaScript theme={null}
  const bulkSendId = "a3f2b8c9-4d5e-6f7a-8b9c-0d1e2f3a4b5c";
  const params = new URLSearchParams({
    status: "delivered",
    page: "1",
    page_size: "20"
  });

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

  const data = await response.json();
  console.log(`Total de mensagens: ${data.count}`);
  data.results.forEach(msg => {
    console.log(`  ${msg.recipient_phone}: ${msg.status}`);
  });
  ```
</RequestExample>

<ResponseExample>
  ```json 200 - OK theme={null}
  {
    "count": 3,
    "next": null,
    "previous": null,
    "results": [
      {
        "id": 1001,
        "recipient_phone": "+5491112345678",
        "status": "delivered",
        "meta_message_id": "wamid.HBgLNTU0MTE2NzU0Nzg1FQIAERgS...",
        "variables_used": {
          "name": "Juan Perez",
          "code": "ABC123"
        },
        "sent_at": "2025-11-16T21:30:10Z",
        "delivered_at": "2025-11-16T21:30:15Z",
        "read_at": null,
        "error_message": null
      },
      {
        "id": 1002,
        "recipient_phone": "+5491187654321",
        "status": "read",
        "meta_message_id": "wamid.HBgLNTU0MTE2NzU0Nzg1FQIAERgT...",
        "variables_used": {
          "name": "Maria Garcia",
          "code": "DEF456"
        },
        "sent_at": "2025-11-16T21:30:18Z",
        "delivered_at": "2025-11-16T21:30:23Z",
        "read_at": "2025-11-16T21:30:30Z",
        "error_message": null
      },
      {
        "id": 1003,
        "recipient_phone": "+5491199887766",
        "status": "sent",
        "meta_message_id": "wamid.HBgLNTU0MTE2NzU0Nzg1FQIAERgU...",
        "variables_used": {
          "name": "Carlos Lopez",
          "code": "GHI789"
        },
        "sent_at": "2025-11-16T21:30:26Z",
        "delivered_at": null,
        "read_at": null,
        "error_message": null
      }
    ]
  }
  ```

  ```json 404 - Não encontrado theme={null}
  {
    "detail": "Not found."
  }
  ```

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

## Status das mensagens

| Status      | Descrição                           |
| ----------- | ----------------------------------- |
| `sent`      | Mensagem enviada para a API da Meta |
| `delivered` | Mensagem entregue ao destinatário   |
| `read`      | Mensagem lida pelo destinatário     |
| `failed`    | Erro no envio                       |

<Note>
  Os status são atualizados automaticamente via webhooks da Meta. O status progride de `sent` → `delivered` → `read`. Se o envio falhar, o status será `failed` e o campo `error_message` conterá a descrição do erro.
</Note>
