Skip to main content
POST
/
api
/
{account}
/
chats
/
{chat_id}
/
messages
Send Message
curl --request POST \
  --url https://app.onlyfansapi.com/api/{account}/chats/{chat_id}/messages \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "text": "Hello!",
  "lockedText": true,
  "price": 100,
  "mediaFiles": [
    "ofapi_media_abc123",
    1234567890
  ],
  "previews": [
    "ofapi_media_abc123",
    1234567890
  ]
}'
{
  "data": {
    "responseType": "message",
    "text": "<p>Message text</p>",
    "giphyId": null,
    "lockedText": true,
    "isFree": true,
    "price": 0,
    "isMediaReady": true,
    "mediaCount": 0,
    "media": [],
    "previews": [],
    "isTip": false,
    "isReportedByMe": false,
    "isCouplePeopleMedia": false,
    "queueId": 123,
    "isMarkdownDisabled": true,
    "releaseForms": [],
    "fromUser": {
      "id": 339543013,
      "_view": "s"
    },
    "isFromQueue": false,
    "id": 123,
    "isOpened": false,
    "isNew": true,
    "createdAt": "2025-02-03T23:29:53+00:00",
    "changedAt": "2025-02-03T23:29:53+00:00",
    "cancelSeconds": 119,
    "isLiked": false,
    "canPurchase": false,
    "canPurchaseReason": "free",
    "canReport": false,
    "canBePinned": true,
    "isPinned": false
  },
  "_pagination": {
    "next_page": "https://app.onlyfansapi.com/api/acct_XXXXXXXXXXX/chats/XXXXXXXXX/messages?limit=10&id=XXXXXXXXX"
  },
  "_meta": {
    "_credits": {
      "used": 1,
      "balance": 1,
      "note": "Always"
    },
    "_cache": {
      "is_cached": false,
      "note": "Cache disabled for this endpoint"
    },
    "_rate_limits": {
      "limit_minute": 1000,
      "limit_day": 50000,
      "remaining_minute": 999,
      "remaining_day": 49999
    }
  }
}

Authorizations

Authorization
string
header
required

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

Path Parameters

account
string
required

The Account ID

chat_id
string
required

The ID of the chat (usually a fan's OnlyFans User ID)

Body

application/json
text
string
required

The message text content

Example:

"Hello!"

lockedText
boolean

Whether the text should be shown or hidden

Example:

true

price
integer

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

Example:

100

mediaFiles
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.

Example:
["ofapi_media_abc123", 1234567890]
previews
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.

Example:
["ofapi_media_abc123", 1234567890]

Response

Success

data
object
_pagination
object
_meta
object