Update Post
Edit an existing post. Fansly replaces the full post on edit, so send the complete desired state — text, mediaFiles, wallIds, expiresAt — not just the fields you are changing. Omitting mediaFiles removes the post's media; any provided media is re-registered and replaces the current attachments.
Attached media can be gated with any combination of the requirePurchase, requireSubscription, and requireFollow options (they stack), with an optional per-media free preview via previews — identical to the Send Post endpoint. Re-send the gating on edit; omitting it re-registers the media ungated.
Authorization
default Get your API Key from OnlyFansAPI Console - https://app.onlyfansapi.com/api-keys
In: header
Path Parameters
The Fansly Account ID
The Fansly post ID.
Request Body
application/json
The post text content. Required unless mediaFiles is provided.
Media to attach, as fansly_media_ upload IDs returned by the Upload Media endpoint. A single item is attached on its own; multiple are grouped into a bundle. Replaces the post's current attachments.
Wall IDs the post should be published to. Refer to the List Walls endpoint.
Wall IDs (from wallIds) the post should be pinned on.
Unix timestamp in milliseconds when the post should expire. Keep empty for no expiration.
For You Page behavior: 0 = post to the FYP if the post meets the requirements (default), 4 = do not post to the FYP.
0 | 4Require the fan to purchase (unlock) the attached media. Requires price. Combinable with requireSubscription / requireFollow.
Unlock price for requirePurchase, in Fansly's smallest unit — 1000 = $1.00 (e.g. 10000 = $10.00). Required when requirePurchase is true.
Require the fan to be subscribed to view the attached media. Combinable with requirePurchase / requireFollow.
Restrict requireSubscription to a single subscription tier. Tier IDs come from the List Subscription Tiers endpoint. Omit for any tier.
Require the fan to follow the account to view the attached media. Combinable with requirePurchase / requireSubscription.
Free previews for attached media, as a map of a mediaFiles handle to a fansly_media_ preview upload. Each preview is shown unlocked while its (gated) media is locked. Only include media that should have a preview.
Response Body
application/json
curl -X PUT "https://app.onlyfansapi.com/api/fansly/fansly_acct_XXXXXXXXXXXXXXX/posts/400000000000000001" \ -H "Content-Type: application/json" \ -d '{}'{
"data": {
"id": "400000000000000001",
"accountId": "800000000000000001",
"content": "Hello everyone! (edited)",
"fypFlags": 0,
"inReplyTo": null,
"inReplyToRoot": null,
"createdAt": 1784297503,
"expiresAt": 1784301052000,
"attachments": [
{
"postId": "400000000000000001",
"pos": 0,
"contentType": 1,
"contentId": "500000000000000001",
"deletedAt": null
}
],
"postReplyPermissionFlags": []
},
"_meta": {
"_credits": {
"used": 1,
"balance": 10055789,
"note": "Always"
},
"_cache": {
"is_cached": false,
"note": "Cache disabled for this endpoint"
},
"_rate_limits": {
"limit_minute": 5000,
"limit_day": null,
"remaining_minute": 4999,
"remaining_day": null,
"notice": "We have decided to remove our daily rate limits. Please remove any references to these in your integrations."
}
}
}