OnlyFans API
Mass messaging

Send Mass Message

Send a mass message to lists and/or users. You may use both the `userLists` and `userIds` parameters to send the same message to both lists and individual users.

POST
/api/{account}/mass-messaging
AuthorizationBearer <token>

You can retrieve your token by visiting the OnlyFansAPI Console and clicking API Keys -> Create API Key.

In: header

Path Parameters

accountstring

The Account ID

userLists?array<string>

Array of user list IDs that the mass message will be sent to.

userIds?array<string>

Array of user IDs that the mass message will be sent to.

textstring

The message text content

lockedText?boolean

Whether the text should be shown or hidden

price?integer

Price for paid content (0 or between 3-200). In case this is not zero, mediaFiles is required

mediaFiles?array<string>

Array of media file upload prefixed_ids, or OF media IDs (required if price is not 0). Will be hidden if price is provided.

previews?array<string>

Array of media file upload prefixed_ids, or OF media IDs (required if price is not 0). Will be shown if price is provided. All previews values must also exist in the mediaFiles array.

scheduledDate?string

Schedule the chat message in the future (UTC timezone).

saveForLater?boolean

Add your message to the "Saved for later" queue.

Response Body

curl -X POST "https://app.onlyfansapi.com/api/acct_XXXXXXXXXXXXXXX/mass-messaging" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Hello!"
  }'
const body = JSON.stringify({
  "text": "Hello!"
})

fetch("https://app.onlyfansapi.com/api/acct_XXXXXXXXXXXXXXX/mass-messaging", {
  body
})
package main

import (
  "fmt"
  "net/http"
  "io/ioutil"
  "strings"
)

func main() {
  url := "https://app.onlyfansapi.com/api/acct_XXXXXXXXXXXXXXX/mass-messaging"
  body := strings.NewReader(`{
    "text": "Hello!"
  }`)
  req, _ := http.NewRequest("POST", url, body)
  req.Header.Add("Content-Type", "application/json")
  res, _ := http.DefaultClient.Do(req)
  defer res.Body.Close()
  body, _ := ioutil.ReadAll(res.Body)

  fmt.Println(res)
  fmt.Println(string(body))
}
import requests

url = "https://app.onlyfansapi.com/api/acct_XXXXXXXXXXXXXXX/mass-messaging"
body = {
  "text": "Hello!"
}
response = requests.request("POST", url, json = body, headers = {
  "Content-Type": "application/json"
})

print(response.text)
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.http.HttpResponse.BodyHandlers;
import java.time.Duration;
import java.net.http.HttpRequest.BodyPublishers;

var body = BodyPublishers.ofString("""{
  "text": "Hello!"
}""");
HttpClient client = HttpClient.newBuilder()
  .connectTimeout(Duration.ofSeconds(10))
  .build();

HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
  .uri(URI.create("https://app.onlyfansapi.com/api/acct_XXXXXXXXXXXXXXX/mass-messaging"))
  .header("Content-Type", "application/json")
  .POST(body)
  .build();

try {
  HttpResponse<String> response = client.send(requestBuilder.build(), BodyHandlers.ofString());
  System.out.println("Status code: " + response.statusCode());
  System.out.println("Response body: " + response.body());
} catch (Exception e) {
  e.printStackTrace();
}
using System;
using System.Net.Http;
using System.Text;

var body = new StringContent("""
{
  "text": "Hello!"
}
""", Encoding.UTF8, "application/json");

var client = new HttpClient();
var response = await client.PostAsync("https://app.onlyfansapi.com/api/acct_XXXXXXXXXXXXXXX/mass-messaging", body);
var responseBody = await response.Content.ReadAsStringAsync();
{
  "data": {
    "id": 123,
    "date": "2025-01-01T01:01:01+00:00",
    "isReady": true,
    "isDone": false,
    "total": -1,
    "pending": 0,
    "canUnsend": true,
    "unsendSeconds": 1000000,
    "hasError": false,
    "isCanceled": false,
    "isCouplePeopleMedia": false
  },
  "_meta": {
    "_credits": {
      "used": 1,
      "balance": 967,
      "note": "Always"
    },
    "_cache": {
      "is_cached": false,
      "note": "Cache disabled for this endpoint"
    },
    "_rate_limits": {
      "limit_minute": 1000,
      "limit_day": 50000,
      "remaining_minute": 998,
      "remaining_day": 49992
    }
  }
}