---
title: "Detalle de la difusión con métricas"
method: GET
path: "/workspaces/{workspaceId}/broadcasts/{id}"
tags: ["Broadcasts"]
---

# Detalle de la difusión con métricas

`GET /workspaces/{workspaceId}/broadcasts/{id}`

## Request

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

El detalle con sus métricas de entrega. Es donde se ve cuántos recibieron, cuántos fallaron y por qué.

`sent_count` cuenta destinatarios cuyo **flujo terminó**, no mensajes entregados: con un flujo que espera (`wait_hours`) la difusión sigue `running` y ese número no sube hasta que cada corrida cierra. Lo que WhatsApp ya acusó como entregado o leído está en `delivered_count`, que se calcula al pedir el detalle; el estado de cada uno, en `GET /broadcasts/{id}/recipients`.

## Path parameters

- `workspaceId` number, required
- `id` string, required

## Response `200`

- 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` BroadcastDetailDto, required
    - `created_at` string, required
    - `created_by` number, nullable, required: Usuario que la creó. `null` si la creó una automatización.
    - `delivered_count` number, required: Destinatarios a los que WhatsApp **acusó entrega** (`delivered` o `read`) del mensaje que les mandó la difusión. A diferencia de `sent_count`, cuenta también a los que siguen con el flujo en curso (por ejemplo, esperando un `wait_hours`). Un destinatario con un mensaje rechazado por el proveedor no cuenta, aunque otro mensaje suyo haya llegado. En una plantilla manual o recurrente suma todas sus corridas. Se calcula al pedir el detalle.
    - `failed_count` number, required: Destinatarios cuyo flujo falló o no se pudo arrancar.
    - `filters` object[], required: Condiciones del segmento, tal como se guardaron. Se combinan con AND; vacío significa "todos los contactos".
    - `finished_at` string, nullable, required: Cuándo llegó a un estado terminal. `null` mientras siga viva.
    - `flow_id` string, required: UUID del flujo publicado que se ejecuta por cada contacto del segmento.
    - `flow_name` string, nullable, required: Nombre del flujo que ejecuta. `null` si el flujo ya no existe.
    - `id` string, required: UUID de la difusión.
    - `name` string, required: Nombre con el que la ves en el listado.
    - `next_run_at` string, nullable, required: Próximo disparo calculado de una difusión recurrente.
    - `recurrence` 'none' | 'daily' | 'weekly' | 'monthly', required
    - `recurrence_dom` number, nullable, required: Día del mes del disparo, 1–31 (se ajusta en meses cortos). Solo `monthly`.
    - `recurrence_dow` number, nullable, required: Día de la semana del disparo, 0 = domingo. Solo con `recurrence: "weekly"`.
    - `recurrence_time` string, nullable, required: Hora local del disparo automático, `HH:MM` en 24 h. Solo si es recurrente.
    - `scheduled_at` string, nullable, required: ISO 8601. Solo tiene valor con `send_mode: "scheduled"`.
    - `send_mode` 'now' | 'scheduled' | 'manual' | 'recurring', required: `now` la toma el próximo tick; `scheduled` espera `scheduled_at`; `manual` es una plantilla que dispara un nodo de flujo; `recurring` se dispara sola.
    - `sent_count` number, required: Destinatarios cuyo **flujo terminó** bien (`success`). No es «mensajes entregados»: un flujo con esperas (`wait_hours`) deja al destinatario en curso hasta que la corrida cierra, aunque el mensaje ya haya llegado. Lo entregado está en `delivered_count` del detalle y en `GET /broadcasts/{id}/recipients`.
    - `source_broadcast_id` string, nullable, required: Si esta fila es una **corrida** disparada desde una plantilla manual o recurrente, aquí va el id de esa plantilla. `null` en las difusiones normales.
    - `started_at` string, nullable, required: Cuándo empezó a despacharse. `null` mientras no arrancó.
    - `status` 'draft' | 'scheduled' | 'running' | 'completed' | 'cancelled', required: `draft` es la plantilla manual en reposo; `scheduled` espera su turno; `running` está despachando; `completed` y `cancelled` son terminales.
    - `throttle_per_minute` number, required: Techo de envíos por minuto que respeta el despachador.
    - `timezone` string, nullable, required: Zona horaria IANA con la que se interpreta `recurrence_time`.
    - `total_recipients` number, required: Contactos que quedaron materializados como destinatarios.
    - `updated_at` string, required
    - `workspace_id` number, required

## 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.
- `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/5d9ca294295c?raw)
