Skip to main content

Edit a Published Post

Update caption or metadata on a post that is already live. Fields you omit are left unchanged.

Platform support

PlatformEditNotes
Facebookmessage, pin, scheduled time. Only posts published through Upload-Post.
LinkedIncommentary (or text).
XPremium, within 30 minutes, fewer than 5 edits. The post ID changes.
YouTubetitle, description, tags, privacy, category, publishAt.
Google BusinesslocalPosts.patch.
InstagramNo edit API for published media.
TikTok
Threads

Credential channels that implement edit (Discord, Telegram, Mastodon, Hashnode, Whop, …) are also accepted.

Endpoint

POST /api/uploadposts/posts/edit

Alias: POST /api/uploadposts/posts/action with "action": "edit" (LinkedIn).

Headers

NameValueDescription
AuthorizationApikey your-api-key-hereYour API key for authentication
Content-Typeapplication/jsonRequest body format

Body Parameters (JSON)

NameTypeRequiredDescription
platformStringYesfacebook, linkedin, x, youtube, google_business, plus credential channels that support edit.
userStringYesProfile username.
post_idStringYesPlatform post ID (YouTube also accepts video_id).
message / text / commentaryStringNoNew caption. Facebook: message. X: text. LinkedIn: commentary.
is_pinnedBooleanNoFacebook: pin/unpin.
scheduled_publish_timeStringNoFacebook. Unix timestamp in seconds.
facebook_page_idStringNoFacebook Page if not the profile default.
linkedin_visibilityStringNoLinkedIn visibility on edit.
linkedin_disable_reshareBooleanNoLinkedIn.
title / description / tags / privacyStatus / categoryId / publishAtNoYouTube. Aliases with youtube_* prefix are accepted.

Example Request

curl -X POST https://api.upload-post.com/api/uploadposts/posts/edit \
-H 'Authorization: Apikey your-api-key-here' \
-H 'Content-Type: application/json' \
-d '{
"platform": "facebook",
"user": "my-profile",
"post_id": "1234567890",
"message": "Updated caption"
}'

X:

curl -X POST https://api.upload-post.com/api/uploadposts/posts/edit \
-H 'Authorization: Apikey your-api-key-here' \
-H 'Content-Type: application/json' \
-d '{
"platform": "x",
"user": "my-profile",
"post_id": "1234567890123456789",
"text": "Corrected tweet"
}'

Successful Response (200 OK)

Facebook:

{
"success": true,
"platform": "facebook",
"post_id": "1234567890",
"updated": ["message"]
}

X returns a new post_id. Use that id from now on; the previous id stays in edit_history_post_ids.

{
"success": true,
"platform": "x",
"post_id": "9876543210987654321",
"previous_post_id": "1234567890123456789",
"edit_history_post_ids": ["1234567890123456789", "9876543210987654321"],
"url": "https://x.com/handle/status/9876543210987654321",
"message": "X assigns a new post id to every edit. Use the returned post_id from now on; the previous id stays in edit_history_post_ids."
}

LinkedIn:

{
"success": true,
"message": "LinkedIn post updated.",
"post_id": "urn:li:share:123",
"url": "https://www.linkedin.com/feed/update/urn:li:share:123/"
}

Error Responses

  • 400 Bad Request — missing fields, nothing to update, or an unsupported platform (e.g. instagram, tiktok).
  • 403 Forbidden — the connected account is not authorized to edit the post.
  • 404 Not Found — no post found for the given post_id.
  • 500 Internal Server Error