v1Resources/Posts/patchUpdate a post
Update a post
Updates an editable post (draft, scheduled, error, or active) and reconciles its platform submissions to match. If the post is not scheduled and not saved as a draft, this can publish or change what's already live on its platforms.
patch
posts:write/api/v1/posts/{id}Query parameters
idstringrequired
The post to update.
Request body
locationIdstringoptional
The location to post to. Provide this or clientId.
clientIdstringoptional
The client to post to at brand level. Provide this or locationId.
namestringoptional
Internal name/label for the post. Required, non-empty.
postTypestring (announcement | event | offer)optional
Post type. event and offer are Google-only.
platformsarray of string (google | facebook | instagram | x | linkedin | pinterest | mastodon | bluesky | threads | tiktok)optional
Target platforms. At least one is required.
connectionIdsarray of stringoptional
Explicit connection ids to publish through, instead of resolving platforms to connections.
messageGooglestringoptional
Caption for Google. Required when google is selected, unless draft.
messageFacebookstringoptional
Shared social caption for every non-Google selected platform. Required unless draft.
ctaTypestring (learn_more | sign_up | order_online | book | buy | call_now)optional
Call-to-action type.
ctaUrlstringoptional
Call-to-action destination URL.
mediaUrlsarray of objectoptional
Media to attach, one entry per platform attachment.
urlstringoptional
platformstringoptional
typestring (image | video)optional
eventTitlestringoptional
Event or offer title. Required for a Google event/offer, unless draft.
eventStartAtstringoptional
Event or offer start time, as an ISO 8601 timestamp. Required for a Google event/offer, unless draft.
eventEndAtstringoptional
Event or offer end time, as an ISO 8601 timestamp. Must be after the start.
offerTermsstringoptional
Offer terms.
offerCouponCodestringoptional
Offer coupon code.
offerRedeemUrlstringoptional
Offer redemption URL.
scheduledForstringoptional
Publish at this future ISO 8601 timestamp instead of immediately.
draftbooleanoptional
Save without publishing. Skips required-field checks; structural checks (limits, media rules) still apply.
Response
dataobjectoptional
A requested platform with no active connection, or a required field the post needs before it can go live, never fails this call — the post is still saved. When either gap exists, status is "no_connection" or "incomplete" and the post rides underneath as post.{id,status}; on a clean publish the top-level id/status describe the post directly.
idstringoptional
Unique identifier for the post.
statusstringoptional
Lifecycle status of the post: draft, scheduled, active, or error.
missingFieldsarray of stringoptional
Fields still needed before this post can go live, if any.
missingPlatformsarray of stringoptional
Requested platforms with no active connection, if any.
scopestring (location | client)optional
Whether the connection/field gap applies at the location or client level.
postobjectoptional
The post that was created or updated.
idstringoptional
Unique identifier for the post.
statusstringoptional
Lifecycle status of the post: draft, scheduled, active, or error.
Errors
400The request is missing a required parameter or is otherwise malformed.
401Missing, invalid, expired, or revoked API key.
403The key lacks the required scope, or isn't authorized for this client/location.
404The resource wasn't found, or doesn't belong to your agency.
422The request is missing a required parameter or is otherwise malformed.
429Too many requests. Retry after the number of seconds in the Retry-After header.
patch/api/v1/posts/{id}
Your API key
id *
Request body
{
"data": {
"id": "cm_post_abc123",
"name": "Fall Special Announcement (updated)",
"type": "announcement",
"status": "scheduled",
"postType": "announcement",
"clientId": "cm_client_1",
"locationId": "cm_loc_1",
"platforms": [
"google",
"facebook"
],
"messageGoogle": "Join us this weekend — now 25% off all services!",
"messageFacebook": "Join us this weekend — now 25% off all services!",
"ctaType": "learn_more",
"ctaUrl": "https://acmedental.example.com/fall-special",
"ctaUrlFacebook": null,
"xThread": false,
"ctaJson": {
"ctaType": "learn_more",
"ctaUrl": "https://acmedental.example.com/fall-special",
"ctaUrlFacebook": null,
"xThread": false
},
"mediaUrls": [
{
"url": "https://cdn.synup.com/uploads/a1/promo.jpg",
"platform": "facebook",
"type": "image"
}
],
"eventTitle": null,
"eventStartAt": null,
"eventEndAt": null,
"offerTerms": null,
"offerCouponCode": null,
"offerRedeemUrl": null,
"scheduledFor": "2026-02-10T15:00:00.000Z",
"createdAt": "2026-01-20T09:12:00.000Z",
"performance": []
}
}