{
  "generated": "2026-08-16",
  "platforms": [
    {
      "platform": "tiktok",
      "displayName": "TikTok",
      "maxChars": 2200,
      "charsByPostType": {
        "video": 2200,
        "image": 4000
      },
      "title": {
        "maxChars": 90,
        "appliesTo": "image"
      },
      "postsPerDay": 25,
      "asyncPublish": true,
      "firstComment": false,
      "deletePost": false,
      "thread": false,
      "reads": {
        "notifications": false,
        "comments": false,
        "followers": false,
        "following": false
      },
      "editProfile": false,
      "engages": [],
      "messages": false,
      "replyToComment": false,
      "media": {
        "required": true,
        "videoRequired": false,
        "maxImages": 35,
        "maxVideos": 1,
        "imageTypes": [
          "image/jpeg",
          "image/webp"
        ],
        "videoTypes": [
          "video/mp4",
          "video/quicktime",
          "video/webm"
        ],
        "maxImageBytes": 20971520,
        "maxVideoBytes": 4294967296,
        "maxVideoSeconds": 600,
        "maxImageWidth": 1080,
        "maxImageHeight": 1920,
        "minImageWidth": 540,
        "minImageHeight": 960
      },
      "options": [
        {
          "id": "mode",
          "label": "Delivery",
          "type": "enum",
          "values": [
            "direct",
            "inbox"
          ],
          "description": "direct = publish immediately; inbox = send to the creator's TikTok inbox as a draft they finish inside the TikTok app (max 5 pending per 24h, needs the video.upload scope)."
        },
        {
          "id": "privacyLevel",
          "label": "Who can view",
          "type": "enum",
          "values": [
            "PUBLIC_TO_EVERYONE",
            "MUTUAL_FOLLOW_FRIENDS",
            "FOLLOWER_OF_CREATOR",
            "SELF_ONLY"
          ],
          "description": "Must be one of the creator's available options (see publish-info). Defaults to PUBLIC_TO_EVERYONE for API calls."
        },
        {
          "id": "title",
          "label": "Photo post title",
          "type": "string",
          "values": null,
          "description": null
        },
        {
          "id": "allowComment",
          "label": "Allow comments",
          "type": "boolean",
          "values": null,
          "description": "Defaults to on when omitted (API/MCP). Pass false to disable. Compose UI still starts unchecked per TikTok guidelines."
        },
        {
          "id": "allowDuet",
          "label": "Allow Duet",
          "type": "boolean",
          "values": null,
          "description": null
        },
        {
          "id": "allowStitch",
          "label": "Allow Stitch",
          "type": "boolean",
          "values": null,
          "description": null
        },
        {
          "id": "coverTimestampMs",
          "label": "Video cover frame (ms)",
          "type": "number",
          "values": null,
          "description": null
        },
        {
          "id": "photoCoverIndex",
          "label": "Cover image index",
          "type": "number",
          "values": null,
          "description": null
        },
        {
          "id": "autoAddMusic",
          "label": "Auto-add music (photo posts)",
          "type": "boolean",
          "values": null,
          "description": null
        },
        {
          "id": "brandContent",
          "label": "Paid partnership (branded content)",
          "type": "boolean",
          "values": null,
          "description": null
        },
        {
          "id": "brandOrganic",
          "label": "Promoting my own business",
          "type": "boolean",
          "values": null,
          "description": null
        },
        {
          "id": "isAigc",
          "label": "AI-generated content disclosure",
          "type": "boolean",
          "values": null,
          "description": null
        }
      ],
      "notes": [
        "Publishing is asynchronous. Once TikTok confirms publication the target is published; if public moderation has not exposed the post id yet, permalinkPending stays true until the exact URL is resolved.",
        "Privacy options come live from TikTok creator_info and are passed through unchanged.",
        "Media is pulled from a verified URL (PULL_FROM_URL); PostLake's media domain is verified."
      ],
      "metrics": [
        "views"
      ]
    },
    {
      "platform": "instagram",
      "displayName": "Instagram",
      "maxChars": 2200,
      "charsByPostType": null,
      "title": null,
      "postsPerDay": 100,
      "asyncPublish": false,
      "firstComment": false,
      "deletePost": false,
      "thread": false,
      "reads": {
        "notifications": false,
        "comments": false,
        "followers": false,
        "following": false
      },
      "editProfile": false,
      "engages": [],
      "messages": false,
      "replyToComment": false,
      "media": {
        "required": true,
        "videoRequired": false,
        "maxImages": 10,
        "maxVideos": 1,
        "imageTypes": [
          "image/jpeg"
        ],
        "videoTypes": [
          "video/mp4",
          "video/quicktime"
        ],
        "maxImageBytes": 8388608,
        "maxVideoBytes": 314572800,
        "maxVideoSeconds": 900,
        "mixedAspectRatios": "first"
      },
      "options": [
        {
          "id": "shareToFeed",
          "label": "Also show in feed (Reels)",
          "type": "boolean",
          "values": null,
          "description": null
        },
        {
          "id": "locationId",
          "label": "Location id",
          "type": "string",
          "values": null,
          "description": "A Facebook Page place id to tag as the post's location."
        },
        {
          "id": "collaborators",
          "label": "Collaborators",
          "type": "string",
          "values": null,
          "description": "Comma-separated Instagram usernames to invite as collaborators."
        },
        {
          "id": "thumbOffset",
          "label": "Cover frame (ms)",
          "type": "number",
          "values": null,
          "description": "Milliseconds into a Reel to use as the cover thumbnail."
        }
      ],
      "notes": [],
      "metrics": [
        "impressions",
        "views",
        "reach",
        "followers"
      ]
    },
    {
      "platform": "x",
      "displayName": "X",
      "maxChars": 280,
      "charsByPostType": null,
      "title": null,
      "postsPerDay": null,
      "asyncPublish": false,
      "firstComment": true,
      "deletePost": true,
      "thread": true,
      "reads": {
        "notifications": true,
        "comments": true,
        "followers": true,
        "following": false
      },
      "editProfile": false,
      "engages": [],
      "messages": true,
      "replyToComment": true,
      "media": {
        "required": false,
        "videoRequired": false,
        "maxImages": 4,
        "maxVideos": 1,
        "imageTypes": [
          "image/jpeg",
          "image/png",
          "image/webp",
          "image/gif"
        ],
        "videoTypes": [
          "video/mp4"
        ],
        "maxImageBytes": 5242880,
        "maxVideoBytes": 536870912,
        "maxVideoSeconds": 140
      },
      "options": [
        {
          "id": "replySettings",
          "label": "Who can reply",
          "type": "enum",
          "values": [
            "everyone",
            "following",
            "mentionedUsers",
            "subscribers"
          ],
          "description": null
        },
        {
          "id": "superFollowersOnly",
          "label": "Super Followers only",
          "type": "boolean",
          "values": null,
          "description": null
        }
      ],
      "notes": [],
      "metrics": [
        "impressions"
      ]
    },
    {
      "platform": "linkedin",
      "displayName": "LinkedIn",
      "maxChars": 3000,
      "charsByPostType": null,
      "title": null,
      "postsPerDay": null,
      "asyncPublish": false,
      "firstComment": true,
      "deletePost": true,
      "thread": false,
      "reads": {
        "notifications": false,
        "comments": false,
        "followers": false,
        "following": false
      },
      "editProfile": false,
      "engages": [
        "like",
        "unlike"
      ],
      "messages": false,
      "replyToComment": true,
      "media": {
        "required": false,
        "videoRequired": false,
        "maxImages": 20,
        "maxVideos": 0,
        "imageTypes": [
          "image/jpeg",
          "image/png",
          "image/gif"
        ],
        "videoTypes": [
          "video/mp4"
        ],
        "maxImageBytes": 8388608,
        "maxVideoBytes": 524288000,
        "maxVideoSeconds": 1800
      },
      "options": [
        {
          "id": "visibility",
          "label": "Who can see it",
          "type": "enum",
          "values": [
            "PUBLIC",
            "CONNECTIONS"
          ],
          "description": null
        },
        {
          "id": "allowReshare",
          "label": "Allow resharing",
          "type": "boolean",
          "values": null,
          "description": null
        }
      ],
      "notes": [],
      "metrics": []
    },
    {
      "platform": "facebook",
      "displayName": "Facebook",
      "maxChars": 63206,
      "charsByPostType": null,
      "title": null,
      "postsPerDay": 25,
      "asyncPublish": false,
      "firstComment": true,
      "deletePost": true,
      "thread": false,
      "reads": {
        "notifications": false,
        "comments": true,
        "followers": false,
        "following": false
      },
      "editProfile": false,
      "engages": [
        "like",
        "unlike"
      ],
      "messages": false,
      "replyToComment": true,
      "media": {
        "required": false,
        "videoRequired": false,
        "maxImages": 10,
        "maxVideos": 1,
        "imageTypes": [
          "image/jpeg",
          "image/png",
          "image/gif",
          "image/webp"
        ],
        "videoTypes": [
          "video/mp4",
          "video/quicktime"
        ],
        "maxImageBytes": 10485760,
        "maxVideoBytes": 1073741824,
        "maxVideoSeconds": 14400
      },
      "options": [
        {
          "id": "link",
          "label": "Link",
          "type": "string",
          "values": null,
          "description": "URL shown as a link preview on text posts. Ignored for photo albums and videos."
        },
        {
          "id": "locationId",
          "label": "Location id",
          "type": "string",
          "values": null,
          "description": "A Facebook Page / place id to tag on the post."
        }
      ],
      "notes": [],
      "metrics": [
        "impressions",
        "reach"
      ]
    },
    {
      "platform": "threads",
      "displayName": "Threads",
      "maxChars": 500,
      "charsByPostType": null,
      "title": null,
      "postsPerDay": 250,
      "asyncPublish": false,
      "firstComment": true,
      "deletePost": false,
      "thread": false,
      "reads": {
        "notifications": false,
        "comments": true,
        "followers": false,
        "following": false
      },
      "editProfile": false,
      "engages": [],
      "messages": false,
      "replyToComment": true,
      "media": {
        "required": false,
        "videoRequired": false,
        "maxImages": 20,
        "maxVideos": 1,
        "imageTypes": [
          "image/jpeg",
          "image/png"
        ],
        "videoTypes": [
          "video/mp4",
          "video/quicktime"
        ],
        "maxImageBytes": 8388608,
        "maxVideoBytes": 1073741824,
        "maxVideoSeconds": 300
      },
      "options": [
        {
          "id": "replyControl",
          "label": "Who can reply",
          "type": "enum",
          "values": [
            "everyone",
            "accounts_you_follow",
            "mentioned_only"
          ],
          "description": null
        },
        {
          "id": "topicTag",
          "label": "Topic tag",
          "type": "string",
          "values": null,
          "description": null
        }
      ],
      "notes": [],
      "metrics": [
        "views",
        "followers"
      ]
    },
    {
      "platform": "bluesky",
      "displayName": "Bluesky",
      "maxChars": 300,
      "charsByPostType": null,
      "title": null,
      "postsPerDay": null,
      "asyncPublish": false,
      "firstComment": true,
      "deletePost": true,
      "thread": true,
      "reads": {
        "notifications": true,
        "comments": true,
        "followers": true,
        "following": true
      },
      "editProfile": true,
      "engages": [
        "like",
        "unlike",
        "repost",
        "unrepost",
        "follow",
        "unfollow",
        "block",
        "unblock",
        "mute",
        "unmute"
      ],
      "messages": true,
      "replyToComment": true,
      "media": {
        "required": false,
        "videoRequired": false,
        "maxImages": 4,
        "maxVideos": 1,
        "imageTypes": [
          "image/jpeg",
          "image/png",
          "image/webp",
          "image/gif"
        ],
        "videoTypes": [
          "video/mp4"
        ],
        "maxImageBytes": 1048576,
        "maxVideoBytes": 52428800,
        "maxVideoSeconds": 60
      },
      "options": [
        {
          "id": "whoCanReply",
          "label": "Who can reply",
          "type": "enum",
          "values": [
            "everybody",
            "nobody",
            "mentioned",
            "following"
          ],
          "description": null
        },
        {
          "id": "whoCanQuote",
          "label": "Who can quote",
          "type": "enum",
          "values": [
            "everybody",
            "nobody"
          ],
          "description": "Bluesky calls this a postgate. 'nobody' stops anyone quote-posting it."
        },
        {
          "id": "quoteOf",
          "label": "Quote this post",
          "type": "string",
          "values": null,
          "description": "An at:// uri or a bsky.app post url to quote. The quoted post appears embedded beneath yours."
        },
        {
          "id": "contentLabel",
          "label": "Content warning",
          "type": "enum",
          "values": [
            "none",
            "sexual",
            "nudity",
            "graphic-media"
          ],
          "description": null
        },
        {
          "id": "language",
          "label": "Language",
          "type": "string",
          "values": null,
          "description": "BCP-47 code(s), e.g. en"
        }
      ],
      "notes": [],
      "metrics": [
        "followers"
      ]
    },
    {
      "platform": "youtube",
      "displayName": "YouTube",
      "maxChars": 5000,
      "charsByPostType": null,
      "title": {
        "maxChars": 100,
        "appliesTo": "video"
      },
      "postsPerDay": 100,
      "asyncPublish": false,
      "firstComment": true,
      "deletePost": true,
      "thread": false,
      "reads": {
        "notifications": true,
        "comments": true,
        "followers": true,
        "following": false
      },
      "editProfile": false,
      "engages": [
        "like",
        "unlike",
        "follow",
        "unfollow"
      ],
      "messages": false,
      "replyToComment": true,
      "media": {
        "required": true,
        "videoRequired": true,
        "maxImages": 0,
        "maxVideos": 1,
        "imageTypes": [],
        "videoTypes": [
          "video/mp4",
          "video/quicktime",
          "video/webm"
        ],
        "maxVideoBytes": 2147483648
      },
      "options": [
        {
          "id": "privacyStatus",
          "label": "Privacy",
          "type": "enum",
          "values": [
            "public",
            "unlisted",
            "private"
          ],
          "description": null
        },
        {
          "id": "categoryId",
          "label": "Category id",
          "type": "string",
          "values": null,
          "description": null
        },
        {
          "id": "tags",
          "label": "Tags (comma-separated)",
          "type": "string",
          "values": null,
          "description": null
        },
        {
          "id": "title",
          "label": "Video title",
          "type": "string",
          "values": null,
          "description": null
        },
        {
          "id": "madeForKids",
          "label": "Made for kids",
          "type": "boolean",
          "values": null,
          "description": null
        },
        {
          "id": "license",
          "label": "License",
          "type": "enum",
          "values": [
            "youtube",
            "creativeCommon"
          ],
          "description": null
        }
      ],
      "notes": [],
      "metrics": [
        "views"
      ]
    },
    {
      "platform": "pinterest",
      "displayName": "Pinterest",
      "maxChars": 500,
      "charsByPostType": null,
      "title": null,
      "postsPerDay": null,
      "asyncPublish": false,
      "firstComment": false,
      "deletePost": true,
      "thread": false,
      "reads": {
        "notifications": false,
        "comments": false,
        "followers": true,
        "following": false
      },
      "editProfile": false,
      "engages": [
        "repost",
        "follow",
        "unfollow"
      ],
      "messages": false,
      "replyToComment": false,
      "media": {
        "required": true,
        "videoRequired": false,
        "maxImages": 5,
        "maxVideos": 1,
        "imageTypes": [
          "image/jpeg",
          "image/png"
        ],
        "videoTypes": [
          "video/mp4"
        ],
        "maxImageBytes": 20971520,
        "maxVideoBytes": 2147483648,
        "maxVideoSeconds": 900
      },
      "options": [
        {
          "id": "boardId",
          "label": "Board id",
          "type": "string",
          "values": null,
          "description": "Overrides the board chosen at connect time."
        },
        {
          "id": "link",
          "label": "Destination link",
          "type": "string",
          "values": null,
          "description": null
        },
        {
          "id": "altText",
          "label": "Alt text",
          "type": "string",
          "values": null,
          "description": null
        }
      ],
      "notes": [],
      "metrics": [
        "impressions"
      ]
    }
  ]
}
