The Only API docs
Messaging

Send a DM or PPV

Send a single DM. For OnlyFans, mediaFiles accepts permanent integer photo IDs or the complete media object returned by a fresh upload. Uploading alone does not create a vault…

POST
/accounts/{of_user_id}/chats/{with_user_id}/messages

Send a single DM. For OnlyFans, mediaFiles accepts permanent integer photo IDs or the complete media object returned by a fresh upload. Uploading alone does not create a vault entry. After a Feed succeeds, reuse its permanent media[].id values instead of uploading again or reusing consumed temporary upload objects. price: 0 is free; a positive price creates PPV. Requires allow_of_write_actions. A timeout after submission may be ambiguous; do not blindly repeat the send. See Messaging & mass DM. The CRM route supports Fansly text/price sends, but the current Fansly implementation does not forward mediaFiles.

X-API-Key<token>

Your CRM panel API key

In: header

Path Parameters

of_user_id*string

Creator account ID of the connected account (OnlyFans or Fansly). Use GET /accounts to list connected accounts and their IDs.

with_user_id*string

The fan's user ID.

Header Parameters

X-Proxy?string

Proxy URL — HTTP or SOCKS5 (e.g. http://user:pass@host:port or socks5://user:pass@host:port). Optional on post-connection routes, where it overrides the proxy saved at login time. Required on the connection routes (POST /accounts/login, POST /accounts/login/cookies, POST /accounts/login/verify-otp) for OnlyFans accounts; optional for Fansly.

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X POST "https://example.com/accounts/string/chats/string/messages" \  -H "Content-Type: application/json" \  -d '{    "text": "string"  }'
{  "message": "string",  "success": true}