PostraDocsOpen Postra

Platforms and settings

Platforms you can connect

The identifier is the identifier in GET /integrations and the :platform in GET /social/:platform.

Platform Identifier Plans
Facebook Page facebook Starter, Pro, Business
Instagram (Facebook Business) instagram Starter, Pro, Business
LinkedIn linkedin Starter, Pro, Business
TikTok tiktok Starter, Pro, Business
YouTube youtube Pro, Business
Threads threads Pro, Business
Bluesky bluesky Pro, Business
Mastodon mastodon Pro, Business
Telegram telegram Pro, Business
X x Business
Discord discord Business

Asking to connect a platform outside your plan answers 402.

Bluesky and Telegram are connected in the Postra app, not through GET /social/:platform. Once connected, you post to them through the API like any other channel.

Text and media rules

Postra checks every post against these rules before it saves it. A post that breaks one gets a 400 naming the channel.

Platform Most characters Media
Facebook Page 63,206 Text only, photos, or a video. A story needs at least one photo or video.
Instagram 2,200 At least one photo or video, up to 10. A trial reel is one video.
LinkedIn 3,000 One video on its own, or images. A carousel needs 2 or more images and no video. Follow-up parts (comments) are text only.
TikTok 2,000 At least one item: one video, or one or more pictures. Never a video with other items.
YouTube 5,000 Exactly one video.
Threads 500 No extra checks
Bluesky 300 Up to 4 pictures, or 1 video, in each part.
Mastodon 500 Up to 4 images, or 1 video or GIF on its own, in each part.
Telegram 4,096 No extra checks
X 280, or 4,000 for X Premium accounts Up to 4 images, or 1 video or GIF on its own, in each part.
Discord 1,980 No extra checks

On X and Mastodon, a link counts as 23 characters, as it does on the platform itself.

GET /integration-settings/:id gives you the same rules and limits for one of your channels.

Settings for each platform

Platform options go in settings, next to integration and value in each item of posts:

{
  "integration": { "id": "8d3f1c2a-5b6e-4f7a-9c0d-1e2f3a4b5c6d" },
  "value": [{ "content": "Fresh sourdough every Saturday.", "image": [] }],
  "settings": { "who_can_reply_post": "everyone" }
}

Platforms with required settings: Instagram, TikTok, YouTube, X and Discord. A post without them is refused with 400, drafts included.

Threads, Bluesky and Telegram have no settings. Leave settings out.

Facebook Page (facebook)

All settings are optional.

Field Values Meaning
post_type post or story A normal post or a story. Default post.
url A web address A link to attach to the post

Instagram (instagram)

Field Required Values Meaning
post_type yes post or story A normal post or a story
is_trial_reel no true or false A trial reel: shown only to people who do not follow you, at first
graduation_strategy no MANUAL or SS_PERFORMANCE How a trial reel reaches your followers: by hand, or automatically based on how it performs. Default MANUAL.
collaborators no A list of {"label": "username"} Accounts to invite as collaborators. Not used for stories.
"settings": {
  "post_type": "post",
  "collaborators": [{ "label": "northsidecoffee" }]
}

LinkedIn (linkedin)

All settings are optional.

Field Values Meaning
post_as_images_carousel true or false Publish the images as a carousel
carousel_name Text Name of the carousel slides. Default slides.

TikTok (tiktok)

Field Required Values Meaning
privacy_level yes PUBLIC_TO_EVERYONE, MUTUAL_FOLLOW_FRIENDS, FOLLOWER_OF_CREATOR, SELF_ONLY Who can see the post
duet yes true or false Allow duets
stitch yes true or false Allow stitches
comment yes true or false Allow comments
autoAddMusic yes yes or no Let TikTok add music to a photo post
brand_content_toggle yes true or false The post promotes a third party (branded content)
brand_organic_toggle yes true or false The post promotes your own business
content_posting_method yes DIRECT_POST or UPLOAD Publish straight away, or send it to TikTok to finish and publish in the TikTok app
disclose no true or false The post is commercial content
title no Up to 90 characters Title of a photo post
video_made_with_ai no true or false The content was made with AI

Rules for direct posts:

"settings": {
  "privacy_level": "PUBLIC_TO_EVERYONE",
  "duet": false,
  "stitch": false,
  "comment": true,
  "autoAddMusic": "no",
  "brand_content_toggle": false,
  "brand_organic_toggle": false,
  "content_posting_method": "DIRECT_POST"
}

YouTube (youtube)

Field Required Values Meaning
title yes 2 to 100 characters Video title. The post text becomes the description.
type yes public, private or unlisted Who can see the video
selfDeclaredMadeForKids no yes or no The video is made for children
thumbnail no {"id", "path"} of an uploaded image Custom thumbnail. See Uploading media.
tags no A list of {"value", "label"} Video tags. 500 characters at most for all tags together.
"settings": {
  "title": "Our autumn menu",
  "type": "public",
  "selfDeclaredMadeForKids": "no",
  "tags": [{ "value": "baking", "label": "baking" }]
}

X (x)

Field Required Values Meaning
who_can_reply_post yes everyone, following, mentionedUsers, subscribers, verified Who can reply
community no https://x.com/i/communities/<number> Post to an X community
made_with_ai no true or false The content was made with AI
paid_partnership no true or false The post is a paid partnership
"settings": {
  "who_can_reply_post": "everyone"
}

Mastodon (mastodon)

All settings are optional.

Field Values Meaning
visibility public (default), unlisted, private Who can see the post: everyone; everyone, but not in public timelines; followers only.

Replies in a thread go out with the same visibility as the post.

Discord (discord)

Field Required Values Meaning
channel yes A Discord channel id The Discord channel to post in. It must be on the server you connected.

To list the channels you can use, run the channel’s channels tool:

curl https://app.postra.co.uk/api/public/v1/integration-trigger/3b9e2d1f-6a7c-4b8d-9e0f-1a2b3c4d5e6f \
  -H "Authorization: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"methodName": "channels", "data": {}}'

Then use an id from the answer:

"settings": {
  "channel": "1234567890123456789"
}