Update a post by id in the request body. Legacy variant — prefer the path-param update.
id in the request body. The handler mirrors changes into Late: creates, updates, or deletes the Late post depending on whether account_ids and content remain valid. If account_ids changes, the old Late post is deleted and a fresh one is created (Late binds posts to specific account profiles).
Despite the legacy bulk wrapper name in the routing code, this endpoint updates exactly one post per call. Prefer updateSocialPost (PUT /api/calendar/posts/{postId}) for new integrations — this body-ID form is kept for legacy clients.
media_items: [] clears attachments; hashtags: [] clears hashtags. Omitted fields are coerced to default empties, not left untouched.Validation:content must be non-emptyaccount_ids set is empty and content is empty, the Late post is deleted entirely and late_post_id is cleared locally.Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
All fields are replaced (not partial-merged). Re-send media_items: [] to clear attachments; omitting it is also treated as []. When accounts change, the server deletes and recreates the Late post since Late binds posts to specific account profiles.
Post body text. Required and non-empty.
1Post ID to update.
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$Hashtags without the leading #. Appended to content before sending to Late since LinkedIn has no separate hashtag field.
Legacy channel list, e.g. ['linkedin']. Fallback targeting when account_ids is empty.
ISO timestamp. Required when status === 'scheduled'. Must be in the future (1-minute grace window).
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$Target social account IDs. If empty and channels includes linkedin, the server falls back to the caller's first LinkedIn account.
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$Defaults to draft. scheduled queues with Late; posted is for importing already-published posts from onboarding.
draft, scheduled, posted Optional media attachments. Each URL must come from uploadSocialMedia.
Post updated.
Canonical social post row.