---
title: "Get delivery data for a one-time send"
method: GET
path: "/v1/newsletters/{newsletter_id}/messages"
tags: ["Newsletter Metrics"]
---

# Get delivery data for a one-time send

`GET /v1/newsletters/{newsletter_id}/messages`

## Request

- Base URL: `https://api.customer.io`
- URL: `https://api.customer.io/v1/newsletters/{newsletter_id}/messages`
- Auth: HTTP bearer

Returns information about the "deliveries" (rendered messages) sent to your recipients for a specific one-time send (referred to as a "newsletter" in our APIs).

Provide query parameters to refine the metrics you want to return. Use `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 up to 6 months of results beginning with the first delivery generated from the one-time send. 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 delivery to a recipient.

- object
  - `messages` NewsletterMessageObject[]
    - `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, One-time sends, 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 one-time send.
    - `content_id` integer: The identifier for a message in a one-time send. One-time sends 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' | 'inbox': Channel type for a one-time send or one-time send content variant.

## Other responses

- `404`: The one-time send you requested does 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`

[Operation history](https://skmtc.dev/customer/apis/customer-io-journeys-api-reference/changes/v1/newsletters/:newsletter_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.dev/customer/apis/customer-io-journeys-api-reference/revisions/ac0b282053fe?raw)
