Posts

Reschedule or edit a post

Posts in scheduled, ready, draft, or failed state can be modified. A draft can be promoted to scheduled by setting publish_mode: "scheduled" and scheduled_for. Captions and platform options are merged shallowly.

Captions are checked against the platform's limit (for example Snapchat Spotlight's 160 characters) and rejected with 400 CAPTION_TOO_LONG instead of failing later at publish time.

If the post failed with CAPTION_TOO_LONG, fixing its caption re-queues it automatically: drafts stay drafts, scheduled posts keep their time if it is still in the future, and anything else publishes immediately. Pass publish_mode / scheduled_for to choose explicitly. Check status in the response.

patch/posts/{post_id}

Request

  • Base URL: https://api.shortsync.app/v1
  • URL: https://api.shortsync.app/v1/posts/{post_id}
  • Auth: HTTP bearer

Request body

publish_mode'immediate' | 'scheduled' | 'draft'
scheduled_forstring date-time
captionstring

New caption. Applies to this post's platform. Ignored if the post is on YouTube (YouTube reads title and description instead).

titlestring

New title (YouTube, Pinterest, Tumblr).

descriptionstring

New long-form description (YouTube, Pinterest, Tumblr).

first_commentstring

New first comment. Ignored on platforms that don't support first comments.

first_comment_enabledboolean

false skips the first comment on this post's platform; true turns it back on.

custom_thumbnail_urlstring

Public https:// URL to a cover/thumbnail image (jpeg, png, webp, or gif, max 20 MB). ShortSync downloads the image, stores it in the workspace's bucket, and attaches it to the post's video settings so every unpublished post on the same upload uses it at publish time. Send an empty string to remove the current custom thumbnail. SSRF guards: https only, public IPs. Mutually exclusive with thumbnail_timestamp_ms and custom_thumbnail_upload_id.

thumbnail_timestamp_msinteger

Extract a frame from the post's linked video at this timestamp (milliseconds from the start) and store it as the video's "Thumbnail from Timeline" (generated_thumbnail_url), matching what the dashboard scrubber writes. Video-only: rejects text posts, image uploads, and carousel parents. Must be within the video's duration.

Publish-time behavior: this does NOT overwrite a custom_thumbnail_url the user already set. Platforms that read custom_thumbnail_url || generated_thumbnail_url (YouTube, Pinterest, and others) fall back to this timeline frame when no custom cover is set. Instagram reads only the custom column, so a timeline frame alone will not affect the Instagram cover — pass custom_thumbnail_url or custom_thumbnail_upload_id for that. To override an existing custom cover with the timeline frame, first clear the custom by sending custom_thumbnail_url: "", then set the timestamp.

Mutually exclusive with custom_thumbnail_url and custom_thumbnail_upload_id.

custom_thumbnail_upload_idstring

upload_id returned by POST /uploads for an image file in the same workspace. ShortSync finalizes the upload if needed, copies the bytes into the post's thumbnail slot, and then deletes the source upload so it does not linger as an unattached draft. The thumbnail is stored independently — deleting the source does not affect the cover. Use this instead of custom_thumbnail_url when the image is already uploaded, to avoid a public re-host round-trip. Mutually exclusive with custom_thumbnail_url and thumbnail_timestamp_ms.

Response

Updated.

idstring required
workspace_idstring required
upload_idstring nullable
platform'instagram' | 'tiktok' | 'youtube' | 'facebook' | 'snapchat' | 'pinterest' | 'threads' | 'twitter' | 'bluesky' | 'linkedin' | 'reddit' | 'telegram' | 'mastodon' | 'discord' | 'tumblr' | 'pixelfed' | 'google_business' required
connection_idstring required
status'processing' | 'ready' | 'scheduled' | 'published' | 'failed' | 'deleted' | 'skipped_inactive_subscription' required
publish_mode'immediate' | 'scheduled' | 'draft' required
scheduled_forstring date-time nullable
published_atstring date-time nullable
platform_urlstring uri nullable

Public URL of the published post, when available.

captionstring nullable
titlestring nullable
descriptionstring nullable
first_commentstring nullable
created_atstring date-time required
updated_atstring date-time

Changes

No recorded changes to this operation across all 1 revision of this API.