Add a post to the content calendar
schedule_social_postAdd one social post to a brand's content calendar on a date: platform, format, and whatever copy you have (hook, caption, call to action, hashtags, a direction for the visual). WITHOUT publish_to it is only a plan (a draft the owner sees in Creative Studio) — nothing is published. WITH publish_to (connection ids from list_social_accounts) the post is added AND scheduled to publish publicly on those accounts at that day and time, in one step, exactly as queue_post_for_publishing would. Name the time as scheduled_date + scheduled_time (the owner's wall-clock time; the brand's time zone is applied), or scheduled_at. A day or time already passed is refused. Free. Google Business Profile supports only text or one photo; never attach video or choose reel/carousel/story for a google_business destination. For other supported video destinations, TO POST A VIDEO, pass video_project_id (a finished Video Studio film of this brand, from list_creations kind "video") or video_asset_id (their own video in the brand Library, from list_brand_assets) HERE instead of a second attach step: the post is created with the video on it, and a post with a video and no format is a reel. If the film is still being put together, the post is still added but the result says video.attached: false with video.needs_attaching and what to do next — and with publish_to it is then NOT queued until the video is on it. Never tell the user a video is on the post unless video.attached is true. To give it a picture, make one with create_visual and then attach_visual_to_post. Use get_calendar to see what is already planned. For several posts at once use schedule_social_posts: one approval for all of them.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| cta | No | Call to action. | |
| goal | No | ||
| hook | No | The opening line. | |
| format | No | Post format. Omit for a single image. | |
| No | Used when connection_ids names a Google Business Profile location; ignored otherwise. | ||
| pillar | No | Content pillar or theme. | |
| caption | No | ||
| site_id | No | A site whose content plan this post belongs to, when it is about one site. | |
| youtube | No | Required when connection_ids names a YouTube account; ignored otherwise. | |
| brand_id | Yes | Brand workspace id from list_brands | |
| hashtags | No | ||
| platform | No | Which network. Omit for Instagram. | |
| timezone | No | An IANA time zone (e.g. Asia/Kolkata) ONLY when the owner named one. It is saved as the brand's time zone. Omit to use the brand's. | |
| user_goal | No | Optional: the user's goal behind this call, in one short sentence of plain words (e.g. "add a page so customers can book tables"). No names, emails or other personal details. | |
| publish_to | No | Connection ids from list_social_accounts. Given: the post is scheduled to PUBLISH on these accounts. Omitted: a calendar plan only. | |
| scheduled_at | No | Alternative to date + time: the exact moment as an ISO instant with offset (2026-10-12T10:00:00+05:30). | |
| scheduled_date | No | YYYY-MM-DD, today or later in the brand's time zone. Omit for today. | |
| scheduled_time | No | HH:MM (24-hour) on scheduled_date, as the owner said it ("10am" is 10:00). Omit for 09:00. | |
| video_asset_id | No | A video in this brand's Library (list_brand_assets) to put on the post as it is. Not with video_project_id. | |
| video_project_id | No | A finished Video Studio film of this brand to put on the post (list_creations kind "video"). Not with video_asset_id. The bare project id or the library id ("studio-video:<uuid>" from list_creations / find_creation) both work. | |
| visual_direction | No | What the picture should show. | |
| fallback_timezone | No | The owner's device time zone, used only when the brand has none on record. |