We just released our native n8n integration!ยป Try now
OnlyFans API
Chat Messages

Send Message

Send a new message to a chat.

POST
/api/{account}/chats/{chat_id}/messages
AuthorizationBearer <token>

Get your API Key from OnlyFansAPI Console - https://app.onlyfansapi.com/api-keys

In: header

Path Parameters

account*string

The Account ID

chat_id*string

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

Request Body

application/json

text*string

The message text content

replyToMessageId?integer

Mark this message as a reply to another (can be either your own, or the recipient's)

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<file[]|string>

Direct file uploads, OFAPI ofapi_media_ IDs, or OF vault IDs. Will be hidden if price is provided.

previews?array<file[]|string[]|int>

Direct file uploads, OFAPI ofapi_media_ IDs, OF vault IDs, or integer indices referencing uploaded files in mediaFiles. Will be shown if price is provided.

rfTag?string

Array of OnlyFans Creator User IDs to tag in your message

rfPartner?string

Array of OnlyFans Release Form Partners IDs to tag in your message

rfGuest?string

Array of OnlyFans Release Form Guest IDs to tag in your message

Response Body

application/json

application/json

curl -X POST "https://app.onlyfansapi.com/api/acct_XXXXXXXXXXXXXXX/chats/123/messages" \  -H "Content-Type: application/json" \  -d '{    "text": "Hello!"  }'
{
  "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
    }
  }
}
{
  "error": "VALIDATION_ERROR",
  "message": "The text field is required.",
  "description": "The request parameters failed validation.",
  "errors": {
    "text": [
      "The text field is required."
    ]
  },
  "_meta": {
    "_credits": {
      "used": 0,
      "balance": 9554,
      "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
    }
  }
}