---
title: "Get messages for a broadcast"
method: GET
path: "/v1/broadcasts/{broadcast_id}/messages"
tags: ["Broadcasts"]
---

# Get messages for a broadcast

`GET /v1/broadcasts/{broadcast_id}/messages`

Returns information about the deliveries (instances of messages sent to individual people) sent from an API-triggered broadcast. Provide query parameters to refine the metrics you want to return.

Use the `start_ts` and `end_ts` to find messages within a time range. If your request doesn't include `start_ts` and `end_ts` parameters, we'll return results for the 1 month period after the first trigger. If your `start_ts` and `end_ts` range is more than 12 months, we'll return 12 months of data from the most recent timestamp in your request. Timestamps reflect when deliveries were created in our system, not when they were actually sent to recipients. There may be a delay between creation and sending.

## Response `200`

Returns an array of `messages`. Each object represents a different message in your broadcast.

- object
  - `messages` MessageObject[]
    - `id` string — The identifier for a delivery—the instance of a message intended for an individual recipient.
    - `deduplicate_id` string — An identifier in the format `id:timestamp` where the id is for the object you're working with (Automations, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.
    - `message_template_id` integer — The identifier of the message template used to create a message.
    - `customer_id` string, nullable — The ID of a customer profile, analogous to a "person" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.
    - `customer_identifiers` CustomerIdentifiers — Identifiers for the person in a response—`id`, `cio_id`, and `email`. Unset `id` or `email` values are `null`. We recommend this object over the less descriptive `customer_id`. This object doesn't include `phone`, even if your workspace uses phone numbers as an identifier; look for the person's `phone` attribute instead.
      - `email` string, email, nullable, required — A person's email address, if set.
      - `id` string, nullable, required — A person's unique ID, if set. This is the same as the `customer_id` if present.
      - `cio_id` string, required — A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.
    - `recipient` string — The recipient address for an action.
    - `subject` string — The subject line for an `email` action.
    - `metrics` MessageMetrics — Metrics for an individual instance of a message; each item in the object represents the timestamp when a message achieved a particular metric. This object only contains metrics that have been recorded.
      - `bounced` integer — The timestamp when the message `bounced`.
      - `clicked` integer — The timestamp when the message was `clicked`.
      - `human_clicked` integer — The number of `clicked` messages excluding machine clicks. This metric is reliable starting April 20, 2025. [Learn more](/messaging/metrics/analytics/#delivery-metrics).
      - `prefetch_clicked` integer — The number of `clicked` messages attributed to machines. This metric is reliable starting April 20, 2025.
      - `converted` integer — The timestamp when the message was `converted`.
      - `created` integer — The timestamp when the message was `created`.
      - `delivered` integer — The timestamp when the message was `delivered`.
      - `drafted` integer — The timestamp when the message was `drafted`.
      - `dropped` integer — The timestamp when the message was `dropped`.
      - `failed` integer — The timestamp when the message `failed`.
      - `opened` integer — The timestamp when the message was `opened`.
      - `human_opened` integer — The number of `opened` messages excluding machine opens. This metric is reliable starting March 20, 2025. [Learn more](/messaging/metrics/analytics/#delivery-metrics).
      - `prefetch_opened` integer — The number of `opened` messages attributed to machines. This metric is reliable starting March 20, 2025.
      - `sent` integer — The timestamp when the message was `sent`.
      - `spammed` integer — The timestamp when the message was marked as spam.
      - `undeliverable` integer — The timestamp when the message became `undeliverable`.
      - `unsubscribed` integer — The timestamp when a person unsubscribed based on this message.
    - `created` integer — The date time when the referenced ID was created.
    - `failure_message` string, nullable — Explains why a message failed, if applicable.
    - `campaign_id` integer — The identifier for an automation.
    - `action_id` integer — The identifier for an action.
    - `parent_action_id` integer — The ID of the parent action, if the action occurred within an automation and has a parent (like a randomized split, etc).
    - `newsletter_id` integer — The identifier for a newsletter.
    - `content_id` integer — The identifier for a message in a newsletter. Newsletters can have multiple content IDs (for multi-language messages or A/B tests).
    - `broadcast_id` integer — The identifier for a broadcast.
    - `trigger_event_id` string — The id of the event that triggered an event-triggered automation (not an API-triggered broadcast).
    - `forgotten` boolean — If true message contents are not retained by Customer.io.
    - `tracked_responses` object — Tracked in-app survey responses, keyed by response option name. Present only when `get_tracked_responses` is `true`.
    - `type` 'email' | 'webhook' | 'twilio' | 'push' | 'in_app' | 'slack' | 'whatsapp' | 'live_notification' — The type of message or action for a delivery, automation action, or related object. Includes channels that newsletters do not support (for example, `slack` and `whatsapp`).

## Other responses

- `400` — The `broadcastID`, `actionID` or `triggerID` is invalid.
- `404` — The broadcast, action, and/or trigger do not exist.
- `429` — Your request is over the 10-per-second limit. `Retry-After` tells you how many seconds you must wait before you send the next request.

## Changes

- **2026-09-02** `5da2740beeb5` — 1 info
  - added the media type `application/json` for the response with the status `429`

[Change history](https://skmtc.dev/customer/apis/customer-io-journeys-api-reference/changes/v1/broadcasts/:broadcast_id/messages/get.md)

---

[API](https://skmtc.dev/customer/apis/customer-io-journeys-api-reference.md) · [All operations](https://skmtc.dev/customer/apis/customer-io-journeys-api-reference/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/customer/customer-io-journeys-api-reference/revisions/00b93971a49f/schema)
