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
Facebook✅message, pin, scheduled time. Only posts published through Upload-Post.
LinkedIn✅commentary (or text).
X✅Premium, within 30 minutes, fewer than 5 edits. The post ID changes.
YouTube✅title, description, tags, privacy, category, publishAt.
Google Business✅localPosts.patch.
Instagram❌No 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 / publishAt—NoYouTube. 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