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.comAuthorization
defaultAuthorizationBearer <token>Send your FansMetric API key as a Bearer token in the Authorization header.
In: header
Path Parameters
account_id*integerOnlyFans numeric account ID.
Request Body
application/jsontext*stringPost caption. HTML is preserved (
<p>,<a>, etc.).mediaFilesarrayArray of OF vault media IDs (integer) to attach. Required if the post should include media.
pricestringIf present and
> 0, makes the post a paid (PPV) post, in USD.previewstringWhen
price > 0, the subset ofmediaFilesIDs to show as the free preview.rfTagstringArray of release-form tag IDs (string).
rfGueststringArray of tagged guest user IDs (integer).
rfPartnerstringArray of tagged partner user IDs (integer).
scheduledTimestringISO timestamp to schedule the post for a future time. Omit to publish immediately.
expireDaysstringNumber 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.idintegerOnlyFans post ID for the new post.
data.postedAtstringISO timestamp when the post was published (or scheduled for).
data.textstringRendered caption HTML.
data.rawTextstringPlain-text version of the caption.
data.authorobjectAuthor summary (
id,_view).data.isMediaReadybooleantrueonce OnlyFans has finished transcoding all attached media.data.canDeletebooleanWhether the caller can delete this post.
data.canEditbooleanWhether the caller can edit this post.
dataobject | arrayEndpoint-specific payload. See the fields below for this route.
_meta._credits.usedintegerCredits consumed by this request (currently always
1)._meta._rate_limits.limit_minuteintegerMaximum requests per minute for the organization.
_meta._rate_limits.remaining_minuteintegerRemaining requests in the current minute window.
_meta._rate_limits.limit_dayintegerMaximum requests per day for the organization.
_meta._rate_limits.remaining_dayintegerRemaining requests in the current day window.
| Field | Type | Description |
|---|---|---|
| data.id | integer | OnlyFans post ID for the new post. |
| data.postedAt | string | ISO timestamp when the post was published (or scheduled for). |
| data.text | string | Rendered caption HTML. |
| data.rawText | string | Plain-text version of the caption. |
| data.author | object | Author summary (id, _view). |
| data.isMediaReady | boolean | true once OnlyFans has finished transcoding all attached media. |
| data.canDelete | boolean | Whether the caller can delete this post. |
| data.canEdit | boolean | Whether the caller can edit this post. |
| data | object | array | Endpoint-specific payload. See the fields below for this route. |
| _meta._credits.used | integer | Credits consumed by this request (currently always 1). |
| _meta._rate_limits.limit_minute | integer | Maximum requests per minute for the organization. |
| _meta._rate_limits.remaining_minute | integer | Remaining requests in the current minute window. |
| _meta._rate_limits.limit_day | integer | Maximum requests per day for the organization. |
| _meta._rate_limits.remaining_day | integer | 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