changedInput schema / properties / facebookConfigs / description
Previous value: -"Facebook per-page config with post type and video title. pageId must match an entry in pageIds"New value: +"Facebook per-page config: post type, shareToStory, video title and text background. pageId must match an entry in pageIds"
addedInput schema / properties / googleBusinessConfigs
Added value: +{
+ "description": "Google Business Profile per-location config: update, event or offer, plus a button. connectionId must match an entry in googleBusinessConnectionIds. GOOGLE_BUSINESS takes TEXT or IMAGE with one JPEG or PNG image up to 5 MB, and text up to 1500 characters",
+ "items": {
+ "$ref": "#/properties/posts/items/properties/googleBusinessConfigs/items"
+ },
+ "type": "array"
+}
addedInput schema / properties / googleBusinessConnectionIds
Added value: +{
+ "description": "Google Business Profile locations to post to, by the account id from list_accounts. A location without an entry in googleBusinessConfigs gets a STANDARD update",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+}
changedInput schema / properties / instagramConfigs / description
Previous value: -"Instagram per-connection config to set post type (FEED, REEL, STORY) and publish a reel as a trial reel"New value: +"Instagram per-connection config: post type (FEED, REEL, STORY), shareToStory, collaborators, Reel audio, and trial reels"
changedInput schema / properties / platforms / description
Previous value: -"Target platforms shared by every item. Each needs its connection-id array (pageIds for FACEBOOK)"New value: +"Target platforms shared by every item. Each needs its connection-id array (pageIds for FACEBOOK, googleBusinessConnectionIds for GOOGLE_BUSINESS)"
changedInput schema / properties / platforms / items / enum
Previous value: -[
- "LINKEDIN",
- "YOUTUBE",
- "INSTAGRAM",
- "FACEBOOK",
- "TIKTOK",
- "PINTEREST",
- "THREADS",
- "BLUESKY",
- "TWITTER",
- "MASTODON"
-]New value: +[
+ "LINKEDIN",
+ "YOUTUBE",
+ "INSTAGRAM",
+ "FACEBOOK",
+ "TIKTOK",
+ "PINTEREST",
+ "THREADS",
+ "BLUESKY",
+ "TWITTER",
+ "MASTODON",
+ "GOOGLE_BUSINESS"
+]
changedInput schema / properties / posts / items / properties / contentType / description
Previous value: -"TEXT, IMAGE, VIDEO, or CAROUSEL; must match mediaUrls. DOCUMENT posts cannot be bulk scheduled; use create_post"New value: +"TEXT, IMAGE, VIDEO, or CAROUSEL; must match mediaUrls. DOCUMENT posts cannot be bulk scheduled; use create_post. 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 and 35 on TIKTOK (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. GOOGLE_BUSINESS takes TEXT or IMAGE with one JPEG or PNG image up to 5 MB, and text up to 1500 characters"
changedInput schema / properties / posts / items / properties / facebookConfigs / items / properties / postType / description
Previous value: -"Where the post goes: FEED works with every content type, REEL needs contentType VIDEO, STORY needs IMAGE or VIDEO. Any other combination is refused with 400"New value: +"Where the post goes: FEED works with every content type, REEL needs contentType VIDEO, STORY needs IMAGE, VIDEO or CAROUSEL (a CAROUSEL story publishes each media item as its own story, in order). Any other combination is refused with 400"
addedInput schema / properties / posts / items / properties / facebookConfigs / items / properties / shareToStory
Added value: +{
+ "description": "Also publish the same media as a story on this page, next to the FEED or REEL post. The story shows as its own entry in platforms with postType STORY, so it succeeds, fails and retries on its own. It skips the caption, video title and text background, needs IMAGE, VIDEO or CAROUSEL, and a video must fit the story length limit (60 seconds). Ignored when postType is STORY",
+ "type": "boolean"
+}
addedInput schema / properties / posts / items / properties / facebookConfigs / items / properties / textFormatPresetId
Added value: +{
+ "description": "Facebook's id for a colored text background (for example 106018623298955 is solid purple, 249307305544279 is a red to blue gradient). Only for contentType TEXT posts with no media and text up to 130 characters; anything else is refused with 400. Links in the text show without a preview. If Facebook refuses the background, the post goes out as plain text",
+ "pattern": "^\\d{1,20}$",
+ "type": "string"
+}
addedInput schema / properties / posts / items / properties / firstComments
Added value: +{
+ "description": "A comment posted from the same account right after the post goes out on a platform, one entry per platform. Available on LINKEDIN (1250 characters), TWITTER (280, as a reply), THREADS (500, as a reply), BLUESKY (300, as a reply), MASTODON (500, as a reply) and YOUTUBE (10000). A platform the post does not go to, an empty or too long comment, a second entry for one platform, a private or made for kids YouTube video and Facebook or Instagram stories are refused with 400. The comment is posted about 10 seconds after the platform publishes (60 on YouTube) and retried up to 3 times; on X it is not retried, and a lifetime-deal account pays for it like any X post. A comment that fails never fails the post: read firstCommentStatus and firstCommentError on the platform in get_post. On an update, sending the array replaces every first comment and omitting it keeps the stored ones",
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "platform": {
+ "enum": [
+ "LINKEDIN",
+ "TWITTER",
+ "THREADS",
+ "BLUESKY",
+ "MASTODON",
+ "YOUTUBE"
+ ],
+ "type": "string"
+ },
+ "text": {
+ "description": "The comment's text, trimmed. The limit depends on the platform, see firstComments",
+ "maxLength": 10000,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "platform",
+ "text"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+}
addedInput schema / properties / posts / items / properties / googleBusinessConfigs
Added value: +{
+ "description": "Google Business Profile config for this item only, such as its own event or offer; replaces the batch-level googleBusinessConfigs",
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "callToActionType": {
+ "description": "Button shown on the post. Every type except CALL needs callToActionUrl; CALL dials the phone number on the Business Profile",
+ "enum": [
+ "BOOK",
+ "ORDER",
+ "SHOP",
+ "LEARN_MORE",
+ "SIGN_UP",
+ "CALL"
+ ],
+ "type": "string"
+ },
+ "callToActionUrl": {
+ "description": "Ignored when callToActionType is CALL",
+ "format": "uri",
+ "type": "string"
+ },
+ "connectionId": {
+ "description": "Google Business Profile account id from list_accounts",
+ "type": "string"
+ },
+ "eventEnd": {
+ "$ref": "#/properties/posts/items/properties/googleBusinessConfigs/items/properties/eventStart",
+ "description": "YYYY-MM-DD or YYYY-MM-DDTHH:mm in the business's local time, with no offset (e.g. \"2026-10-01T21:00\")"
+ },
+ "eventStart": {
+ "description": "YYYY-MM-DD or YYYY-MM-DDTHH:mm in the business's local time, with no offset (e.g. \"2026-10-01T18:00\"). Google reads event times in the location's time zone",
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2})?$",
+ "type": "string"
+ },
+ "eventTitle": {
+ "description": "Title of the event or offer",
+ "type": "string"
+ },
+ "offerCouponCode": {
+ "description": "OFFER only: coupon code",
+ "type": "string"
+ },
+ "offerRedeemUrl": {
+ "description": "OFFER only: where the offer is redeemed",
+ "format": "uri",
+ "type": "string"
+ },
+ "offerTerms": {
+ "description": "OFFER only: terms and conditions",
+ "type": "string"
+ },
+ "topicType": {
+ "description": "STANDARD is an update. EVENT and OFFER need eventTitle, eventStart and eventEnd",
+ "enum": [
+ "STANDARD",
+ "EVENT",
+ "OFFER"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "connectionId",
+ "topicType"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+}
addedInput schema / properties / posts / items / properties / instagramConfigs / items / properties / audio
Added value: +{
+ "additionalProperties": false,
+ "description": "Music or an original sound from Instagram's audio library, added to the Reel when it is published. Needs contentType VIDEO and a postType other than STORY, and only works for accounts with supportsInstagramAudio: true in list_accounts (connected through Facebook). Find ids with search_instagram_audio",
+ "properties": {
+ "artist": {
+ "description": "Artist or creator, stored for display only",
+ "maxLength": 255,
+ "type": "string"
+ },
+ "audioId": {
+ "description": "audioId from search_instagram_audio",
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "audioVolume": {
+ "description": "Volume of the added audio, 1 to 100. Defaults to 100",
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "title": {
+ "description": "Track title, stored for display only",
+ "maxLength": 255,
+ "type": "string"
+ },
+ "videoVolume": {
+ "description": "Volume of the video's own sound, 1 to 100. Defaults to 100",
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "audioId"
+ ],
+ "type": "object"
+}
addedInput schema / properties / posts / items / properties / instagramConfigs / items / properties / collaborators
Added value: +{
+ "description": "Instagram usernames invited as collaborators (Instagram Collab), up to 3. A leading @ is stripped and duplicates are dropped. Works on feed images, carousels and reels; a story or a trial reel with collaborators is refused with 400. Each collaborator gets an invite in Instagram and must accept it before the post shows on their profile",
+ "items": {
+ "pattern": "^@?[A-Za-z0-9._]{1,30}$",
+ "type": "string"
+ },
+ "maxItems": 3,
+ "type": "array"
+}
changedInput schema / properties / posts / items / properties / instagramConfigs / items / properties / postType / description
Previous value: -"Where the post goes: FEED works with every content type, REEL needs contentType VIDEO, STORY needs IMAGE or VIDEO. Any other combination is refused with 400"New value: +"Where the post goes: FEED works with every content type, REEL needs contentType VIDEO, STORY needs IMAGE, VIDEO or CAROUSEL (a CAROUSEL story publishes each media item as its own story, in order). Any other combination is refused with 400"
addedInput schema / properties / posts / items / properties / instagramConfigs / items / properties / shareToStory
Added value: +{
+ "description": "Also publish the same media as a story on this account, next to the FEED or REEL post. The story shows as its own entry in platforms with postType STORY, so it succeeds, fails and retries on its own. It skips the caption, first comment, cover, collaborators, trial and audio, needs IMAGE, VIDEO or CAROUSEL, and a video must fit the story length limit (60 seconds). Ignored when postType is STORY",
+ "type": "boolean"
+}
changedInput schema / properties / posts / items / properties / mediaAltTexts / description
Previous value: -"Alt text per image, in the same order as mediaUrls (max 1000 characters each; use \"\" to skip an image). Sent to X, Bluesky, Mastodon, LinkedIn, Facebook, Instagram and Threads; Pinterest uses the first one (cut to 500). TikTok, YouTube and videos ignore it"New value: +"Alt text per image, in the same order as mediaUrls (max 1000 characters each; use \"\" to skip an image). Sent to X, Bluesky, Mastodon, LinkedIn, Facebook, Instagram and Threads; Pinterest uses the first one (cut to 500). TikTok, YouTube, Google Business Profile and videos ignore it"
addedInput schema / properties / posts / items / properties / platformAspectRatios
Added value: +{
+ "description": "Reframe every image of an IMAGE or CAROUSEL post to one shape on a platform, one entry per platform. INSTAGRAM takes SQUARE, PORTRAIT or LANDSCAPE (Instagram refuses 9:16 feed and carousel images); TIKTOK takes all four. Video posts, Instagram stories and a second entry for the same platform are refused with 400. Omit a platform to keep its images as uploaded. On an update it applies to the mediaUrls sent in the same request",
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "aspectRatio": {
+ "description": "SQUARE is 1:1, PORTRAIT 4:5, VERTICAL 9:16 and LANDSCAPE 1.91:1",
+ "enum": [
+ "SQUARE",
+ "PORTRAIT",
+ "VERTICAL",
+ "LANDSCAPE"
+ ],
+ "type": "string"
+ },
+ "fit": {
+ "description": "How an image of another shape reaches the ratio. CROP (the default) cuts it from the center; PAD keeps the whole image and fills the rest with a blurred copy of it",
+ "enum": [
+ "CROP",
+ "PAD"
+ ],
+ "type": "string"
+ },
+ "platform": {
+ "enum": [
+ "INSTAGRAM",
+ "TIKTOK"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "platform",
+ "aspectRatio"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+}
addedInput schema / properties / posts / items / properties / platformTexts / items / properties / text / description
Added value: +"On LinkedIn, mention a company page with @[Page Name](urn:li:organization:<id>), using the page name exactly as LinkedIn shows it"
addedInput schema / properties / posts / items / properties / platformThumbnails
Added value: +{
+ "description": "A different thumbnail for one platform of a VIDEO post, one entry per platform. A platform without an entry uses the post-level thumbnailUrl and thumbnailTimestampMs. YOUTUBE, FACEBOOK and LINKEDIN take an image (thumbnailUrl); INSTAGRAM and PINTEREST take an image or a frame (thumbnailTimestampMs), the image winning when both are sent; TIKTOK takes only a frame. Posts that are not videos, Facebook and Instagram stories, a second entry for one platform and an entry the platform cannot use are refused with 400. On an update, sending the array replaces every override and omitting it keeps the stored ones",
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "platform": {
+ "enum": [
+ "YOUTUBE",
+ "FACEBOOK",
+ "LINKEDIN",
+ "INSTAGRAM",
+ "PINTEREST",
+ "TIKTOK"
+ ],
+ "type": "string"
+ },
+ "thumbnailTimestampMs": {
+ "description": "The video frame (ms from the start) to use as this platform's thumbnail",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "thumbnailUrl": {
+ "description": "The image to use as this platform's thumbnail, an https URL or an image data URI",
+ "type": "string"
+ }
+ },
+ "required": [
+ "platform"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+}
changedInput schema / properties / posts / items / properties / text / description
Previous value: -"Post text/caption"New value: +"Post text/caption. On LinkedIn, mention a company page with @[Page Name](urn:li:organization:<id>), using the page name exactly as LinkedIn shows it"
changedInput schema / properties / posts / items / properties / thumbnailTimestampMs / description
Previous value: -"Thumbnail timestamp in ms"New value: +"Video frame timestamp (ms) to use as the thumbnail, used by INSTAGRAM, PINTEREST and TIKTOK unless platformThumbnails overrides it"
changedInput schema / properties / posts / items / properties / thumbnailUrl / description
Previous value: -"Custom thumbnail image URL"New value: +"Video thumbnail as an https URL or an image data URI, used on every platform that takes one unless platformThumbnails overrides it"