---
title: "Cuenta contactos que cumplen el segmento (preview)"
method: POST
path: "/workspaces/{workspaceId}/broadcasts/preview-count"
tags: ["Broadcasts"]
---

# Cuenta contactos que cumplen el segmento (preview)

`POST /workspaces/{workspaceId}/broadcasts/preview-count`

## Request

- Base URL: `https://api.met.meteor.com.co/api/v1`
- URL: `https://api.met.meteor.com.co/api/v1/workspaces/{workspaceId}/broadcasts/preview-count`
- Auth: one of:
  - `bearer` (a scheme the document does not define)
  - HTTP bearer

Cuenta a cuántos contactos le llegaría el segmento **sin mandar nada**. Córrelo siempre antes de crear la difusión: es la única forma barata de descubrir que un filtro estaba mal antes de escribirle a media base.

El conteo ya deja afuera a los dados de baja (`$subscribed: false`, el «Suscrito» de la ficha; si falta, cuenta como suscrito), a los bloqueados y a quien Meta ya le rechazó una plantilla por bloqueo o número sin WhatsApp. Para segmentar por historial de envíos están `received_template` y `not_received_template`: `field` es el nombre de la plantilla y `value` los días hacia atrás (1–365).

Ojo con el piloto automático: si al momento del envío un contacto tiene el piloto **en pausa** (alguien del equipo le escribió hace poco), **apagado** o el chat en «Hablar con humano», su flujo corre igual pero los pasos que le envían mensajes **se omiten en silencio** —el paso queda con `{ sent: false, silenced: true, reason }`, sin error— y no le llega nada. No hay forma de saltarse esa pausa desde la difusión. `POST /broadcasts/preview-count` te dice en `silenced_count` cuántos están así ahora mismo.

## Path parameters

- `workspaceId` number, required

## Request body

- PreviewCountDto
  - `filters` SegmentConditionDto[]
    - `field` string, required: Clave en items.data: '$status', '$city', '$tags', o un campo custom. Con `received_template` / `not_received_template`, el nombre de la plantilla (en cualquier idioma).
    - `operator` 'equals' | 'not_equals' | 'contains' | 'starts_with' | 'gt' | 'lt' | 'is_true' | 'is_false' | 'is_set' | 'is_not_set' | 'is_any_of' | 'has_tag' | 'between' | 'received_template' | 'not_received_template', required
    - `value` object: Valor a comparar. Array para `is_any_of`; `[desde, hasta]` para `between` (un extremo vacío = rango abierto por ese lado). Opcional para is_set/etc. Con `received_template` / `not_received_template`, los días hacia atrás (entero de 1 a 365): «recibió (o no) la plantilla `field` en los últimos N días». Un envío que el proveedor rechazó no cuenta como recibido.

## Response `201`

- object: Sobre en el que viaja toda respuesta correcta de la API. El recurso está en `data`. Los SDKs oficiales lo desenvuelven por ti; un cliente hecho a mano tiene que leer `.data`.
  - `success` true, required: Siempre `true` en una respuesta 2xx.
  - `data` BroadcastPreviewCountResponseDto, required
    - `count` number, required: Cuántos contactos cumplen hoy las condiciones que mandaste. Ya descuenta a los dados de baja (`$subscribed: false`), a los bloqueados y a los que Meta excluyó por un rechazo previo. Incluye a los de `silenced_count`.
    - `silenced_count` number, required: De `count`, cuántos tienen hoy el piloto automático en pausa, apagado o el chat en «Hablar con humano». Siguen siendo destinatarios —su flujo corre—, pero los pasos que les envían mensajes se omiten en silencio (resultado `{ sent: false, silenced: true, reason }`), así que no les llega nada. Es el estado de ahora: una pausa que vence antes del envío deja de silenciar.

## Other responses

- `400`: La request no es válida: un campo no pasa validación, falta un parámetro requerido o el recurso no admite la transición solicitada.
- `401`: API key ausente, inválida, revocada o expirada — o el workspace está bloqueado.
- `403`: La key está autenticada pero no puede ejecutar esta operación: scope faltante, capacidad deshabilitada, modo test restringido o recurso fuera de su cartera.
- `404`: El recurso no existe o no está disponible dentro del alcance de la key. No revela la existencia de recursos de otros tenants.
- `409`: La operación entra en conflicto con el estado actual o con un Idempotency-Key en uso. No reintentes con el mismo key y un body distinto.
- `429`: Se superó el límite por minuto de la key o la cuota del plan. Respeta `Retry-After`; el SDK ya reintenta solo.
- `500`: Error del servidor o del Met que ejecutaba. El SDK reintenta los 5xx con backoff.

---

[API](https://skmtc.dev/meteor/apis/met-public-api.md) · [All operations](https://skmtc.dev/meteor/apis/met-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/meteor/apis/met-public-api/revisions/fc6d3aad75de?raw)
