Skip to content

Platform Parameters Reference

This document details the platform-specific parameters, media constraints, and post formats available for each supported social network.

Pass platform-specific options in the platforms object when creating a post:

{
"post": {
"body": "My post content"
},
"profiles": ["instagram", "youtube"],
"media": ["https://example.com/video.mp4"],
"platforms": {
"instagram": {
"format": "reel",
"first_comment": "Link in bio!"
},
"youtube": {
"title": "My Video Title",
"privacy_status": "public"
}
}
}

FormatDescription
postFeed post (default)
reelFacebook Reel
storyFacebook Story
ParameterTypeRequiredDescription
formatstringNoSet to "post" (default)
first_commentstringNoComment to add after posting
page_idstringYesPage ID when you have multiple pages. Leave blank if you only have one page

Character limit: 63,206 characters

ParameterTypeRequiredDescription
formatstringYesSet to "reel"
titlestringNoTitle of the reel
page_idstringYesPage ID when you have multiple pages. Use /api/profiles/:id/placements to get available pages

Character limit: 2,200 characters

ParameterTypeRequiredDescription
formatstringYesSet to "story"
page_idstringYesPage ID when you have multiple pages. Use /api/profiles/:id/placements to get available pages
Media TypeMax SizeFormatsMax CountDuration
Image10 MBjpg, png, gif, webp10-
Video4 GBmp4, mov11s - 4 hours
  • Text content: Optional
  • Media required: No
  • Mix video and image: No
  • Minimum image dimensions: 200x200 pixels
Media TypeMax SizeFormatsMax CountDuration
Video300 MBmp4, mov13s - 60s
  • Text content: Optional (caption)
  • Media required: Yes (video only)
  • Mix video and image: No
Media TypeMax SizeFormatsMax CountDuration
Image10 MBjpg, png1-
Video4 GBmp4, mov13s - 60s
  • Text content: Not allowed
  • Media required: Yes
  • Mix video and image: No
  • Minimum dimensions: 500x500 pixels
{
"platforms": {
"facebook": {
"format": "post",
"first_comment": "What do you think? Let us know!",
"page_id": "123456789"
}
}
}

FormatDescription
postFeed post (default)
reelInstagram Reel
storyInstagram Story
ParameterTypeRequiredDescription
formatstringNoSet to "post" (default)
first_commentstringNoComment to add after posting (max 2,196 characters)
collaboratorsarrayNoList of collaborator usernames

Character limit: 2,200 characters

ParameterTypeRequiredDescription
formatstringYesSet to "reel"
first_commentstringNoComment to add after posting (max 2,196 characters)
cover_url / cover_filestring / fileNoCover image for the reel. Pass cover_url (URL) in JSON or cover_file (file upload) in multipart. See Cover Images
audio_namestringNoName of the audio
trial_strategystringNoTrial strategy for trial reels ("MANUAL" or "SS_PERFORMANCE")
collaboratorsarrayNoList of up to 3 collaborator usernames
thumb_offsetstringNoThumbnail offset in milliseconds. If both offset and cover_url are provided, cover_url takes precedence

Character limit: 2,200 characters

ParameterTypeRequiredDescription
formatstringYesSet to "story"
  • 100 posts per day per user (24-hour rolling window, across all Instagram formats)
  • Instagram can also limit too frequent posting with an error saying “User is performing too many actions”. In this case you need to slow down your posting and wait for some time.
Media TypeMax SizeFormatsMax CountDuration
Image8 MBjpg, png10-
Video300 MBmp4, mov13s - 60min
  • Text content: Optional (caption)
  • Media required: Yes
  • Mix video and image: Yes (carousel)
  • Minimum dimensions: 200x200 pixels
Media TypeMax SizeFormatsMax CountDuration
Image--0-
Video300 MBmp4, mov13s - 90min
  • Text content: Optional (caption)
  • Media required: Yes (video only)
  • Mix video and image: No
Media TypeMax SizeFormatsMax CountDuration
Image8 MBjpg, png1-
Video100 MBmp4, mov11s - 60min
  • Text content: Not allowed
  • Media required: Yes
  • Mix video and image: No
  • Minimum dimensions: 200x200 pixels
// Feed post with carousel
{
"platforms": {
"instagram": {
"format": "post",
"first_comment": "Follow for more content!",
"collaborators": ["username1", "username2"]
}
}
}
// Reel
{
"platforms": {
"instagram": {
"format": "reel",
"first_comment": "Full tutorial on our channel!",
"cover_url": "https://example.com/thumbnail.jpg",
"audio_name": "Trending Audio Track",
"trial_strategy": "MANUAL",
"collaborators": ["username1", "username2"],
"thumb_offset": "5000"
}
}
}

FormatDescription
videoVideo post (default)
imageImage post (up to 35 images)
ParameterTypeRequiredDescription
formatstringNoSet to "video" (default)
privacy_statusstringYesPrivacy setting for the video
made_with_aibooleanNoMark content as AI-generated
disable_commentbooleanNoDisable comments
disable_duetbooleanNoDisable duets
disable_stitchbooleanNoDisable stitches
brand_content_togglebooleanNoMark video as paid partnership promoting a third-party business
brand_organic_togglebooleanNoMark video as paid partnership promoting your own brand

Character limit: 2,200 characters

ParameterTypeRequiredDescription
formatstringYesSet to "image"
privacy_statusstringYesPrivacy setting for the post
photo_cover_indexintegerNoIndex (0-based) of photo to use as cover
auto_add_musicbooleanNoEnable automatic music
disable_commentbooleanNoDisable comments
brand_content_togglebooleanNoMark post as paid partnership promoting a third-party business
brand_organic_togglebooleanNoMark post as paid partnership promoting your own brand

Character limit: 2,200 characters

ValueDescription
PUBLIC_TO_EVERYONEVisible to all users
MUTUAL_FOLLOW_FRIENDSVisible to mutual followers
FOLLOWER_OF_CREATORVisible to followers only
SELF_ONLYPrivate (only you)
Media TypeMax SizeFormatsMax CountDuration
Video4 GBmp4, mov, av, webm13s - 10min
  • Text content: Optional (caption)
  • Media required: Yes
  • Minimum video dimensions: 720x1280 pixels
Media TypeMax SizeFormatsMax CountDuration
Image20 MBjpg, gif35-
  • Text content: Optional (caption)
  • Media required: Yes
// Video post
{
"platforms": {
"tiktok": {
"format": "video",
"privacy_status": "PUBLIC_TO_EVERYONE",
"disable_comment": false,
"disable_duet": false,
"disable_stitch": false,
"made_with_ai": false,
"brand_content_toggle": false,
"brand_organic_toggle": false
}
}
}
// Image post
{
"platforms": {
"tiktok": {
"format": "image",
"privacy_status": "PUBLIC_TO_EVERYONE",
"photo_cover_index": 0,
"auto_add_music": true
}
}
}

FormatDescription
postFeed post (default)
ParameterTypeRequiredDescription
organization_idstringNoPost on behalf of an organization/company page

Character limit: 3,000 characters

Media TypeMax SizeFormatsMax CountDuration
Image8 MBjpg, png, gif20-
Video5 GBmp4, mov, avi10 - 15min
Document100 MBpdf, doc, docx, ppt, pptx1-
  • Text content: Optional
  • Media required: No
  • Mix video and image: No
  • Mix documents with images/videos: No
  • Minimum image dimensions: 552x276 pixels
  • Document max pages: 300
// Post to personal profile
{
"platforms": {
"linkedin": {}
}
}
// Post to company page
{
"platforms": {
"linkedin": {
"organization_id": "12345678"
}
}
}
// Post with document
{
"post": {
"body": "Check out our latest report"
},
"profiles": ["linkedin"],
"media": ["https://example.com/report.pdf"],
"platforms": {
"linkedin": {
"organization_id": "12345678"
}
}
}

FormatDescription
postChannel video (default)
ParameterTypeRequiredDescription
titlestringNoVideo title (max 100 characters)
privacy_statusstringYesVideo visibility setting
cover_url / cover_filestring / fileNoCustom thumbnail image (requires a verified YouTube account). Pass cover_url (URL) in JSON or cover_file (file upload) in multipart. See Cover Images
made_for_kidsbooleanNoWhether the video is made for kids
tagsarrayNoList of tags for the video
category_idstringNoYouTube video category ID (defaults to "22" / People & Blogs)
contains_synthetic_mediabooleanNoDisclose if the video contains altered or synthetic (AI-generated) content

Character limit: 5,000 characters (description)

ValueDescription
publicVisible to everyone
unlistedOnly accessible via link
privateOnly visible to you
Media TypeMax SizeFormatsMax CountDuration
Image0-0-
Video256 GBmp4, mov, avi, wmv, flv, 3gp11s+
  • Text content: Optional (description)
  • Media required: Yes (video only)
  • Mix video and image: No
  • Note: The post body becomes the video description
{
"platforms": {
"youtube": {
"title": "How to Build an API Integration",
"privacy_status": "public",
"cover_url": "https://example.com/custom-thumbnail.jpg",
"made_for_kids": false
}
}
}

FormatDescription
postTweet (default)

X (Twitter) does not have custom parameters. Content format is determined automatically based on media.

X supports threads (tweet chains). See the Threads section in the Posts API docs for details.

Media TypeMax SizeFormatsMax CountDuration
Image5 MBjpg, png, webp, gif4-
Video512 MBmp4, mov11s - 140s
  • Text content: Optional
  • Media required: No
  • Mix video and image: No
  • Minimum image dimensions: 4x4 pixels
  • Minimum video dimensions: 32x32 pixels
  • Character limit: 280 characters (free accounts) or 25,000 characters (paid accounts)
{
"platforms": {
"twitter": {}
}
}

FormatDescription
postFeed post (default)

Threads does not have custom parameters.

Character limit: 500 characters

Threads supports thread conversations (sequential replies). See the Threads section in the Posts API docs for details.

Media TypeMax SizeFormatsMax CountDuration
Image8 MBjpg, png, gif, webp20-
Video1 GBmp4, mov10 - 5min
  • Text content: Optional
  • Media required: No
  • Mix video and image: Yes
  • Minimum dimensions: 200x200 pixels
{
"platforms": {
"threads": {}
}
}

FormatDescription
pinPin (default)
ParameterTypeRequiredDescription
titlestringNoTitle of the pin (max 100 characters)
board_idstringYesID of the board. Use /api/profiles/:id/placements to get available boards
destination_linkstringNoURL of the destination link (max 2,048 characters)
cover_url / cover_filestring / fileNoCover image (video only). Pass cover_url (URL) in JSON or cover_file (file upload) in multipart. See Cover Images
thumb_offsetintegerNoThumbnail image offset in seconds (video only)

Character limit: 500 characters (description)

Media TypeMax SizeFormatsMax CountDuration
Image32 MBjpg, gif, png, webp1-
Video2 GBmp4, mov14s - 15min
  • Text content: Optional (description)
  • Media required: Yes
  • Mix video and image: No
{
"platforms": {
"pinterest": {
"title": "10 Tips for Better Photography",
"board_id": "987654321",
"destination_link": "https://example.com/blog/photography-tips"
}
}
}

FormatDescription
postFeed post (default)

Bluesky does not have custom parameters.

Character limit: 300 characters (graphemes — emoji and combining sequences count as one character on Bluesky’s side).

Bluesky supports thread conversations (sequential replies). See the Threads section in the Posts API docs for details.

Media TypeMax SizeFormatsMax CountDuration
Image1 MBjpg, png, webp, gif4-
Video50 MBmp4, mov11s - 60s
  • Text content: Optional
  • Media required: No
  • Mix video and image: No
{
"platforms": {
"bluesky": {}
}
}

Telegram is a bring-your-own-bot integration: each connected profile represents one bot (created via @BotFather) and can publish to any Telegram channel where that bot has been added as administrator. See the Telegram BYO bot guide for the full setup.

FormatDescription
postChannel post (default)
ParameterTypeRequiredDescription
chat_idstringYesID of the destination Telegram chat (channel/group). Use /api/profiles/:id/placements to list channels the bot can post to.
parse_modestringNoMessage formatting: "HTML" or "MarkdownV2". Omit for plain text.
disable_link_previewbooleanNoDon’t render a preview for links in the message.
disable_notificationbooleanNoSend the message silently (no notification sound).

Character limit: 4,096 characters

Media TypeMax SizeFormatsMax CountDuration
Image10 MBjpg, png, webp, gif10-
Video50 MBmp4, mov10-
Document50 MBpdf, doc, docx, zip, mp3, wav1-
  • Text content: Optional
  • Media required: No
  • Mix video and image: Yes (media group)
{
"post": {
"body": "Latest update — check it out 👀"
},
"profiles": ["telegram"],
"platforms": {
"telegram": {
"chat_id": "-1001234567890",
"parse_mode": "HTML",
"disable_link_preview": true
}
}
}

Google Business posts are local updates attached to a specific Business Profile location. Each connected profile may manage multiple Google accounts and any number of locations — every post must specify which location it targets via location_id. List available locations with /api/profiles/:id/placements.

Three formats share the same endpoint: standard local posts, event announcements, and promotional offers. Each format accepts only its relevant parameters — fields are scoped per-format.

FormatDescription
standardPlain local post (default)
eventEvent with a title and date range
offerPromotion with a validity window and optional coupon
ParameterTypeRequiredDescription
formatstringNostandard (default), event, or offer
location_idstringYesFull location resource path (e.g. accounts/123456789/locations/987654321)
language_codestringNoBCP 47 code (e.g. en, de). Defaults to en. Metadata only — does not translate the body.
cta_action_typestringNoLEARN_MORE, BOOK, ORDER, SHOP, SIGN_UP, or CALL
cta_urlstringConditionalHTTPS URL the CTA button opens. Required for every CTA type except CALL.
ParameterTypeRequiredDescription
event_titlestringYesEvent title shown on the local-post card
event_start_datestringYesYYYY-MM-DD
event_end_datestringYesYYYY-MM-DD
event_start_timestringNoHH:MM in 24-hour format
event_end_timestringNoHH:MM in 24-hour format
ParameterTypeRequiredDescription
event_start_datestringYesYYYY-MM-DD. Start of the offer validity window.
event_end_datestringYesYYYY-MM-DD. End of the offer validity window.
event_start_timestringNoHH:MM in 24-hour format
event_end_timestringNoHH:MM in 24-hour format
event_titlestringNoOffer headline (defaults to "Special Offer" if blank)
offer_coupon_codestringNoPromo code rendered with the offer
offer_redeem_urlstringNoURL where the offer can be redeemed
offer_termsstringNoTerms and conditions for the offer

Character limit: 1,500 characters (post body)

Media TypeMax SizeFormatsMax CountNotes
Image5 MBjpg, png1Min 400×300 px (recommended 1200×900, 4:3)
Video0Not supported by Google Business local posts
  • Text content: Optional
  • Media required: No (text-only posts allowed)
  • Mix video and image: No
  • Categories: certain verticals (e.g. lodging) have local posts disabled by Google and will return a validation error

standard post with CTA:

{
"post": {
"body": "We're now open on Sundays from 10am to 4pm — come visit!"
},
"profiles": ["google_business"],
"platforms": {
"google_business": {
"format": "standard",
"location_id": "accounts/123456789/locations/987654321",
"cta_action_type": "LEARN_MORE",
"cta_url": "https://acme.example.com/hours"
}
}
}

event post:

{
"post": {
"body": "Join us for our 5-year anniversary party — live music, free coffee, prizes."
},
"profiles": ["google_business"],
"platforms": {
"google_business": {
"format": "event",
"location_id": "accounts/123456789/locations/987654321",
"event_title": "Acme Coffee 5-Year Anniversary",
"event_start_date": "2026-06-15",
"event_start_time": "18:00",
"event_end_date": "2026-06-15",
"event_end_time": "22:00",
"cta_action_type": "LEARN_MORE",
"cta_url": "https://acme.example.com/anniversary"
}
}
}

offer post:

{
"post": {
"body": "20% off all whole-bean coffee through the end of the month."
},
"profiles": ["google_business"],
"platforms": {
"google_business": {
"format": "offer",
"location_id": "accounts/123456789/locations/987654321",
"event_start_date": "2026-06-01",
"event_end_date": "2026-06-30",
"offer_coupon_code": "BEANS20",
"offer_redeem_url": "https://acme.example.com/shop",
"offer_terms": "One per customer. Cannot be combined with other offers."
}
}
}

Reviews on a Google Business location surface through the Profile Comments API, not the post-level Comments API — reviews live on the location, not on a post. Reply with POST /api/profiles/:profile_id/comments and the review’s external ID as parent_id. Reviews sync twice daily (06:00 and 18:00 UTC).


Supported on: Twitter, LinkedIn, Facebook, Threads, Bluesky, Telegram, Google Business

{
"post": {
"body": "Exciting announcement coming soon!"
},
"profiles": ["twitter", "linkedin", "threads"]
}

Supported on: Instagram, Facebook, Twitter (up to 4), LinkedIn (up to 20), Threads (up to 20), Telegram (up to 10), Bluesky (up to 4)

{
"post": {
"body": "Check out these photos!"
},
"profiles": ["instagram", "facebook"],
"media": [
"https://example.com/photo1.jpg",
"https://example.com/photo2.jpg",
"https://example.com/photo3.jpg"
]
}

When posting the same video to multiple platforms, use platform-specific parameters:

{
"post": {
"body": "New video is live!"
},
"profiles": ["youtube", "tiktok", "instagram"],
"media": ["https://example.com/video.mp4"],
"platforms": {
"youtube": {
"title": "Tutorial: Getting Started",
"privacy_status": "public"
},
"tiktok": {
"privacy_status": "PUBLIC_TO_EVERYONE"
},
"instagram": {
"format": "reel"
}
}
}

Supported on: X (Twitter), Threads, Bluesky

{
"post": {
"body": "1/ Here is a thread about our launch"
},
"profiles": ["twitter", "threads"],
"thread": [
{
"body": "2/ First, we built the foundation...",
"media": ["https://example.com/screenshot.jpg"]
},
{ "body": "3/ Then we added the features..." },
{ "body": "4/ Check it out at example.com" }
]
}

Thread children can also include media arrays. See the Threads section in the Posts API docs for full details.


The API validates media against platform constraints before publishing. Common validation errors:

ErrorCause
”Media is required for feed post on Instagram”Instagram posts need at least one image or video
”Too many images for Feed post on Twitter (max: 4)“Twitter allows max 4 images
”Content is not allowed for story on Instagram”Stories don’t support text content
”Cannot mix video and image for feed post on Facebook”Some platforms don’t allow mixed media
”Documents are not supported for feed post on Twitter”Platform doesn’t support document uploads
”Too many documents for Feed post on LinkedIn (max: 1)“LinkedIn allows max 1 document per post
”Cannot mix documents with images or videos for feed post on LinkedIn”Documents must be posted alone