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.
PATCH
https://post.adaptlypost.com/post/api/v1/social-posts/:idUpdate an existing post. All fields are optional, only send the fields you want to change. Returns the full updated post.
API Key (Bearer token)
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
| Parameter | Type | Description |
|---|---|---|
platforms | PlatformType[] | Target platforms |
contentType | ContentType | TEXT, 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 |
text | string | Post text content |
platformTexts | PlatformText[] | Per-platform text overrides |
mediaUrls | string[] | URLs of uploaded media files |
mediaAltTexts | string[] | 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. |
thumbnailUrl | string | Thumbnail URL for video posts |
thumbnailTimestampMs | number | Video frame to use as the thumbnail, in milliseconds from the start |
platformThumbnails | PlatformThumbnail[] | A different thumbnail per platform, as on create. Sending the list replaces every override; leaving it out keeps the stored ones |
firstComments | PlatformFirstComment[] | 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 |
scheduledAt | string | Reschedule date (ISO 8601) |
timezone | string | IANA timezone |
pageIds | string[] | Facebook pages to post to. Accepts either the account id or the pageId from /social-accounts |
twitterConnectionIds | string[] | Twitter account connection IDs |
twitterKeepLinks | boolean | Keep links in the X text clickable, as on create. Leaving it out keeps the stored value |
linkedinConnectionIds | string[] | LinkedIn account connection IDs |
instagramConnectionIds | string[] | Instagram account connection IDs |
tiktokConnectionIds | string[] | TikTok account connection IDs |
youtubeConnectionIds | string[] | YouTube channel connection IDs |
pinterestConnectionIds | string[] | Pinterest account connection IDs |
blueskyConnectionIds | string[] | Bluesky account connection IDs |
mastodonConnectionIds | string[] | Mastodon account connection IDs |
threadsConnectionIds | string[] | Threads account connection IDs |
pinterestConfigs | PinterestConfig[] | Settings for this platform, one object per account, each naming the connectionId it applies to (pageId for Facebook). See Platform Configs |
tiktokConfigs | TikTokConfig[] | Settings for this platform, one object per account, each naming the connectionId it applies to (pageId for Facebook). See Platform Configs |
instagramConfigs | InstagramConfig[] | Settings for this platform, one object per account, each naming the connectionId it applies to (pageId for Facebook). See Platform Configs |
facebookConfigs | FacebookConfig[] | Settings for this platform, one object per account, each naming the connectionId it applies to (pageId for Facebook). See Platform Configs |
youtubeConfigs | YouTubeConfig[] | Settings for this platform, one object per account, each naming the connectionId it applies to (pageId for Facebook). See Platform Configs |
linkedinConfigs | LinkedInConfig[] | 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"
}