Reference
Platform rules and options
What each platform accepts through the API and MCP: text limits, photos and videos, and the options only some platforms have. PostNinja checks all of this before scheduling, so a post that's accepted can go out.
Text for each platform
content goes to every platform unless one has its own text in platformContent. Use it for a short X version, hashtags on Instagram, or anything else that should differ. Rules are checked against each platform's own text.
Photos and videos
- Upload with
POST /api/v1/mediaor the MCPupload_imagetool, then pass ids inmediaIds(up to 10, in display order). - Photos: JPEG, PNG or WebP up to 30 MB, converted to JPEG. Videos: MP4 or MOV up to 512 MB.
- For videos sent through the API, pass
width,heightanddurationMswhen uploading so length and shape are checked before scheduling. - Seven days after a post has gone out everywhere, its original files are deleted (the platforms keep their copies); 30 days after a failure that nobody retried. Media that was cleaned up can't be attached to a new post.
At a glance
| Platform | Text | Media | First comment |
|---|---|---|---|
| X | 280 characters (weighted) | Up to 4 photos, or 1 video (up to 20 minutes, 512 MB); not both | Yes, up to 280 characters: posted as a reply to the post (or the thread's last post) |
| 2,200 characters, at most 30 hashtags and 20 @mentions | Required: 1 to 10 photos or videos. Photos between 4:5 (portrait) and 1.91:1 (landscape) | Yes, up to 2,200 characters (not on Stories) | |
| Threads | 500 characters, up to 5 links | Optional: up to 20 items; photos up to 8 MB, videos up to 5 minutes and 1 GB | Yes, up to 500 characters: posted as a reply |
| 63,206 characters | Optional: up to 10 photos, or 1 video up to 1 GB; not both | Yes, up to 8,000 characters | |
| TikTok | 2,200 characters | Required: 1 video (3 seconds to 10 minutes) or up to 35 photos; not both | Not supported |
| YouTube | youtubeTitle, up to 100 characters. Left out: the first line of the text | 5,000 characters (counted in bytes) | Yes, up to 10,000 characters: a comment on the video |
| 800 characters | Required: up to 5 photos, or 1 video (4 seconds to 15 minutes); not both | Not supported |
X
Text counts by X's weights: most CJK characters and emoji count as 2, and every link counts as 23.
Each X post costs 10 credits, or 80 when it contains a link, for every selected X account. Thread posts and an X first comment are charged the same way, up front; anything that doesn't go out is refunded.
| Text | 280 characters (weighted) |
| Media | Up to 4 photos, or 1 video (up to 20 minutes, 512 MB); not both |
| Threads | xThread: up to 25 posts in all, each up to 280 characters, each with its own photos or video |
| First comment | Yes, up to 280 characters: posted as a reply to the post (or the thread's last post) |
| Stats | Not read: X posts count as published without numbers |
Business and Creator accounts. One photo is a feed post, one video is a Reel, and several items make a carousel.
instagramFormat: "story" posts a Story instead: exactly one photo or video, and Instagram doesn't show captions on Stories.
| Caption | 2,200 characters, at most 30 hashtags and 20 @mentions |
| Media | Required: 1 to 10 photos or videos. Photos between 4:5 (portrait) and 1.91:1 (landscape) |
| Videos | Reels 3 seconds to 15 minutes; videos in a carousel up to 60 seconds; up to 300 MB |
| Stories | One photo, or a 3-60 second video up to 100 MB |
| First comment | Yes, up to 2,200 characters (not on Stories) |
| Daily limit | About 50 posts per account per day, set by Instagram |
Threads
Any Threads profile. Text-only posts are fine. Emoji count as their UTF-8 bytes (usually 4), as Threads counts them.
| Text | 500 characters, up to 5 links |
| Media | Optional: up to 20 items; photos up to 8 MB, videos up to 5 minutes and 1 GB |
| First comment | Yes, up to 500 characters: posted as a reply |
| Daily limit | 250 posts per profile per day, set by Threads |
Facebook Pages (not personal profiles). Each Page you connect is its own account.
| Text | 63,206 characters |
| Media | Optional: up to 10 photos, or 1 video up to 1 GB; not both |
| First comment | Yes, up to 8,000 characters |
TikTok
TikTok asks the person posting to choose who can see each post and to disclose commercial content. Set these in tiktok; agents should ask rather than guess.
While our TikTok app is in TikTok's review, TikTok makes every post private (Only me), whatever privacy says.
| Caption | 2,200 characters |
| Media | Required: 1 video (3 seconds to 10 minutes) or up to 35 photos; not both |
| Privacy | tiktok.privacy: PUBLIC_TO_EVERYONE (Everyone), MUTUAL_FOLLOW_FRIENDS (Friends), FOLLOWER_OF_CREATOR (Followers), SELF_ONLY (Only me). Left out: public if the account allows it |
| Interactions | allowComments, allowDuet, allowStitch (Duet and Stitch for videos only); default true, and off when the account has them disabled |
| Disclosure | yourBrand: true for your own business (labelled Promotional content); brandedContent: true for a paid partnership (labelled Paid partnership, can't be SELF_ONLY) |
| Cover | tiktok.coverTimestampMs: the moment of the video used as its cover |
| First comment | Not supported |
Posting to TikTok means you agree to TikTok's Music Usage Confirmation, and to its Branded Content Policy for branded content.
YouTube
Posts are YouTube Shorts: one vertical or square video. The post's text becomes the description.
| Title | youtubeTitle, up to 100 characters. Left out: the first line of the text |
| Description | 5,000 characters (counted in bytes) |
| Media | Required: exactly 1 video, vertical or square, up to 3 minutes |
| Thumbnail | youtubeThumbnailId: an uploaded photo under 2 MB |
| First comment | Yes, up to 10,000 characters: a comment on the video |
Pins go to the board picked for the account on the Connections page; there's no board parameter in the API. The Pin title is the first line of the text, up to 100 characters.
| Description | 800 characters |
| Media | Required: up to 5 photos, or 1 video (4 seconds to 15 minutes); not both |
| First comment | Not supported |