---
title: "Send a mass message"
method: POST
path: "/chats/mass-messages"
---

# Send a mass message

`POST /chats/mass-messages`

## Request

- Base URL: `https://api.fanvue.com`
- URL: `https://api.fanvue.com/chats/mass-messages`
- Auth: OAuth 2
  - Authorization code: `https://auth.fanvue.com/oauth2/auth`
  - Token URL: `https://auth.fanvue.com/oauth2/token` scopes: `write:chat`, `read:fan`

Send a message to multiple users based on selected lists.  
If `scheduledAt` (or alias `scheduled_at`) is provided, the message is queued for scheduled delivery instead of being sent immediately.

## Headers

- `X-Fanvue-API-Version` string, required
- `Idempotency-Key` string

## Request body

- object
  - `text` string
  - `mediaUuids` string[]
  - `mediaPreviewUuid` string, uuid, nullable: UUID of a single media item shown for free as a preview of a pay-to-view mass message. Requires a price and attached media.
  - `price` number, nullable
  - `includedLists` object, required
    - `smartListIds` string[]: Smart list identifiers — fixed string types such as 'subscribers' or 'followers', not UUIDs. The deprecated alias `smartListUuids` is also accepted.
    - `customListUuids` string[]
    - `dynamicSmartListUuids` string[]: UUIDs of creator-defined dynamic smart lists, as returned by GET /chats/lists/dynamic. Resolved to member fans at send time.
  - `excludedLists` object
    - `smartListIds` string[]: Smart list identifiers — fixed string types such as 'subscribers' or 'followers', not UUIDs. The deprecated alias `smartListUuids` is also accepted.
    - `customListUuids` string[]
    - `dynamicSmartListUuids` string[]: UUIDs of creator-defined dynamic smart lists, as returned by GET /chats/lists/dynamic. Resolved to member fans at send time.
  - `scheduledAt` string, date-time: Optional scheduled date/time in ISO 8601 format. Alias `scheduled_at` is also accepted.

## Response `201`

Mass message sent successfully

- object
  - `uuid` string, uuid, required: UUID of the created mass message
  - `status` 'SENT' | 'UNSENT' | 'SENDING' | 'FAILED' | 'MODERATED' | 'SCHEDULED': Status right after this request, present only when dispatch is async: SENDING or SCHEDULED means delivery/recipient resolution is still in progress
  - `publishedAt` string, date, nullable, required: When the message was sent, or null when it is scheduled for later
  - `recipientCount` number, nullable, required: Recipients resolved from the given lists at the time of this request, or null when the immediate send resolves them asynchronously. A scheduled message re-resolves its recipients at send time, so this is a preview and GET /chats/mass-messages reports 0 until it sends.

## Other responses

- `400`: Bad Request - API version not supported OR user contactability validation failed OR message validation failed
- `401`: Unauthorized Response
- `403`: Unauthorized Response
- `409`: The Idempotency-Key conflicts with another send: either the first one is still in progress, or the key was already used for a different message
- `410`: API version no longer supported (sunset)
- `429`: Too many requests - rate limit exceeded

## Changes

- **2026-10-10** `79b9aba8a759`: 1 breaking, 3 info
  - the response property `recipientCount` became nullable for the status `201`
  - added the new optional request property `excludedLists/dynamicSmartListUuids`
  - added the new optional request property `includedLists/dynamicSmartListUuids`
  - added the optional property `status` to the response with the `201` status
- **2026-08-30** `dce5621fe589`: 2 info
  - added the new optional `header` request parameter `Idempotency-Key`
  - added the non-success response with the status `409`

[Operation history](https://skmtc.dev/fanvue/apis/fanvue-api/changes/chats/mass-messages/post.md)

---

[API](https://skmtc.dev/fanvue/apis/fanvue-api.md) - [All operations](https://skmtc.dev/fanvue/apis/fanvue-api/llms.txt) - [OpenAPI document](https://skmtc.dev/fanvue/apis/fanvue-api/revisions/966260af2770?raw)
