---
title: "Retrieve one Priority Mass Messages broadcast"
method: GET
path: "/api/v0/accounts/{account_id}/priority-mass-message-campaigns/{campaign_id}"
tags: ["priority-mass-message-campaigns"]
---

# Retrieve one Priority Mass Messages broadcast

`GET /api/v0/accounts/{account_id}/priority-mass-message-campaigns/{campaign_id}`

## Request

- Base URL: `https://omapi.onlymonster.ai`
- URL: `https://omapi.onlymonster.ai/api/v0/accounts/{account_id}/priority-mass-message-campaigns/{campaign_id}`
- Auth: API key in header `x-om-auth-token`

**Rate limit:** 5 requests per second

A schedule reads back as `null` once the broadcast has been dispatched; a broadcast paused before its schedule came due keeps it.

Sent, unsent and purchased figures, and the purchased amount, count the first message of the broadcast only; replies are counted across every step. Because of that a sequence can report more replies than sends, and its `reply_rate` then reads `null` rather than a figure above 1.

A broadcast whose content could not be read is refused with `502` here, because that content is exactly what was asked for.

**Required permission:** `priority_mass_messages.view`

## Path parameters

- `account_id` string, required
- `campaign_id` string, required

## Response `200`

One Priority Mass Messages broadcast of the account.

- object: One Priority Mass Messages broadcast of the account.
  - `id` string, required: Broadcast identifier.
  - `account_id` string, required: OnlyMonster account the broadcast belongs to.
  - `name` string, required: Broadcast name as the account owner set it. For a single-message broadcast created without a name, the text of that message, as the panel shows it. Null for a broadcast created without a name whose content could not be read.
  - `status` 'scheduled' | 'queued' | 'sending' | 'paused' | 'unsending' | 'sent' | 'unsent' | 'archived', required: State of the broadcast, as the panel shows it. Null for a broadcast holding a state this API does not name, which no broadcast created through it can reach.
  - `pause_reason` 'manual' | 'send_errors' | 'recipient_import_failed', required: Why the broadcast is paused: `manual` when a person paused it, `send_errors` when too many sends failed, `recipient_import_failed` when the recipients of the broadcast could not be loaded. Null when it is not paused.
  - `progress_percent` integer, required: How far the broadcast has got through its audience, from 0 to 100.
  - `created_by` object, required: Who created the campaign.
    - `type` 'user' | 'api_key', required
    - `id` string, required: For `user`, the id of the member who created the campaign in OnlyMonster; for `api_key`, the id of the API key that created it. Null when the creator is unknown.
  - `created_at` string, date-time, required: When the broadcast was created (ISO 8601 Zulu).
  - `scheduled_at` string, date-time, required: When the broadcast is due to go out (ISO 8601 Zulu). Null once it has been dispatched, and null for one that was never scheduled; a broadcast paused before its schedule came due keeps it.
  - `scheduled_at_timezone` string, required: IANA zone name the schedule was stated in, so a client can show it the way the panel does. Null whenever `scheduled_at` is null.
  - `rules` object, required: Who the broadcast sends to, and on what terms it recalls what it sent.
    - `online_check_mode` 'off' | 'online_now' | 'online_only', required: Whether the broadcast waits for the fan to be online before sending, and on what terms. Null for a broadcast holding a term this API does not name, which no broadcast created through it can reach.
    - `unsend_delay_sec` integer, required: Delay after which a sent message is recalled. Null when the broadcast never recalls.
    - `unsend_if_not_read_enabled` boolean, required: Whether the recall is skipped for a message the fan has already opened. False means the message is recalled whatever the fan did.
    - `unsend_if_not_replied_enabled` boolean, required: Whether the recall is skipped for a message the fan has already opened, the same as `unsend_if_not_read_enabled`: the recall checks whether a message was read, never whether it was replied to. A broadcast cannot be created with it.
    - `mimic_on_reply_enabled` boolean, required: Whether a reply from the fan opens a Mimic chat.
    - `end_at` string, date-time, required: When the broadcast stops (ISO 8601 Zulu). Null when it carries no end. Once the end passes the broadcast completes as sent, whatever state it was in.
    - `end_at_timezone` string, required: IANA zone name the end was stated in, so a client can show it the way the panel does. Null whenever `end_at` is null.
  - `audience_filters` object[], required: Filters evaluated per fan when the audience is resolved. Empty when the broadcast targets every fan.
    - `kind` 'subscribed_date' | 'purchased_from_organisation' | 'spent_within_organisation' | 'purchased_from_account' | 'spent_within_account' | 'active_chatted' | 'belongs_platform_lists' | 'belongs_dynamic_lists' | 'verified_account', required
    - `mode` 'include' | 'exclude', required
    - `options` union, required
      - object: Absolute date range.
        - `from_at` string, date-time, required
        - `to_at` string, date-time, required
      - object: Range expressed in days back from now.
        - `from_days` integer, required
        - `to_days` integer, required
      - object: Monetary range, before platform deductions.
        - `from_amount_gross` number, required
        - `to_amount_gross` number, required
      - object: Hour of the day the campaign may send in, as `HH:00`. `timezone_mode` says whose clock the hours are read on: `utc`, or `organisation` for the timezone configured on the organisation.
        - `from_time` string, required
        - `to_time` string, required
        - `timezone_mode` 'utc' | 'organisation', required
      - object: Identifiers of the fan lists the filter selects on.
        - `list_ids` string[], required
      - object: Window, in minutes back from the moment the trigger fires.
        - `within_last_min` integer, required
      - object: No parameters: the filter kind alone decides what it selects.
  - `messages` object[], required: Messages the broadcast sends, in send order. Empty, together with every figure at zero, for a broadcast whose content could not be read — there the zeros stand for unknown values rather than for measurements.
    - `step` integer, required: Position of the message in the campaign: 0 is the first message, 1 and up are its follow-ups.
    - `text` string, required: Text the fan receives. Null for a message that carries only media.
    - `price_gross` number, required: Price the fan pays for this message, before any platform deduction. 0 when the message is free.
    - `delay_sec` integer, required: Delay after the previous message of the campaign before this one is sent. Null for the first message, which is timed by the campaign rules instead.
    - `attachments` object[], required: Media attached to this message. Empty when it carries none.
      - `id` string, required: Identifier of the media on the platform.
      - `type` 'image' | 'video' | 'audio' | 'gif', required
      - `is_paid` boolean, required: True when the attachment sits behind the paywall and is hidden from the preview the fan sees before paying.
    - `text_is_paid` boolean, required: True when the text itself sits behind the paywall, so the fan buys the message to read it rather than only to open its media. False when the text is visible before paying, including when the message carries no price at all.
    - `tagged_platform_account_ids` string[], required: Platform accounts tagged in this message, by their identifier on the platform. Empty when it tags none.
  - `targeted_recipients_count` integer, required: Fans the broadcast resolved to. 0 until it has been prepared, and unaffected by what was delivered afterwards.
  - `stats` object, required: What the broadcast delivered and earned.
    - `sent_messages_count` integer, required: Messages recorded as sent, counting the first message of the broadcast only. Includes messages recalled afterwards.
    - `unsent_messages_count` integer, required: Of the sent messages, how many were recalled afterwards, counting the first message of the broadcast only.
    - `replied_messages_count` integer, required: Sent messages a fan replied to, counted across every step of the broadcast. Counted per message, not per fan, and not reduced by a recall.
    - `purchased_messages_count` integer, required: Sent messages a fan paid for, counting the first message of the broadcast only.
    - `purchased_amount_gross` number, required: Total the fans paid, before any platform deduction, counting the first message of the broadcast only. 0 when nothing was bought.
    - `reply_rate` number, required: Replied messages over sent messages, between 0 and 1. Null while nothing was sent, and null whenever the ratio would exceed 1 — a sequence counts replies on every step and sends on the first one only, so it can reach that bound in ordinary use.
    - `purchase_rate` number, required: Purchased messages over sent messages, between 0 and 1. Null while nothing was sent, and null for a broadcast no message of which carries a price.

## Other responses

- `401`: The token is missing or invalid.
- `403`: The API key lacks the permission this endpoint requires, or the request is outside what the organisation or the API key can access.
- `404`: The broadcast does not exist for this account.
- `429`: The token or per-endpoint rate limit was exceeded.
- `500`: The request failed for a reason this API does not describe. Repeating it is safe.
- `502`: This broadcast exists and is unchanged; only its content could not be read, and here it is exactly what was asked for. Repeating the request is safe. A temporary failure to read the content passes on a later repeat; content missing for good answers the same on every repeat.

## Changes

- **2026-11-05** `0003edb0288a`: 1 warning
  - added the new `verified_account` enum value to the `audience_filters/items/kind` response property for the response status `200`
- **2026-11-03** `20f58411c6c5`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/onlymonster/apis/om-api-service/changes/api/v0/accounts/:account_id/priority-mass-message-campaigns/:campaign_id/get.md)

---

[API](https://skmtc.dev/onlymonster/apis/om-api-service.md) - [All operations](https://skmtc.dev/onlymonster/apis/om-api-service/llms.txt) - [OpenAPI document](https://skmtc.dev/onlymonster/apis/om-api-service/revisions/0003edb0288a?raw)
