This guide will give you a brief overview of how to compose posts with various elements using our API.

Please keep in mind that all of the below examples are meant to be sent as a POST request to our https://app.onlyfansapi.com/api/{account}/posts endpoint.

Looking for the developer-oriented documentation? Please refer to our API Reference.

Text-only posts

Simply want to send a regular text post? Use the following payload:

{
  "text": "The text of your post"
}

Post labels

Retrieving the account’s existing labels

Looking for the developer-oriented documentation? Please refer to our API Reference.

You can retrieve the account’s existing labels by sending a GET request to the https://app.onlyfansapi.com/api/{account}/posts/labels endpoint.

It will return a payload like:

[
  {
    "id": "archived",
    "name": "Archive",
    "type": "archived",
    "isClearInProgress": false,
    "postsCount": 0,
    "posts": []
  },
  {
    "id": "private_archived",
    "name": "Private Archive",
    "type": "private_archived",
    "isClearInProgress": false,
    "postsCount": 0,
    "posts": []
  },
  {
    "id": 123,
    "name": "My new label",
    "type": "custom",
    "isClearInProgress": false,
    "postsCount": 123,
    "posts": []
  }
]

You can then use the id of the label(s) to apply it to your post.

Creating a new label

Looking for the developer-oriented documentation? Please refer to our API Reference.

To create a new label, send a POST request to the https://app.onlyfansapi.com/api/{account}/posts/labels endpoint with the following payload:

{
  "name": "My new label"
}

It will then return a payload like:

{
  "data": {
    "id": 123,
    "name": "My new label",
    "type": "custom",
    "isClearInProgress": false,
    "postsCount": 0,
    "posts": []
  }
}

You can then use the id of the newly created label to apply it to your post.

Adding label(s) to your post

To add label(s) to your post, you can use the labels field in your payload. You can specify multiple labels by providing an array of label IDs.

{
  "text": "The text of your post",
  "labelIds": [123, 456]
}

Adding media

Please refer to our dedicated guide on uploading media for more information on how to upload media files, and how to include them in your posts.

Adding polls

Both regular polls and quizzes are supported in our API. You can choose which type of poll to include in your post by setting the votingType field in your payload to either poll or quiz.

Regular polls

To include a regular poll in your post, set the votingType field to poll.

Specifying the options
The poll’s options can be set by using the votingOptions field. It should be an array of strings. You must provide at least 2 options.

Setting a due date (optional)
You can set a due date by using the votingDue field, which specifies the number of days until the poll expires. Valid values are 1, 3, 7, or 30 days. If not specified, the poll will never expire.

{
  "text": "The text of your post",
  "votingType": "poll",
  "votingOptions": ["Option 1", "Option 2"],
  "votingDue": 7
}

Quizzes

To include a quiz in your post, set the votingType field to quiz.

Specifying the options
The quiz options can be set by using the votingOptions field. It should be an array of strings. You must provide at least 2 options.

Specifying the correct answer
Specify the correct answer by using the votingCorrectIndex field. It should be an integer representing the index of the correct answer in the votingOptions array (starting from 0). For example, if the correct answer is the first option, set it to 0.

Setting a due date (optional)
You can set a due date by using the votingDue field, which specifies the number of days until the quiz expires. Valid values are 1, 3, 7, or 30 days. If not specified, the quiz will never expire.

{
  "text": "The text of your post",
  "votingType": "quiz",
  "votingOptions": ["Option 1", "Option 2"],
  "votingCorrectIndex": 0,
  "votingDue": 7
}

Setting an expiration date

To set an expiration date for your post, you can use the expireDays field in your payload. The value must be 1, 3, 7 or 30 days.

{
  "text": "The text of your post",
  "expireDays": 7
}

Scheduling posts

To schedule your post, you can use the scheduledDate field in your payload. The value must be a valid date-time string formatted as 2025-06-03T15:30:00.000Z (ISO 8601 format) in UTC timezone.

{
  "text": "The text of your post",
  "scheduledDate": "2023-10-01T12:00:00Z"
}

Saving a post for later

To save a post for later, you can use the saveForLater field in your payload. Set it to true to save the post without publishing it immediately. You can then find your post here: https://onlyfans.com/saved-for-later-posts

{
  "text": "The text of your post",
  "saveForLater": true
}

Setting a fundraising target

To include a fundraising target in your post, you can use the fundRaisingTargetAmount and fundRaisingTipsPresets fields in your payload.

Setting a target amount
The fundRaisingTargetAmount field specifies the target amount for your fundraising post. It must be a at least 10 representing the amount in your account’s currency.

Setting tip presets
The fundRaisingTipsPresets field allows you to specify the preset tip amounts that users can choose from. It should be an array of integers representing the amounts in your account’s currency.

Tip preset rules

  • You must provide at least one preset value.
  • Each preset value must be at least 5.
  • Each preset value may not be more than the fundRaisingTargetAmount.
{
  "text": "The text of your post",
  "fundRaisingTargetAmount": 30,
  "fundRaisingTipsPresets": [5, 10, 15]
}

Tagging other OnlyFans creators

To tag other OnlyFans creators in your post, you can use the rfTag field in your payload. You can specify multiple creators by providing an array of their OnlyFans user IDs.

{
  "text": "The text of your post",
  "rfTag": [123, 456]
}

How to find the OnlyFans user ID of a creator?

  • If you’ve connected the relevant creator account to OnlyFans API, you can use our List Accounts endpoint.
  • Not connected, but you know the creator’s username? You can use our Get Profile Details endpoint.
  • Not connected and don’t know the username? You can use our Search Profiles endpoint.

Formatting your post text

Please refer to our dedicated guide on text formatting for more information on how to format your post text, including text styles, colors, and more.