API Keys
Banking
Connect OnlyFans Account
Mass Messaging
Media Vault
Media Vault Lists
Notifications
Payouts
Post Comments
Post Labels
Posts
Public Profiles
Saved For Later (Messages)
Saved For Later (Posts)
Statistics | Reach
Statistics | Statements
Tracking Links
Transactions
Trial Links
Users
Chats
Send Message
Send a new message to a chat.
POST
/
api
/
{account}
/
chats
/
{chat_id}
/
messages
Send Message
Copy
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
]
}'
Copy
{
"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
You can retrieve your token by visiting the OnlyFansAPI Console and clicking API Keys -> Create API Key.
Path Parameters
The Account ID
The ID of the chat (usually a fan's OnlyFans User ID)
Body
application/json
Response
200
application/json
Success
The response is of type object
.
Send Message
Copy
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
]
}'
Copy
{
"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
}
}
}
Assistant
Responses are generated using AI and may contain mistakes.