platform_contentobject
Per-platform overrides keyed by platform name (e.g. {"instagram": {...}}). Each entry may set "content" (platform-specific caption) and "contentType" (the post format for that platform). contentType values: Instagram "Post" | "Reels" | "Story" | "Trial Reel"; Facebook "Post" | "Reels" for a video ("Reels" posts it as a Reel, "Post" as a regular video; a landscape video always posts as a regular video; Facebook Stories are not supported and are refused with a 400); YouTube "Video" | "Short". Omit contentType to use the platform default (video media defaults to Reels on Instagram). Each entry may also set "settings" with platform-specific options, e.g. Pinterest {"settings": {"boardId": "...", "link": "https://...", "title": "..."}} to pick the board and destination link, YouTube {"settings": {"title": "..."}}. YOUTUBE SETTINGS (all optional, camelCase or snake_case): {"youtube": {"settings": {"title": "<max 100; default first caption line>", "description": "<max 5000; default the caption>", "tags": ["a","b"], "categoryId": "22 People & Blogs (default) | 23 Comedy | 24 Entertainment | 26 Howto & Style | 27 Education | 28 Science & Technology | 10 Music | 20 Gaming | 17 Sports", "privacyStatus": "public|unlisted|private", "madeForKids": false, "containsSyntheticMedia": true (discloses realistic AI-altered content), "notifySubscribers": true, "license": "youtube|creativeCommon", "embeddable": true, "publicStatsViewable": true, "defaultLanguage": "en" (title and description language), "coverPhotoUrl": "<https JPG/PNG: the YouTube thumbnail; or use the cover_photo parameter>"}}}. Adding to playlists and a first comment are NOT available yet. YouTube decides what is a Short (square or vertical, up to 3 minutes); contentType "Short" is informational. Age restriction, paid promotion, comments on/off, Shorts remixing and caption certification cannot be set through YouTube's API (YouTube Studio only). Invalid YouTube settings are refused with a 400. MORE PLATFORM SETTINGS (keys are camelCase unless shown; all optional; these snake_case spellings are also accepted and converted: first_comment, alt_text, media_alt_text, reply_settings, privacy_level, disable_comment, disable_duet, disable_stitch, video_type, cover_photo_url, topic_tag, link_attachment, board_id, board_section_id, comment_status): TIKTOK {"tiktok": {"settings": {"privacyLevel": "PUBLIC_TO_EVERYONE|MUTUAL_FOLLOW_FRIENDS|FOLLOWER_OF_CREATOR|SELF_ONLY", "disableComment": false, "disableDuet": false, "disableStitch": false, "commercialContentEnabled": true + "brandOrganicToggle": true (promoting your own business) and/or "brandContentToggle": true (paid partnership), "isAIGC": true (AI-generated label), "title": "...", "videoCoverTimestamp": <ms into the video for the cover frame>, "photoCoverIndex": <0-based cover image for photo posts>, "autoAddMusic": true (photo posts)}}}. TikTok takes no custom cover image. X (also): "replySettings": "everyone|following|mentionedUsers", a poll with "pollEnabled": true, "pollOptions": [{"text": "A"}, {"text": "B"}] (2-4, no media) and "pollDuration": <minutes, default 1440>, "quoteTweetUrl": "https://x.com/.../status/<id>", "mediaAltText": "<alt text for the images>", "firstComment": "<posted as a reply>". INSTAGRAM (also): "altText": "<alt text, image posts>", "location": "<place name>" + "locationId": "<Facebook Page id of the place>" (both needed). Tagging people, collaborators and product tags are not available. FACEBOOK: "link": "https://..." (link card), "videoType": "reel|regular" (a landscape video always posts as a regular video), "placeId": "<place id>" + "placeName": "...", "callToAction": {"type": "LEARN_MORE|SHOP_NOW|SIGN_UP|...", "value": "https://..."} (needs "link"). LINKEDIN: "visibility": "PUBLIC|CONNECTIONS|LOGGED_IN_MEMBERS", "disableReshare": true. THREADS: "topicTag": "<one topic>", "linkAttachment": "https://..." (text-only posts). PINTEREST (also): "description": "<max 500>", "altText": "...", "boardSectionId": "<section id>" (title max 100). BLUESKY: "altText": "...", "language": "en", "replyControl": "everybody|nobody|mentioned|following", "contentLabel": "sexual|nudity|porn|graphic-media". TELEGRAM: "silent": true, "protectContent": true (no forwarding or saving), "captionAboveMedia": true, "mediaSpoiler": true, "linkPreview": "off|large|small", "linkPreviewAboveText": true. DISCORD: "username": "<max 80, cannot contain clyde or discord>", "avatarUrl": "https://...", "suppressMentions": true, "silent": true. WORDPRESS (also): "commentStatus": "open|closed". A first comment (firstComment) works on X only today; on Instagram, Facebook, LinkedIn, Threads and YouTube it is not available, so it is removed and the response notes say so. X: {"x": {"settings": {"made_with_ai": true, "paid_partnership": true, "community_id": "<numeric X Community id>"}}} adds X's disclosure labels or posts into a Community the account belongs to. X ARTICLE (long-form, X Premium accounts only): {"x": {"content": "<body: # headings, - lists, > quotes, bold, italic, links>", "settings": {"post_type": "article", "title": "<max 100 chars>"}}} with ONLY X account ids, up to 5 images in media_ids (the first is the cover, 2000x800 looks best; place others inline with a line caption, or they go at the end), no video, body up to 25,000 characters. The body also supports --- dividers, code blocks, | tables |, a line that is just an X post link (embeds it) and caption. Limited to 2 published articles per X account per 24 hours. WORDPRESS BLOG POST: {"wordpress": {"content": "<body, same formatting as X Articles; raw HTML is kept as-is>", "settings": {"title": "<max 200 chars; default = a leading # Heading, else the first line>", "status": "publish|draft|pending|private", "excerpt": "<max 1000>", "tags": ["a"], "categories": ["News"], "slug": "...", "featuredImage": "first|none"}}} with WordPress account ids (other platforms in the same call use the top-level content), up to 20 images + 1 video in media_ids (the first image is the featured image; place others inline with caption, or they go at the end; the video goes at the top), body up to 200,000 characters. tags/categories take arrays or a comma string (categories also take numeric ids); missing tags are created. A blog post with no title is refused with a 400. GOOGLE BUSINESS PROFILE POST (google_business): {"google_business": {"content": "<optional text for Google only, max 1500 chars>", "settings": {"post_type": "update|event|offer", "button": "none|book|order|shop|learn_more|sign_up|call", "button_url": "https://...", "event_title": "<max 58>", "start_date": "YYYY-MM-DD or YYYY-MM-DDTHH:mm", "end_date": "...", "coupon_code": "...", "redeem_url": "https://...", "terms": "..."}}}. Text up to 1500 characters, at most 1 photo (JPG or PNG), no video. button_url is required for every button except call. Event and offer posts need event_title, start_date and end_date (business local time). Offer posts have no button. Do not put phone numbers in the text: Google may reject those posts. An invalid Google Business Profile post is refused with a 400.
schedule_atenum
Установите в "best_time", чтобы запланировать на следующее лучшее время для этих аккаунтов: самое раннее из их трёх лучших времён (см. get_best_times), как минимум через 30 минут от текущего момента. Используйте, когда пользователь говорит "опубликуй в лучшее время" или "когда это покажет лучший результат". Требует account_ids. Несовместим с scheduled_for и use_queue. Ответ сообщает, какое время выбрано и на чём оно основано; сообщите пользователю.
thread_postsstring[]
Make the post a THREAD. The parts that come AFTER content, in order (content is part 1). Each part is posted as a reply to the one before. Works on X and Bluesky; Telegram and Discord get them as follow-up messages; Threads chains are not available yet (a Threads account gets part 1 only); any other account in the same post gets content only (the response lists those accounts). At least one account must be X, Bluesky, Telegram or Discord. Each part must fit the platform limit: X 280 characters (25,000 with X Premium), Bluesky 300, Telegram 4096, Discord 2000; get_platform_rules has the numbers. Up to 25 parts. Cannot be combined with an X Article. Works with draft: true (schedule_post then publishes the whole thread). Example: content "Three things I learned this year 🧵 1/3", thread_posts ["2/3 ...", "3/3 ..."].
use_queueboolean
Устанавливает значение true, чтобы очередь публикаций рабочего пространства выбрала время: следующий свободный слот выделяется при создании. Используйте это вместо scheduled_for, когда пользователь говорит «добавь в очередь», «опубликуй в моё обычное время» или «когда будет следующий свободный слот». Взаимоисключающий с scheduled_for - отправка обоих отклоняется. Сначала вызовите get_queue, если хотите сказать пользователю, КАКОЙ слот он получит.