create_post
ChatGPTPublish or schedule a social media post to Instagram, TikTok, YouTube, X (Twitter), LinkedIn, Facebook, Pinterest, Threads, Bluesky, and Google Business Profile. One call can cross-post the same text, image, or video to multiple accounts and platforms at once. Use list_social_accounts first to get account IDs. Omit scheduled_at to post immediately. Pass public media URLs via media_urls (the API downloads them). IMPORTANT for X/Twitter: links are automatically removed from the text before posting to X — this includes full URLs (http://, https://, www.) AND bare domains like foo.com or foo.io/path. X charges far more for posts that contain links. Other platforms keep their links. To share a link on X, put it in platform_configurations.twitter.first_comment (a reply) or the account bio. To post a multi-tweet thread on X, or a multi-post thread on Threads, put the follow-up posts in platform_configurations.twitter.thread / platform_configurations.threads.thread (an array of strings, chained in order under the main post). Note: is_draft saves the post in Post Bridge only — it does not create a draft on any platform. All platforms will publish immediately when the draft is later sent. TikTok's platform_configurations.tiktok.draft is a separate option that creates an actual draft on TikTok. TikTok photo carousels: pass several images (media or media_urls) to a TikTok account and it publishes as a photo carousel. Caption limits: Bluesky 300, Threads 500, Pinterest 800, Google Business 1,500, Instagram 2,200, TikTok 2,200 for videos and 4,000 for photo posts, LinkedIn 3,000 characters. When the shared caption is longer than a platform allows, write a shorter platform-specific caption in platform_configurations.<platform>.caption in the same call, without being asked. X allows 280 characters, or up to 25,000 when the account has X Premium: check has_x_premium on that account from list_social_accounts, keep the full caption if it is true, and write a shorter X caption if it is false.
delete_media
ChatGPTDelete an uploaded media file. Only deletes media not currently used by any post.
delete_post
ChatGPTDelete a scheduled or draft post. Published posts cannot be deleted via the API.
get_analytics_daily
ChatGPTGet per-day analytics snapshots and deltas for a single post. Returns cumulative snapshots and per-day gains (views/likes/comments/shares). Use the analytics record ID from list_analytics.
get_post
ChatGPTGet details of a single post by ID, including its status, caption, media, and platform results.
list_analytics
ChatGPTGet social media post performance analytics — views, likes, comments, and shares for posts published through Post Bridge (TikTok, YouTube, Instagram, Facebook). Can filter by platform, timeframe, or media type (video vs TikTok slideshow).
list_media
ChatGPTList your uploaded media files. Returns media IDs, URLs, and types. Use media IDs when creating posts with previously uploaded content.
list_post_results
ChatGPTCheck posting results per platform. Shows whether each platform post succeeded or failed, with error details if applicable.
list_posts
ChatGPTList your posts with optional filters. Returns post ID, caption, status (scheduled, processing, posted), is_draft flag, scheduled time, and associated accounts. Drafts have status 'scheduled' with is_draft: true and scheduled_at: null.
list_social_accounts
ChatGPTList the user's connected social media accounts across Instagram, TikTok, YouTube, X (Twitter), LinkedIn, Facebook, Pinterest, Threads, Bluesky, and Google Business Profile. Returns account IDs, platforms, usernames, needs_reconnect, and has_x_premium (X accounts only: true means posts can be up to 25,000 characters instead of 280). When needs_reconnect is true, repeated dead-token failures have paused posting to that account: posts to it are skipped until the user reconnects it in the dashboard (reconnecting clears it automatically). Do not post or retry against accounts in that state; tell the user to reconnect instead.
preview_media
ChatGPTSee an uploaded image: returns a small preview of the picture itself so you can tell photos apart (which one is the pink hat). Images only; videos and PDFs return a text note. Use list_media first to get ids.
request_upload_link
ChatGPTGet an upload page for files that live on the user's device (a video or photos on their phone or laptop) and therefore have no public URL. Returns a link valid for 24 hours; give it to the user, they open it and drop one or many files in (a whole carousel at once is fine), and each file lands in their Post Bridge media library. In Claude and ChatGPT the upload box renders right in the chat and the media ids are reported back to you when the upload finishes; elsewhere, call list_media (newest first) after the user says they are done and take as many media_ids as files they uploaded, then pass them to create_post. Use this whenever the user wants to post a file that upload_media cannot reach: no URL, larger than 3MB, and you cannot run shell commands on the user's machine (if you can, use upload_media with size_bytes instead).
search_instagram_audio
ChatGPTSearch the music (or original sounds) Meta lets apps attach to an Instagram reel. Pass a returned audio_id as platform_configurations.instagram.audio_id in create_post or update_post (optionally audio_volume and video_volume, 0-100). Omit query for trending audio. ONLY works for Instagram accounts connected through Facebook login (supports_instagram_music: true in list_social_accounts). Accounts connected with Instagram login return an error: tell the user music needs the account connected via Connections > Instagram > "Login with Facebook" in the dashboard (a Business or Creator account linked to a Facebook Page), or to add the audio to the video before uploading. The catalogue is what Meta clears for third-party apps, so it can differ from the in-app library.
sync_analytics
ChatGPTTrigger a refresh of analytics data from all connected platforms. Use this if analytics seem stale.
update_post
ChatGPTUpdate a scheduled or draft post. You can change the caption, schedule time, accounts, or media.
upload_media
ChatGPTUpload media and get back a reusable media_id. Four modes: (1) pass url to upload from a publicly accessible URL, (2) pass data (base64-encoded file bytes) plus mime_type for small files (3MB cap), (3) for a file on the user's machine when you can run shell commands (Claude Code, Cowork, Codex, Cursor), pass size_bytes plus mime_type and name with no url or data: you get a media_id and a presigned upload_url, then PUT the raw file to it yourself (curl command included in the result, valid 2 hours, up to 500MB, no 3MB cap). Use mode 3 for any local video. (4) In ChatGPT, pass a file from the conversation (one the user attached, or an image you generated) as file: ChatGPT supplies its download link and the file goes straight into the media library, no size cap beyond 500MB and no manual upload. Supports images (PNG/JPEG), videos (MP4/MOV), and PDFs (application/pdf). A PDF returns a document-kind media_id — pass it to create_post on a LinkedIn account to publish a native LinkedIn document post (PDF carousel); set platform_configurations.linkedin.document_title to control the title. Use the returned media_id with the media param on create_post/update_post. A media_id stays available until the last post that uses it has published, then the file is deleted: reusing it across posts that are all scheduled is fine, but for a post created after those have gone out, upload the file again. HEIC/HEIF images are not supported — convert to JPEG or PNG first. Direct data uploads are capped at 3MB raw because of serverless request-body limits — for larger local files use mode 3 if you can run commands, otherwise request_upload_link.