Docs menu · Platform rules

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.

View as Markdown

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.

Request body
{
  "content": "Our biggest update yet: dark mode, faster search and a new editor.",
  "platformContent": {
    "x": "Dark mode is here 🌙",
    "instagram": "Our biggest update yet ✨ #productupdate #darkmode",
    "threads": "Dark mode, faster search and a new editor. What should we build next?"
  },
  "accountIds": [
    "…"
  ],
  "publishNow": true
}

Photos and videos

  • Upload with POST /api/v1/media or the MCP upload_image tool, then pass ids in mediaIds (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, height and durationMs when 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

PlatformTextMediaFirst comment
X280 characters (weighted)Up to 4 photos, or 1 video (up to 20 minutes, 512 MB); not bothYes, up to 280 characters: posted as a reply to the post (or the thread's last post)
Instagram2,200 characters, at most 30 hashtags and 20 @mentionsRequired: 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)
Threads500 characters, up to 5 linksOptional: up to 20 items; photos up to 8 MB, videos up to 5 minutes and 1 GBYes, up to 500 characters: posted as a reply
Facebook63,206 charactersOptional: up to 10 photos, or 1 video up to 1 GB; not bothYes, up to 8,000 characters
TikTok2,200 charactersRequired: 1 video (3 seconds to 10 minutes) or up to 35 photos; not bothNot supported
YouTubeyoutubeTitle, up to 100 characters. Left out: the first line of the text5,000 characters (counted in bytes)Yes, up to 10,000 characters: a comment on the video
Pinterest800 charactersRequired: up to 5 photos, or 1 video (4 seconds to 15 minutes); not bothNot 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.

Text280 characters (weighted)
MediaUp to 4 photos, or 1 video (up to 20 minutes, 512 MB); not both
ThreadsxThread: up to 25 posts in all, each up to 280 characters, each with its own photos or video
First commentYes, up to 280 characters: posted as a reply to the post (or the thread's last post)
StatsNot read: X posts count as published without numbers
X thread with a photo on the second post
{
  "platformContent": {
    "x": "We rebuilt our editor from scratch. Here's what changed 🧵"
  },
  "xThread": [
    "1. It's 3x faster on big documents.",
    {
      "text": "2. Everything works offline now.",
      "mediaIds": [
        "…"
      ]
    },
    "Try it today: https://example.com/editor"
  ],
  "accountIds": [
    "…"
  ],
  "scheduledAt": "2026-10-12T09:00:00Z"
}

Instagram

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.

Caption2,200 characters, at most 30 hashtags and 20 @mentions
MediaRequired: 1 to 10 photos or videos. Photos between 4:5 (portrait) and 1.91:1 (landscape)
VideosReels 3 seconds to 15 minutes; videos in a carousel up to 60 seconds; up to 300 MB
StoriesOne photo, or a 3-60 second video up to 100 MB
First commentYes, up to 2,200 characters (not on Stories)
Daily limitAbout 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.

Text500 characters, up to 5 links
MediaOptional: up to 20 items; photos up to 8 MB, videos up to 5 minutes and 1 GB
First commentYes, up to 500 characters: posted as a reply
Daily limit250 posts per profile per day, set by Threads

Facebook

Facebook Pages (not personal profiles). Each Page you connect is its own account.

Text63,206 characters
MediaOptional: up to 10 photos, or 1 video up to 1 GB; not both
First commentYes, 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.

Caption2,200 characters
MediaRequired: 1 video (3 seconds to 10 minutes) or up to 35 photos; not both
Privacytiktok.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
InteractionsallowComments, allowDuet, allowStitch (Duet and Stitch for videos only); default true, and off when the account has them disabled
DisclosureyourBrand: true for your own business (labelled Promotional content); brandedContent: true for a paid partnership (labelled Paid partnership, can't be SELF_ONLY)
Covertiktok.coverTimestampMs: the moment of the video used as its cover
First commentNot supported
TikTok settings
{
  "content": "Our spring collection is here",
  "tiktok": {
    "privacy": "PUBLIC_TO_EVERYONE",
    "allowComments": true,
    "allowDuet": false,
    "allowStitch": false,
    "yourBrand": true,
    "coverTimestampMs": 2500
  },
  "mediaIds": [
    "…"
  ],
  "accountIds": [
    "…"
  ],
  "scheduledAt": "2026-10-12T18:00:00Z"
}

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.

TitleyoutubeTitle, up to 100 characters. Left out: the first line of the text
Description5,000 characters (counted in bytes)
MediaRequired: exactly 1 video, vertical or square, up to 3 minutes
ThumbnailyoutubeThumbnailId: an uploaded photo under 2 MB
First commentYes, up to 10,000 characters: a comment on the video

Pinterest

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.

Description800 characters
MediaRequired: up to 5 photos, or 1 video (4 seconds to 15 minutes); not both
First commentNot supported