Mass DM
Cancel a Mass DM
/v1/mass-dms/{mass_dm_id}/cancelCancels a scheduled Mass DM, or stops one that is sending: fans not reached yet receive nothing. Cancelling an already cancelled Mass DM is a no-op.
write:mass_dmscurl -X POST 'https://api.fansquare.so/v1/mass-dms/1b7431ca-849c-4728-acc2-fe033419f18a/cancel' \
-H "Authorization: Bearer $API_KEY" \
-H "Fansquare-Version: Amethyste"{
"id": "1b7431ca-849c-4728-acc2-fe033419f18a",
"creator_id": "m81IhLxdhzDGYs54rNp2",
"name": "Lena",
"status": "draft",
"scheduled_at": "2026-10-14T19:00:00.000Z",
"send_at": "2026-10-12T21:14:00.000Z",
"estimated_audience_count": 12,
"results": {
"audience_count": 12,
"delivered_count": 128,
"failed_count": 2,
"revenue_cents": 4900,
"purchases": 12,
"replies": 12,
"reads": 12,
"started_at": "2026-10-12T21:14:00.000Z",
"completed_at": "2026-10-12T21:14:00.000Z"
},
"created_at": "2026-10-12T21:14:00.000Z",
"messages": [
{
"text": "string",
"media_ids": [
"b12eacb2-afea-4959-a0d0-b685e6b49279"
],
"price_cents": 1500,
"price_range": {
"min_cents": 5000,
"max_cents": 5000
},
"delay_seconds": 300,
"delete_if_no_reply_after_seconds": 300,
"delete_on_next_message": true
}
],
"filters": {
"include": {
"statuses": [
"active_subscriber"
],
"tag_ids": [
"58368a92-838b-4cb0-ab37-d54ce826ea11"
],
"min_spend_cents": 5000,
"min_tips_cents": 5000,
"min_subscription_months": 12,
"is_online": true,
"min_paid_spend_7d_cents": 5000,
"min_paid_spend_30d_cents": 5000,
"min_paid_spend_90d_cents": 5000,
"min_payments_7d": 1,
"min_payments_30d": 1,
"min_payments_90d": 1,
"spender_tiers": [
"none"
],
"media_purchase": {
"mode": "within",
"hours": 12
}
},
"exclude": {
"tag_ids": [
"58368a92-838b-4cb0-ab37-d54ce826ea11"
],
"messaged_within_hours": 12,
"fan_messaged_within_hours": 12,
"has_unread_from_fan": true,
"already_unlocked_media": true,
"already_received_media": true
}
},
"stop_sequence_on_reply": true
}Parameters
Headers
Fansquare-VersionstringrequiredAPI version to pin. Accepts the mineral name or the release date of a version.
Path
mass_dm_idstringrequiredFansquare Mass DM id (the
idfield of Mass DM items).format uuid
Response
OK, application/json
idstringrequiredFansquare Mass DM id. Path parameter of the /v1/mass-dms/{mass_dm_id} routes.
creator_idstringrequiredFansquare creator id (see GET /v1/creators).
namestringrequiredName shown in Fansquare.
statusstringrequiredscheduled(waiting forscheduled_at),sending,sent,partial(sent, some fans could not be reached),failed,cancelled, ordraft(created in the app, never activated).Valuesdraftscheduledsendingsentpartialfailedcancelledscheduled_atstring | nullrequiredScheduled send time (ISO 8601), or null for a Mass DM sent at creation.
format date-timesend_atstringrequiredWhen it leaves or left:
scheduled_at, or the creation time for an immediate one. The list is sorted on it.format date-timeestimated_audience_countinteger | nullrequiredFans targeted, counted when it was scheduled (indicative). null for an immediate Mass DM: see
results.audience_count.resultsobject | nullrequiredOutcome of the send, null until it starts. The counters are refreshed every few minutes during 30 days.
audience_countinteger | nullrequiredFans actually targeted, resolved when the send started.
delivered_countinteger | nullrequiredFans the sequence reached. null until first computed (within a few minutes).
failed_countinteger | nullrequiredMessages that could not be delivered.
revenue_centsinteger | nullrequiredGross revenue (before the MYM commission) of the media of this Mass DM bought within 30 days, in euro cents.
purchasesinteger | nullrequiredNumber of those purchases.
repliesinteger | nullrequiredFans who replied after receiving it.
readsinteger | nullrequiredFans who opened it (read, or replied).
started_atstring | nullrequiredWhen the send started.
format date-timecompleted_atstring | nullrequiredWhen the send finished.
format date-time
created_atstringrequiredWhen it was created (ISO 8601).
format date-timemessagesarray of objectsrequiredThe sequence sent to every targeted fan.
textstringrequiredText of the message.
media_idsarray of stringsrequiredMYM media uuids from the creator's vault.
price_centsinteger | nullrequiredFixed price to unlock the media, in euro cents. null: free, or dynamic (see
price_range).price_rangeobject | nullrequiredDynamic SpenderIQ price range in euro cents, or null for a fixed price.
min_centsintegerrequiredmax_centsintegerrequired
delay_secondsintegerrequiredWait after the previous message, in seconds (0 on the first message).
delete_if_no_reply_after_secondsinteger | nullrequiredDeleted if the fan has not replied after this many seconds, or null.
delete_on_next_messagebooleanrequiredDeleted when the next message of the sequence is sent.
filtersobjectrequiredAudience filters, in the shape of the create body: only the conditions that are set.
includeobjectConditions a fan must ALL meet to be targeted.
statusesarray of stringsSubscription status of the fan on this account, same vocabulary as the
statusesfilter of GET /v1/accounts/{account_id}/fans:active_subscriber,former_subscriber,interested(follows the creator without subscribing). Any of them. Absent or empty: no status condition, every fan with a conversation is in, whatever their status.Valuesactive_subscriberformer_subscriberinterestedmax items 3tag_idsarray of stringsOnly fans carrying at least one of these tags (ids from GET /v1/tags).
format uuidmax items 100min_spend_centsintegerTotal à-la-carte spend of the fan on this account at least this amount, in euro cents, gross (before the MYM commission). Same figure as
spend.total_centsof a fan in GET /v1/accounts/{account_id}/fans.min 0max 100000000min_tips_centsintegerSum of the tips the fan sent this account at least this amount, in euro cents.
min 0max 100000000min_subscription_monthsintegerFans whose first subscription to this account started at least this many months ago.
min 0max 1200is_onlinebooleantrue: only fans online on MYM when the audience is resolved (at send time for a Mass DM, at the trigger for an automation). false or absent: no condition.
min_paid_spend_7d_centsintegerPaid spend (subscriptions and purchases) of the fan on this account over the last 7 days at least this amount, in euro cents.
min 0max 100000000min_paid_spend_30d_centsintegerSame over the last 30 days.
min 0max 100000000min_paid_spend_90d_centsintegerSame over the last 90 days.
min 0max 100000000min_payments_7dintegerNumber of paid orders of the fan on this account over the last 7 days at least this value.
min 0max 100000min_payments_30dintegerSame over the last 30 days.
min 0max 100000min_payments_90dintegerSame over the last 90 days.
min 0max 100000spender_tiersarray of stringsSpenderIQ tiers, any of them, from the paid spend of the fan on this account over the last 90 days:
none(nothing),low(under 50 EUR),medium(50 EUR or more),high(300 EUR or more),whale(1,500 EUR or more).Valuesnonelowmediumhighwhalemax items 5media_purchaseobjectLast private media purchase of the fan on this account.
modestringrequiredwithin: the fan bought a private media in the lasthours.not_since: no private media purchase forhours(fans who never bought are in).Valueswithinnot_sincehoursintegerrequiredWindow in hours (1 to 8760).
min 1max 8760
excludeobjectConditions that leave a fan out.
tag_idsarray of stringsLeave out fans carrying any of these tags. A tag cannot be both included and excluded.
format uuidmax items 100messaged_within_hoursintegerLeave out fans the account sent a message to in the last N hours (a chatter, a script or another Mass DM sent from Fansquare).
min 1max 8760fan_messaged_within_hoursintegerLeave out fans who wrote to the account in the last N hours: never push into a live conversation. Checked again on MYM at send time.
min 1max 8760has_unread_from_fanbooleantrue: leave out fans whose last message to the account is still unread.
already_unlocked_mediabooleantrue: leave out fans who already have a media of this campaign unlocked (sent free, or bought).
already_received_mediabooleantrue: leave out fans who already received a media of this campaign, bought or not.
stop_sequence_on_replybooleanrequiredA fan who replies does not receive the next messages of the sequence.
curl -X POST 'https://api.fansquare.so/v1/mass-dms/1b7431ca-849c-4728-acc2-fe033419f18a/cancel' \
-H "Authorization: Bearer $API_KEY" \
-H "Fansquare-Version: Amethyste"{
"id": "1b7431ca-849c-4728-acc2-fe033419f18a",
"creator_id": "m81IhLxdhzDGYs54rNp2",
"name": "Lena",
"status": "draft",
"scheduled_at": "2026-10-14T19:00:00.000Z",
"send_at": "2026-10-12T21:14:00.000Z",
"estimated_audience_count": 12,
"results": {
"audience_count": 12,
"delivered_count": 128,
"failed_count": 2,
"revenue_cents": 4900,
"purchases": 12,
"replies": 12,
"reads": 12,
"started_at": "2026-10-12T21:14:00.000Z",
"completed_at": "2026-10-12T21:14:00.000Z"
},
"created_at": "2026-10-12T21:14:00.000Z",
"messages": [
{
"text": "string",
"media_ids": [
"b12eacb2-afea-4959-a0d0-b685e6b49279"
],
"price_cents": 1500,
"price_range": {
"min_cents": 5000,
"max_cents": 5000
},
"delay_seconds": 300,
"delete_if_no_reply_after_seconds": 300,
"delete_on_next_message": true
}
],
"filters": {
"include": {
"statuses": [
"active_subscriber"
],
"tag_ids": [
"58368a92-838b-4cb0-ab37-d54ce826ea11"
],
"min_spend_cents": 5000,
"min_tips_cents": 5000,
"min_subscription_months": 12,
"is_online": true,
"min_paid_spend_7d_cents": 5000,
"min_paid_spend_30d_cents": 5000,
"min_paid_spend_90d_cents": 5000,
"min_payments_7d": 1,
"min_payments_30d": 1,
"min_payments_90d": 1,
"spender_tiers": [
"none"
],
"media_purchase": {
"mode": "within",
"hours": 12
}
},
"exclude": {
"tag_ids": [
"58368a92-838b-4cb0-ab37-d54ce826ea11"
],
"messaged_within_hours": 12,
"fan_messaged_within_hours": 12,
"has_unread_from_fan": true,
"already_unlocked_media": true,
"already_received_media": true
}
},
"stop_sequence_on_reply": true
}