Posts

Update a draft or scheduled post

Changed on

Requires the posts.draft permission.

patch/social-posts/{id}

Request

  • Base URL: https://post.adaptlypost.com/post/api/v1
  • URL: https://post.adaptlypost.com/post/api/v1/social-posts/{id}
  • Auth: HTTP bearer

Path parameters

idstring required

Post ID

Headers

X-Workspace-Idstring

The workspace to act in, for OAuth sign-ins that reach several workspaces. Take the id from GET /workspaces. Without it the call lands in the default workspace. A workspace the caller cannot reach answers 403 with code: workspace_access_denied. An API key belongs to one workspace: send its own id or leave the header out

Request body

platformsPlatformType[]
contentType'TEXT' | 'IMAGE' | 'VIDEO' | 'CAROUSEL' | 'DOCUMENT'

CAROUSEL takes 2 or more items in mediaUrls, up to 4 on TWITTER, BLUESKY and MASTODON, 5 on PINTEREST, 10 on INSTAGRAM, FACEBOOK and THREADS, 20 on LINKEDIN, 30 on TUMBLR and 35 on TIKTOK. A TIKTOK carousel takes JPEG or WebP photos only. INSTAGRAM and THREADS accept images and videos in the same carousel; every other platform takes images only, and YOUTUBE has no carousel. DOCUMENT publishes one PDF, PPT, PPTX, DOC or DOCX file (max 100 MB, 300 pages) as a LinkedIn document post, and is LinkedIn only: any other platform in the same request is rejected with a 400

textstring

Post text/caption for all platforms. On LinkedIn, mention a company page with @Page Name, using the page name exactly as LinkedIn shows it

mediaUrlsstring[]

Public HTTPS URLs of media to attach. Use POST /upload-urls to upload files first. A DOCUMENT post takes exactly one PDF, PPT, PPTX, DOC or DOCX URL, and a document file is only accepted on a DOCUMENT post. One uploaded URL may be reused across any number of posts; the file is kept until the last post referencing it has published. After publishing, the post's mediaUrls may hold expiring platform CDN links, so reuse the publicUrl you uploaded, not a URL read back from a published post

mediaAltTextsstring[]

Alt text for each image, in the same order as mediaUrls (max 1000 characters each, empty string to skip one). Sent to X, Bluesky, Mastodon, Tumblr, LinkedIn, Facebook, Instagram, Threads and Pinterest (first image only, max 500 characters). TikTok, YouTube and Google Business Profile have no alt text field

thumbnailUrlstring

Video thumbnail as an https URL or an image data URI, used on every platform that takes one unless platformThumbnails overrides it

thumbnailTimestampMsnumber

Video frame timestamp (ms) to use as the thumbnail, used by INSTAGRAM, PINTEREST and TIKTOK unless platformThumbnails overrides it

scheduledAtstring date-time

New schedule time (ISO 8601). Moving a SCHEDULED post to a time in the past returns 400; to publish it now, call POST /social-posts/{id}/publish without scheduledAt

timezonestring
pageIdsstring[]

Facebook pages to post to. Accepts either the account id or the pageId returned by /social-accounts

tiktokConnectionIdsstring[]
threadsConnectionIdsstring[]
instagramConnectionIdsstring[]
twitterConnectionIdsstring[]
blueskyConnectionIdsstring[]
mastodonConnectionIdsstring[]
googleBusinessConnectionIdsstring[]

Google Business Profile locations to post to, by the account id from /social-accounts. A location without an entry in googleBusinessConfigs gets a STANDARD update

tumblrConnectionIdsstring[]
linkedinConnectionIdsstring[]
pinterestConnectionIdsstring[]
youtubeConnectionIdsstring[]
twitterKeepLinksboolean

Keep links in the X text clickable. X charges over 10 times more for a post with a link, so by default we break every link in X text (example.com becomes example. com). Only AppSumo lifetime deals can turn this on, and a kept link costs 20 credits instead of 2. true on any other plan returns a 400; it is ignored when the X text has no link

Example request

{
  "facebookConfigs": [
    {
      "textFormatPresetId": "106018623298955"
    }
  ],
  "googleBusinessConfigs": [
    {
      "eventStart": "2026-10-01T18:00",
      "eventEnd": "2026-10-01T21:00"
    }
  ]
}

Response

Updated post

idstring
createdAtstring date-time
updatedAtstring date-time
userIdstring
contentType'TEXT' | 'IMAGE' | 'VIDEO' | 'CAROUSEL' | 'DOCUMENT'

CAROUSEL takes 2 or more items in mediaUrls, up to 4 on TWITTER, BLUESKY and MASTODON, 5 on PINTEREST, 10 on INSTAGRAM, FACEBOOK and THREADS, 20 on LINKEDIN, 30 on TUMBLR and 35 on TIKTOK. A TIKTOK carousel takes JPEG or WebP photos only. INSTAGRAM and THREADS accept images and videos in the same carousel; every other platform takes images only, and YOUTUBE has no carousel. DOCUMENT publishes one PDF, PPT, PPTX, DOC or DOCX file (max 100 MB, 300 pages) as a LinkedIn document post, and is LinkedIn only: any other platform in the same request is rejected with a 400

textstring
scheduledAtstring date-time
timezonestring
status'DRAFT' | 'SCHEDULED' | 'PENDING' | 'PUBLISHING' | 'COMPLETED' | 'PARTIAL_FAILURE' | 'FAILED'
thumbnailUrlstring
thumbnailTimestampMsnumber

Video frame timestamp (ms) used as the thumbnail

mediaUrlsstring[]

The media as submitted, shared by every platform entry. See mediaUrls on PostPlatform for how these change after publishing

mediaAltTextsstring[]
recurringPostIdstring

The recurring post this post is an occurrence of

occurrenceAtstring date-time

The slot of the series this post fills. Stays the same when the post is rescheduled

Changes

    • info

      added the new optional request property //

    • info

      added the new optional request property //

    • info

      added the optional property // to the response with the status

    • info

      added the optional property // to the response with the status