REST APIPATCH

Update Post

Update a scheduled post by sending only the fields you want to change; the API returns the full updated post object.

PATCHhttps://post.adaptlypost.com/post/api/v1/social-posts/:id

Update an existing post. All fields are optional, only send the fields you want to change. Returns the full updated post.

API Key (Bearer token)
Permission:posts.draftRoles and permissions

Editing a draft needs posts.draft. Editing a scheduled post needs posts.schedule. A post created by another member also needs posts.others, which Contributors do not have.

Body Parameters

ParameterTypeDescription
platformsPlatformType[]Target platforms
contentTypeContentTypeTEXT, IMAGE, VIDEO, CAROUSEL, or DOCUMENT. DOCUMENT is LinkedIn only: exactly one PDF, PPT, PPTX, DOC or DOCX file in mediaUrls, shown as a swipeable document
textstringPost text content
platformTextsPlatformText[]Per-platform text overrides
mediaUrlsstring[]URLs of uploaded media files
mediaAltTextsstring[]Alt text for each image, in the same order as mediaUrls. Max 1000 characters each; use an empty string to skip an image. Sent to X, Bluesky, Mastodon, LinkedIn, Facebook, Instagram and Threads. Pinterest uses the first one, cut to 500 characters. TikTok, YouTube and videos ignore it.
thumbnailUrlstringThumbnail URL for video posts
thumbnailTimestampMsnumberVideo frame to use as the thumbnail, in milliseconds from the start
platformThumbnailsPlatformThumbnail[]A different thumbnail per platform, as on create. Sending the list replaces every override; leaving it out keeps the stored ones
firstCommentsPlatformFirstComment[]First comments per platform, as on create. Sending the list replaces every stored comment and an empty list clears them; leaving it out keeps the stored ones
scheduledAtstringReschedule date (ISO 8601)
timezonestringIANA timezone
pageIdsstring[]Facebook pages to post to. Accepts either the account id or the pageId from /social-accounts
twitterConnectionIdsstring[]Twitter account connection IDs
twitterKeepLinksbooleanKeep links in the X text clickable, as on create. Leaving it out keeps the stored value
linkedinConnectionIdsstring[]LinkedIn account connection IDs
instagramConnectionIdsstring[]Instagram account connection IDs
tiktokConnectionIdsstring[]TikTok account connection IDs
youtubeConnectionIdsstring[]YouTube channel connection IDs
pinterestConnectionIdsstring[]Pinterest account connection IDs
blueskyConnectionIdsstring[]Bluesky account connection IDs
mastodonConnectionIdsstring[]Mastodon account connection IDs
threadsConnectionIdsstring[]Threads account connection IDs
pinterestConfigsPinterestConfig[]Settings for this platform, one object per account, each naming the connectionId it applies to (pageId for Facebook). See Platform Configs
tiktokConfigsTikTokConfig[]Settings for this platform, one object per account, each naming the connectionId it applies to (pageId for Facebook). See Platform Configs
instagramConfigsInstagramConfig[]Settings for this platform, one object per account, each naming the connectionId it applies to (pageId for Facebook). See Platform Configs
facebookConfigsFacebookConfig[]Settings for this platform, one object per account, each naming the connectionId it applies to (pageId for Facebook). See Platform Configs
youtubeConfigsYouTubeConfig[]Settings for this platform, one object per account, each naming the connectionId it applies to (pageId for Facebook). See Platform Configs
linkedinConfigsLinkedInConfig[]Settings for this platform, one object per account, each naming the connectionId it applies to (pageId for Facebook). See Platform Configs
All fields are optional. Only include the fields you want to update. The response returns the full updated post object.

Rescheduling into the past

Moving a scheduled post's scheduledAt more than a minute into the past returns 400 "The new scheduled time is in the past. Choose a time in the future". To publish it right away, use Publish Draft.

One Account per Platform

Only one account per platform is allowed per post. You cannot update a post to include multiple accounts on the same platform. This restriction is enforced to comply with platform Terms of Service.
Update a Social Post
curl --request PATCH \
  --url https://post.adaptlypost.com/post/api/v1/social-posts/post_xyz789 \
  --header 'Authorization: Bearer <api-key>' \
  --header 'Content-Type: application/json' \
  --data '{
    "text": "Updated post content!",
    "platforms": ["TWITTER", "LINKEDIN"],
    "scheduledAt": "2026-03-15T10:00:00Z",
    "timezone": "America/New_York",
    "twitterConnectionIds": ["conn_abc123"],
    "linkedinConnectionIds": ["conn_def456"]
  }'
200
{
  "id": "post_xyz789",
  "contentType": "TEXT",
  "text": "Updated post content!",
  "status": "SCHEDULED",
  "scheduledAt": "2026-03-15T10:00:00Z",
  "timezone": "America/New_York",
  "platforms": [
    {
      "id": "pp_001",
      "platform": "TWITTER",
      "status": "PENDING",
      "accountName": "@yourhandle"
    },
    {
      "id": "pp_002",
      "platform": "LINKEDIN",
      "status": "PENDING",
      "accountName": "Your Company"
    }
  ],
  "createdAt": "2026-03-14T11:59:00Z",
  "updatedAt": "2026-03-15T08:30:00Z"
}