FMFansMetric API

Posts

Create Post

Composes and publishes a new post on the creator's feed. Supports plain text, attached media from the vault or freshly uploaded files, paid (PPV) posts, scheduled posts, auto-expiring posts, and release-form tags. Requires permission api_posts_create.

https://public-api.fansmetric.com
POST/v1/{account_id}/posts
Bearer

Authorization

default
AuthorizationBearer <token>

Send your FansMetric API key as a Bearer token in the Authorization header.

In: header

Path Parameters

  • account_id*integer

    OnlyFans numeric account ID.

Request Body

application/json
  • text*string

    Post caption. HTML is preserved (<p>, <a>, etc.).

  • mediaFilesarray

    Array of OF vault media IDs (integer) to attach. Required if the post should include media.

  • pricestring

    If present and > 0, makes the post a paid (PPV) post, in USD.

  • previewstring

    When price > 0, the subset of mediaFiles IDs to show as the free preview.

  • rfTagstring

    Array of release-form tag IDs (string).

  • rfGueststring

    Array of tagged guest user IDs (integer).

  • rfPartnerstring

    Array of tagged partner user IDs (integer).

  • scheduledTimestring

    ISO timestamp to schedule the post for a future time. Omit to publish immediately.

  • expireDaysstring

    Number of whole days (integer) after publishing before the post is automatically removed from the feed. Must be between 1 and 30. Omit for a post that never expires.

Response Fields

  • data.idinteger

    OnlyFans post ID for the new post.

  • data.postedAtstring

    ISO timestamp when the post was published (or scheduled for).

  • data.textstring

    Rendered caption HTML.

  • data.rawTextstring

    Plain-text version of the caption.

  • data.authorobject

    Author summary (id, _view).

  • data.isMediaReadyboolean

    true once OnlyFans has finished transcoding all attached media.

  • data.canDeleteboolean

    Whether the caller can delete this post.

  • data.canEditboolean

    Whether the caller can edit this post.

  • dataobject | array

    Endpoint-specific payload. See the fields below for this route.

  • _meta._credits.usedinteger

    Credits consumed by this request (currently always 1).

  • _meta._rate_limits.limit_minuteinteger

    Maximum requests per minute for the organization.

  • _meta._rate_limits.remaining_minuteinteger

    Remaining requests in the current minute window.

  • _meta._rate_limits.limit_dayinteger

    Maximum requests per day for the organization.

  • _meta._rate_limits.remaining_dayinteger

    Remaining requests in the current day window.

curl --request POST "https://public-api.fansmetric.com/v1/100000001/posts" \
  --header "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "text": "<p>New exclusive set πŸ’–</p>",
  "mediaFiles": [1111111111, 2222222222, 3333333333],
  "preview": [1111111111],
  "price": 25,
  "expireDays": 3
}'

Response

200
{
"data":{
"id":9876543210
"postedAt":"2026-06-01T12:30:00+00:00"
"text":"<p>Hello, fans!</p>"
"rawText":"Hello, fans!"
"author":{
"id":12345678
"_view":"a"
}
"isMediaReady":true
"canDelete":true
"canEdit":true
"tipsAmount":"$0"
}
"_meta":{
"_credits":{
"used":1
}
"_rate_limits":{
"limit_minute":1000
"remaining_minute":999
"limit_day":50000
"remaining_day":49999
}
}
}