# api ## Pages - [mixetape API](https://docs.mixetape.com/api/index.md) — Schedule and manage posts on connected social channels — the same actions agents use over MCP. - [Cancel a scheduled post](https://docs.mixetape.com/api/Accounts-and-posts/cancelPostRest/index.md) — Cancels a post that is still waiting in mixetape. Needs the **publish** permission. - [Schedule a post](https://docs.mixetape.com/api/Accounts-and-posts/createPostRest/index.md) — Schedule a video on a connected account (see list_accounts for each account's platform). The post waits in mixetape (editable, cancellable) until shortly before scheduledAt. YouTube and Facebook get it leadMinutes early, unpublished, and publish it themselves at scheduledAt; Instagram and Threads get it prepared leadMinutes early and mixetape publishes it at scheduledAt; TikTok and Pinterest cannot hold a post, so mixetape posts it at scheduledAt. Each platform takes its own metadata (Facebook format reel for a Reel, Pinterest boardId is required, TikTok privacyLevel). Thumbnail, playlists and captions are applied right after upload where the platform supports them; firstComment is posted once it is public. mediaUrl: a public https URL, or an r2:// URL from mixetape storage (create_upload / import_file). Needs the **publish** permission. - [Get a post](https://docs.mixetape.com/api/Accounts-and-posts/getPostRest/index.md) — One post and its status. Add `?insights=1` for its live platform status and metrics instead. Needs the **read** permission. - [List connected channels](https://docs.mixetape.com/api/Accounts-and-posts/listAccountsRest/index.md) — The channels this key can post to, with what each platform supports. Needs the **read** permission. - [List posts](https://docs.mixetape.com/api/Accounts-and-posts/listPostsRest/index.md) — Posts, newest scheduled first, a page at a time; pass `nextCursor` back as `cursor` for the next page. Needs the **read** permission. - [List the tools this key may call](https://docs.mixetape.com/api/Accounts-and-posts/listTools/index.md) — The same tools the MCP server offers, filtered by the key's permissions, with their input schemas. - [Retry a failed post, or set its thumbnail](https://docs.mixetape.com/api/Accounts-and-posts/retryPostRest/index.md) — Without a body, sends a failed post again. With `{ thumbnailUrl }`, sets or replaces the thumbnail of a post already on the platform. Needs the **publish** permission. - [Change a scheduled post](https://docs.mixetape.com/api/Accounts-and-posts/updatePostRest/index.md) — Change a post that is still 'scheduled' (waiting in mixetape): its time, lead, media, caption or metadata (merged; null clears a field). Once it is on the platform, use edit_published_post. Needs the **publish** permission. - [get_account_analytics](https://docs.mixetape.com/api/analytics/get_account_analytics/index.md) — An account's analytics: totals, day by day, its top 10 posts (with the mixetape post id when published through mixetape) and traffic sources. Defaults to the last 28 days; the last ~3 days are incomplete. Needs the **analytics** permission. Also available as the MCP tool `get_account_analytics`. - [get_post_analytics](https://docs.mixetape.com/api/analytics/get_post_analytics/index.md) — A post's analytics: views, watch time, average view duration and percentage, likes, comments, shares, subscribers gained/lost, the audience-retention curve and traffic sources. Defaults to the day it went up through today; the last ~3 days are incomplete. Needs the **analytics** permission. Also available as the MCP tool `get_post_analytics`. - [choose_channels](https://docs.mixetape.com/api/channels/choose_channels/index.md) — Add the channels the user picked after get_connection answered 'choose'. The choice is held for 10 minutes after the sign-in; channels left out are not connected. Needs the **channels** permission. Also available as the MCP tool `choose_channels`. - [connect_channel](https://docs.mixetape.com/api/channels/connect_channel/index.md) — Start connecting a channel: returns a sign-in link for the platform. Give the link to the user — they open it in any browser, sign in with the account that owns the channel and allow access; nothing is connected until they do. The link works once, for 10 minutes. Then call get_connection with the returned state. Needs the **channels** permission. Also available as the MCP tool `connect_channel`. - [get_connection](https://docs.mixetape.com/api/channels/get_connection/index.md) — Where a connect_channel attempt stands. 'pending': the user has not finished yet (ask again shortly). 'done': channels lists what was connected or refreshed. 'choose': the sign-in reached several new channels (e.g. Facebook Pages) — ask the user which to add, then call choose_channels; refreshed lists channels that were already connected and just got new access. 'error': why it failed. Needs the **channels** permission. Also available as the MCP tool `get_connection`. - [list_comments](https://docs.mixetape.com/api/comments/list_comments/index.md) — Read the comments on a post (with replies). Comment ids are what reply_to_comment and moderate_comment take. held: true lists comments held for review. Needs the **comments** permission. Also available as the MCP tool `list_comments`. - [moderate_comment](https://docs.mixetape.com/api/comments/moderate_comment/index.md) — Publish, hold for review, or reject (hide) a comment on one of the account's posts. banAuthor with 'rejected' also hides the author's future comments. Needs the **comments** permission. Also available as the MCP tool `moderate_comment`. - [post_comment](https://docs.mixetape.com/api/comments/post_comment/index.md) — Post a comment on a public post as the channel itself — e.g. from a Short, a link to the full video. Neither API can pin it; pin it on the platform. Needs the **comments** permission. Also available as the MCP tool `post_comment`. - [reply_to_comment](https://docs.mixetape.com/api/comments/reply_to_comment/index.md) — Reply to a comment on one of the account's posts, as the channel. Needs the **comments** permission. Also available as the MCP tool `reply_to_comment`. - [add_to_collection](https://docs.mixetape.com/api/manage/add_to_collection/index.md) — Add a post that is on the platform to a collection (YouTube playlist, or save a Pin to another Pinterest board). position 0 puts it first; omitted puts it last. For a post still 'scheduled', set metadata.playlistIds instead. Needs the **manage** permission. Also available as the MCP tool `add_to_collection`. - [create_collection](https://docs.mixetape.com/api/manage/create_collection/index.md) — Create a collection on the account: a YouTube playlist or a Pinterest board. Needs the **manage** permission. Also available as the MCP tool `create_collection`. - [edit_published_post](https://docs.mixetape.com/api/manage/edit_published_post/index.md) — Change the details of a post that is already on the platform (uploaded or published). YouTube: title, description, tags, category, privacy, made-for-kids, language and localizations (50 quota units). Facebook: title and description. Only the given fields change; null clears one. Needs the **manage** permission. Also available as the MCP tool `edit_published_post`. - [upload_caption](https://docs.mixetape.com/api/manage/upload_caption/index.md) — Upload a subtitle track to a post on the platform: public https SRT or WebVTT on YouTube (400–450 quota units), SRT on Facebook. A track with the same language (and name) is replaced. Needs the **manage** permission. Also available as the MCP tool `upload_caption`. - [cancel_post](https://docs.mixetape.com/api/publish/cancel_post/index.md) — Cancel a post that is still 'scheduled'. Needs the **publish** permission. Also available as the MCP tool `cancel_post`. - [create_post](https://docs.mixetape.com/api/publish/create_post/index.md) — Schedule a video on a connected account (see list_accounts for each account's platform). The post waits in mixetape (editable, cancellable) until shortly before scheduledAt. YouTube and Facebook get it leadMinutes early, unpublished, and publish it themselves at scheduledAt; Instagram and Threads get it prepared leadMinutes early and mixetape publishes it at scheduledAt; TikTok and Pinterest cannot hold a post, so mixetape posts it at scheduledAt. Each platform takes its own metadata (Facebook format reel for a Reel, Pinterest boardId is required, TikTok privacyLevel). Thumbnail, playlists and captions are applied right after upload where the platform supports them; firstComment is posted once it is public. mediaUrl: a public https URL, or an r2:// URL from mixetape storage (create_upload / import_file). Needs the **publish** permission. Also available as the MCP tool `create_post`. - [retry_post](https://docs.mixetape.com/api/publish/retry_post/index.md) — Send a 'failed' post again — now, or at its original time if that is still ahead. Needs the **publish** permission. Also available as the MCP tool `retry_post`. - [set_thumbnail](https://docs.mixetape.com/api/publish/set_thumbnail/index.md) — Set or replace the custom thumbnail of a post already on the platform. imageUrl: public https JPEG/PNG (YouTube: ≤ 2 MB, 1280×720, verified channel). For a post still 'scheduled', use update_post with metadata.thumbnailUrl. Needs the **publish** permission. Also available as the MCP tool `set_thumbnail`. - [update_post](https://docs.mixetape.com/api/publish/update_post/index.md) — Change a post that is still 'scheduled' (waiting in mixetape): its time, lead, media, caption or metadata (merged; null clears a field). Once it is on the platform, use edit_published_post. Needs the **publish** permission. Also available as the MCP tool `update_post`. - [get_post](https://docs.mixetape.com/api/read/get_post/index.md) — One post with its status, error, platform link and attempts. Needs the **read** permission. Also available as the MCP tool `get_post`. - [get_post_insights](https://docs.mixetape.com/api/read/get_post_insights/index.md) — How a post that is on the platform stands right now: visibility, processing, scheduled publish time, any rejection, plus lifetime views, likes and comments. For watch time and retention use get_post_analytics. Needs the **read** permission. Also available as the MCP tool `get_post_insights`. - [list_accounts](https://docs.mixetape.com/api/read/list_accounts/index.md) — List the connected channels: id, platform, name, handle, status, and the capabilities its platform supports (e.g. comments, analytics). status 'reconnect' means the channel must be connected again (connect_channel, or /channels) — also after mixetape asks for new permissions. Needs the **read** permission. Also available as the MCP tool `list_accounts`. - [list_captions](https://docs.mixetape.com/api/read/list_captions/index.md) — List the caption tracks of a post on the platform (language, name, kind; 'asr' is automatic). Needs the **read** permission. Also available as the MCP tool `list_captions`. - [list_collections](https://docs.mixetape.com/api/read/list_collections/index.md) — List the account's collections — playlists on YouTube, boards on Pinterest — with id, title, visibility and item count. Use an id in metadata.playlistIds (YouTube), metadata.boardId (Pinterest) or add_to_collection. Needs the **read** permission. Also available as the MCP tool `list_collections`. - [list_posts](https://docs.mixetape.com/api/read/list_posts/index.md) — List posts, newest scheduled time first, a page at a time — narrow by account, platform, status, time or words in the title/caption. Statuses: scheduled (waiting in mixetape, editable with update_post), publishing (uploading), uploaded (on the platform, private until its time), published (live; change with edit_published_post), failed, cancelled. Returns { posts, nextCursor }; pass nextCursor back as cursor for the next page (null on the last). Needs the **read** permission. Also available as the MCP tool `list_posts`. - [Account](https://docs.mixetape.com/api/schemas/Account/index.md) - [Error](https://docs.mixetape.com/api/schemas/Error/index.md) - [Post](https://docs.mixetape.com/api/schemas/Post/index.md) - [create_upload](https://docs.mixetape.com/api/storage/create_upload/index.md) — Upload a local file (up to 5 GB) to mixetape storage. Returns uploadUrl, a presigned URL valid for 6 hours: send the whole file in one PUT with exactly the returned Content-Type header — the returned curl command does it (replace ). No API key is needed for the PUT. Then use url (r2://…) as mediaUrl in create_post; publicUrl (media.mixetape.com) is the same file for services outside mixetape. For a file already on the web use import_file. Needs the **storage** permission. Also available as the MCP tool `create_upload`. - [delete_file](https://docs.mixetape.com/api/storage/delete_file/index.md) — Delete a file from mixetape storage. A post that still points at it will fail to upload, so only delete files you no longer need. Needs the **storage** permission. Also available as the MCP tool `delete_file`. - [import_file](https://docs.mixetape.com/api/storage/import_file/index.md) — Copy a file from a public https URL (up to 5 GB, with a Content-Length) into mixetape storage — e.g. a video from a render service whose link expires. mixetape fetches it; nothing is sent from your machine. Returns its url (r2://…). Needs the **storage** permission. Also available as the MCP tool `import_file`. - [list_files](https://docs.mixetape.com/api/storage/list_files/index.md) — List the files in your mixetape storage, newest first, with url (r2://…) and size — narrow by words in the file name. Returns { files, nextCursor }; pass nextCursor back as cursor for the next page (null on the last). Needs the **storage** permission. Also available as the MCP tool `list_files`.