Prepare a social post
prepare_postStages a post of one of this account's finished videos to one of its connected TikTok, YouTube or Instagram accounts and returns the post id publish_post takes. NOTHING IS PUBLISHED BY THIS CALL. WHEN: after list_social_accounts gave you an account id and you have a finished video's id (list_videos / get_video, status succeeded). AN AI VIDEO STORY EPISODE MUST BE RENDERED FIRST: it reports succeeded at story.stage: "ready_to_render", where its only file is the raw stitched preview, and an unrendered episode is REFUSED (409 episode_not_rendered): call render_story_video, wait for story.stage: "rendered", then prepare. IF THE USER IS LOOKING AT A RENDERED CARD, DO NOT ASK THEM TO CONFIRM IN CHAT: call review_post with the id this returns and STOP. The card shows the actual video, the destination account and the caption, visibility and disclosure controls, and the person confirms there; reciting account_limits and asking 'public or friends-only?' is what it replaces. WHY TWO STEPS: on TikTok this call asks the platform what the user's own account allows and returns it as account_limits (the privacy levels it may use; whether comments, duet or stitch are off): show the user those options, get their choice, and only then call publish_post. A prepared post expires after 30 minutes because those limits can change. On YouTube and Instagram nothing is asked of the platform (account_limits says source: aicut_api_limits): do not present it as what the channel allows. FIELDS ARE PER PLATFORM (each field says which; another platform's is refused). Instagram: trial_graduation_strategy makes a trial reel. The caption is sent exactly as given (refused, never trimmed). is_your_brand and is_branded_content are TikTok's commercial-disclosure declarations (the user's own business; a paid partnership). Both default to false: set one only if the USER told you to, because a disclosure they did not make must not be sent for them. schedule_at stages a post for later (ISO-8601, 10 minutes to a year ahead); publish_post commits it. ASK THE USER FOR A TIME rather than inventing one, and say what scheduling means on their platform (the account's schedule_custody). You can only post a video on this aicut account (by id, never a url: import_video brings an outside clip in), to a social account this same user connected. REFUSALS you act on: 403 insufficient_scope = THE USER'S CONNECTION CANNOT POST (it was approved before aicut added the social:publish permission), so a connection that generates videos fine can still be refused here. It is not an outage and not a bad video_id or account_id; a retry, another account or another video cannot fix it. Tell the user to disconnect aicut at https://www.aicut.pro/account/settings#connections, connect it again and approve "Post your videos to your connected social accounts" (generating stops working until they have reconnected), then STOP.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | YouTube only: up to 30 tags, 500 characters in total. | |
| title | No | YouTube only, required: the title, up to 100 characters. | |
| caption | Yes | The post text exactly as given: up to 2200 characters; on YouTube the DESCRIPTION, up to 5000. | |
| platform | Yes | The platform to post to; it must match the `platform` of the account id (the platforms number accounts independently). | |
| video_id | Yes | The id of a FINISHED (episode: RENDERED) video on this account, or an `import_video` id. | |
| account_id | Yes | The connected account's `id` from `list_social_accounts`. | |
| allow_duet | No | TikTok only. Default true. | |
| category_id | No | YouTube only: the category id. Default 24 (Entertainment). | |
| schedule_at | No | ISO-8601. Omit to publish when `publish_post` is called. | |
| allow_stitch | No | TikTok only. Default true. | |
| is_your_brand | No | TikTok disclosure: the user's own business. Default false; set only if the user said so. | |
| privacy_level | No | TikTok: one of `account_limits.privacy_level_options` (PUBLIC_TO_EVERYONE, MUTUAL_FOLLOW_FRIENDS, FOLLOWER_OF_CREATOR, SELF_ONLY): ask the user. YouTube: public, unlisted or private. Required on both. | |
| allow_comments | No | TikTok only. Default true. | |
| is_branded_content | No | TikTok disclosure: a paid partnership. Default false; set only if the user said so. | |
| trial_graduation_strategy | No | Instagram only: post a trial reel, shown to non-followers first. SS_PERFORMANCE: shared to followers if it performs well; MANUAL: a trial until shared in the Instagram app. Set only if the user asked for a trial or test reel. |