publ betaReference (MCP guide)
Open publ console

messenger_promotion_apply

# messenger_promotion_apply

Send one text (up to 1000 characters) or image to all channel members of the Messenger app (pApp D00003) through the promotion extension (Z00003), as Send to All does [str_8367, str_8529]. Requires change {confirmation SEND_PROMOTION_TO_CHANNEL_MEMBERS}. The preview leads with the member count; a changed count refuses the send. Another Send to All waits 60 seconds [str_7455]. Ask the user again before executing; this cannot be undone. When sending cannot run here, the answer is MESSAGING_DELIVERY_CONSOLE with the Send to All screen (consoleUrl), and nothing is sent. The preview never sends. A lost receipt stays pending and is never resent; task_resume only observes, and prepared work needs the identical apply. Called without confirmToken it previews and returns a confirmToken; repeating the same input with it executes once. Ask the user again before executing; this cannot be undone. When the preview has requiresReconfirmation, execute only with irreversibleConfirmed: true after the person confirms again.

## Inputs

| Field | Required here | Contract |
| --- | --- | --- |
| `target` | Yes | one of: `TEXT`, `IMAGE`, `RECORD` (by `messageType`) |
| `target.text` | Yes | When `target.messageType` is `TEXT`: string; min length 1; max length 1000 |
| `target.mediaTaskId` | Yes | When `target.messageType` is `IMAGE`: string; pattern `^[A-Za-z0-9_-]{8,80}$` |
| `target.mediaTaskId` | Yes | When `target.messageType` is `RECORD`: string; pattern `^[A-Za-z0-9_-]{8,80}$` |
| `change` | Yes | object |
| `change.confirmation` | Yes | `SEND_PROMOTION_TO_CHANNEL_MEMBERS` |
| `confirmToken` | No | string; pattern `^ct[a-f\d]{32}$`; The confirmToken from this tool's preview result. Omit it to preview; repeat the same input with it to execute. |
| `irreversibleConfirmed` | No | `true`; true only after the person confirmed again, when the preview has requiresReconfirmation: the action cannot be undone. |