Cross-Platform Posting: One API Call to Publish Everywhere

TL;DR
Publish to Instagram, LinkedIn, X, Threads, Telegram, and 6 more platforms with a single Publora API call. Platform comparison table, format handling, media conversion, and code examples.
The Problem: Managing 10+ Social Platforms is a Nightmare
If you manage a brand's social presence in 2026, you are probably dealing with an absurd number of platforms. Instagram, LinkedIn, X (Twitter), Threads, TikTok, Facebook, YouTube, Telegram, Mastodon, Bluesky, Pinterest — each with its own API, authentication flow, media requirements, character limits, and rate limits.
Publishing the same announcement across all of them means writing 11 different API integrations, handling 11 different OAuth flows, managing 11 different token refresh cycles, converting media to 11 different format requirements, and monitoring 11 different rate limit quotas. The engineering effort is enormous, the maintenance burden is worse, and the bugs are endless.
What you'll learn in this guide:
- How one API call publishes to all 11 platforms simultaneously
- Complete platform comparison table — character limits, media specs, content types
- How Publora handles format differences automatically (image conversion, thread splitting, facets)
- Platform-specific settings for fine-tuning per-platform behavior
- Code examples in JavaScript and Python for cross-platform posting
The Cost of Building It Yourself
Before looking at the solution, let's quantify what building cross-platform posting from scratch actually requires.
11
Separate API integrations to build and maintain
7+
Different OAuth flows to implement
Weeks
Of development time for a robust implementation
Each platform has unique quirks that take time to discover and handle:
JPEG only. Business account required. 50 posts/day. Carousel API capped at 10 items (native allows 20). Cannot mix images and videos in carousels.
Bluesky
Rich text requires byte-offset facets. ~1 MB image limit. App password auth (not OAuth). URLs count in full toward 300-char limit.
TikTok
Video only. Unaudited apps restricted to private posts. 23 FPS minimum. Commercial content disclosure required for brand content.
Twitter/X
Emojis count as 2 characters. Images auto-converted to PNG, max 1000px. Paid Publora plan required. Long content auto-splits into threads.
Publora eliminates all of this by providing a single unified API that handles every platform's authentication, media conversion, character counting, and rate limiting behind the scenes.
One API Call to Publish Everywhere
Here is the core concept: you send one POST request with an array of platform IDs, and Publora publishes to all of them simultaneously. The same content, adapted to each platform's requirements automatically.
JavaScript
const response = await fetch('https://api.publora.com/api/v1/create-post', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-publora-key': 'sk_YOUR_API_KEY'
},
body: JSON.stringify({
content: 'Excited to announce v3.0 of our developer toolkit! New features include real-time collaboration, AI-powered code review, and 50% faster builds. Try it now: https://example.com/v3 #devtools #opensource',
platforms: [
'instagram-17841400123456789', // Instagram
'linkedin-abc123def', // LinkedIn
'twitter-987654321', // X (Twitter)
'threads-112233445566', // Threads
'telegram-chat-100200300', // Telegram
'facebook-998877665544', // Facebook
'bluesky-did:plc:xyz789', // Bluesky
'mastodon-445566' // Mastodon
],
scheduledTime: '2026-04-10T15:00:00Z'
})
});
const data = await response.json();
console.log('Published to 8 platforms:', data.postGroupId);
Python
import requests
API_KEY = 'sk_YOUR_API_KEY'
response = requests.post(
'https://api.publora.com/api/v1/create-post',
headers={
'Content-Type': 'application/json',
'x-publora-key': API_KEY
},
json={
'content': 'Excited to announce v3.0 of our developer toolkit! New features include real-time collaboration, AI-powered code review, and 50% faster builds. Try it now: https://example.com/v3 #devtools #opensource',
'platforms': [
'instagram-17841400123456789',
'linkedin-abc123def',
'twitter-987654321',
'threads-112233445566',
'telegram-chat-100200300',
'facebook-998877665544',
'bluesky-did:plc:xyz789',
'mastodon-445566'
],
'scheduledTime': '2026-04-10T15:00:00Z'
}
)
data = response.json()
print(f'Published to 8 platforms: {data["postGroupId"]}')
That is it. One request. Eight platforms. All format differences, media conversions, and API quirks handled automatically by Publora.
The Complete Platform Comparison
Here is every platform Publora supports, with the key specifications you need to know for cross-platform content planning.
| Platform | Character Limit | Images | Video | Text Only |
|---|---|---|---|---|
| 2,200 | JPEG only, up to 10 (carousel) | MP4/MOV, up to 15 min (Reels) | No (media required) | |
| 3,000 | JPEG, PNG, multiple | MP4 | Yes | |
| X (Twitter) | 280 | Up to 4, auto-PNG (1000px max) | MP4, MOV | Yes |
| Threads | 500 | Up to 10 (carousel) | MP4, MOV, 1 per post | Yes |
| Telegram | 4,096 | Yes | Yes | Yes |
| 63,206 (API) | Multiple, WebP auto-converted | MP4, MOV, AVI, MKV, WebM | Yes | |
| TikTok | 2,200 | No | MP4/MOV/WebM, 3s-10 min | No (video required) |
| YouTube | 5,000 (description) | No | MP4/MOV/AVI/MKV/WebM | No (video required) |
| Mastodon | 500 | JPEG, PNG, GIF, WebP, up to 4 | MP4, WebM, MOV | Yes |
| Bluesky | 300 | Up to 4 (all converted to JPEG) | MP4, max 3 min | Yes |
| 500 (description) | JPEG, PNG | MP4 | No (media required) |
The golden rule for cross-platform content
Keep your caption under 280 characters (Twitter's limit) if you want it to display perfectly across all text-supporting platforms without truncation or thread splitting. For video-only platforms (TikTok, YouTube), always include a video file.
How Publora Handles Format Differences Automatically
The magic of cross-platform posting is in the automatic format adaptation. Here is what happens behind the scenes when you include multiple platforms in a single request.
Character Limit Handling
Twitter/X
Content over 280 chars is auto-split into threads with (1/N) markers. Emojis count as 2 characters.
Bluesky
300-char limit. URLs count in full. Hashtags auto-converted to clickable facets with byte offsets.
Threads
500-char limit. Long content auto-splits into connected replies. Max 1 hashtag per post.
Media Format Conversion
You upload a single media file. Publora converts it to each platform's required format.
| Platform | Image Conversion | Special Handling |
|---|---|---|
| JPEG only (PNG rejected) | Aspect ratio 4:5 to 1.91:1 | |
| Twitter/X | Auto-converted to PNG, max 1000px | Up to 4 images |
| Bluesky | All formats converted to JPEG | ~1 MB limit per image |
| WebP auto-converted to JPEG | Multiple images become album | |
| JPEG, PNG (WebP auto-converted) | Multiple supported | |
| Mastodon | JPEG, PNG, GIF, WebP native | Up to 4 per post |
Rich Text Processing
Bluesky Facets
Hashtags and URLs are automatically converted to AT Protocol facets with correct byte offsets — including multi-byte character handling for emojis.
Telegram Markdown
Telegram supports Markdown formatting. Publora passes through your text as-is, preserving any Markdown syntax for bold, italic, or code blocks.
Platform-Specific Settings
While the content text is shared across platforms, you can fine-tune per-platform behavior using the platformSettings object. This lets you control how each platform handles your post without creating separate API calls.
const response = await fetch('https://api.publora.com/api/v1/create-post', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-publora-key': 'sk_YOUR_API_KEY'
},
body: JSON.stringify({
content: 'Behind the scenes of our latest product shoot!',
platforms: [
'instagram-17841400123456789',
'tiktok-99887766',
'youtube-UCxyz123',
'telegram-chat-100200300'
],
scheduledTime: '2026-04-15T12:00:00Z',
platformSettings: {
// Instagram: Post as Reel (not Story)
instagram: {
videoType: 'REELS'
},
// TikTok: Public with comments enabled
tiktok: {
viewerSetting: 'PUBLIC_TO_EVERYONE',
allowComments: true,
allowDuet: false,
allowStitch: false,
commercialContent: false,
brandOrganic: false,
brandedContent: false
},
// YouTube: Unlisted with custom title
youtube: {
privacy: 'unlisted',
title: 'Behind the Scenes: Product Shoot 2026'
},
// Telegram: Enable link preview
telegram: {
disableWebPagePreview: false
}
}
})
});
Available Platform Settings
| Platform | Key Settings | Description |
|---|---|---|
videoType |
"REELS", "STORIES", or omit for photo post |
|
| TikTok | viewerSetting, allowComments, allowDuet, allowStitch, commercialContent |
Privacy, interactions, and commercial disclosure |
| YouTube | privacy, title |
"public", "unlisted", or "private"; video title |
| Telegram | disableWebPagePreview |
Control link preview generation |
How Publora Handles Media Differences
The biggest pain point in cross-platform posting is media. Each platform has different format requirements, size limits, and content type restrictions. Here is how Publora resolves these conflicts automatically.
You Upload
One file, any supported format
Publora Analyzes
Checks format requirements per platform
Auto-Converts
JPEG for Bluesky, PNG for Twitter, etc.
Validates Sizes
Compresses to meet per-platform limits
Publishes
Each platform gets its optimized version
Cross-Platform Media Upload Example
import requests
API_KEY = 'sk_YOUR_API_KEY'
BASE = 'https://api.publora.com/api/v1'
# Step 1: Create multi-platform post
resp = requests.post(f'{BASE}/create-post', headers={
'Content-Type': 'application/json',
'x-publora-key': API_KEY
}, json={
'content': 'New feature launch: real-time collaboration is here! #devtools',
'platforms': [
'instagram-17841400123456789', # Will receive JPEG
'twitter-987654321', # Will receive PNG (max 1000px)
'bluesky-did:plc:xyz789', # Will receive JPEG (<1 MB)
'linkedin-abc123def', # Will receive original or JPEG
'mastodon-445566', # Will receive original format
'facebook-998877665544', # Will receive JPEG (if WebP input)
'threads-112233445566' # Will receive image as-is
],
'scheduledTime': '2026-04-12T14:00:00Z'
})
post_id = resp.json()['postGroupId']
# Step 2: Upload one image — Publora handles per-platform conversion
upload_resp = requests.get(
f'{BASE}/upload-media/{post_id}?filename=feature-hero.png',
headers={'x-publora-key': API_KEY}
)
upload_url = upload_resp.json()['uploadUrl']
with open('feature-hero.png', 'rb') as f:
requests.put(upload_url, headers={'Content-Type': 'image/png'}, data=f)
print(f'One upload, 7 platforms, zero format headaches.')
Real-World Workflow: Product Launch Across All Platforms
Here is a complete, production-ready example of a product launch posted to 8 platforms with platform-specific settings, media upload, and scheduling.
import fs from 'fs';
const API_KEY = 'sk_YOUR_API_KEY';
const BASE = 'https://api.publora.com/api/v1';
const headers = { 'Content-Type': 'application/json', 'x-publora-key': API_KEY };
// The announcement — kept under 280 chars for Twitter compatibility
const content = `We just launched v3.0! 🚀
Real-time collab, AI code review, 50% faster builds.
Try it free: https://example.com/v3
#devtools #opensource #launch`;
// Step 1: Create cross-platform post
const response = await fetch(`${BASE}/create-post`, {
method: 'POST',
headers,
body: JSON.stringify({
content,
platforms: [
'linkedin-abc123def',
'twitter-987654321',
'threads-112233445566',
'mastodon-445566',
'bluesky-did:plc:xyz789',
'facebook-998877665544',
'telegram-chat-100200300',
'instagram-17841400123456789'
],
scheduledTime: '2026-04-15T15:00:00Z',
platformSettings: {
tiktok: {
viewerSetting: 'PUBLIC_TO_EVERYONE',
allowComments: true
},
telegram: {
disableWebPagePreview: false
}
}
})
});
const { postGroupId } = await response.json();
console.log('Post created:', postGroupId);
// Step 2: Upload hero image
const uploadRes = await fetch(
`${BASE}/upload-media/${postGroupId}?filename=v3-launch-hero.jpg`,
{ headers: { 'x-publora-key': API_KEY } }
);
const { uploadUrl } = await uploadRes.json();
await fetch(uploadUrl, {
method: 'PUT',
headers: { 'Content-Type': 'image/jpeg' },
body: fs.readFileSync('v3-launch-hero.jpg')
});
console.log('Launch scheduled to 8 platforms at 2026-04-15 15:00 UTC');
Handling Failures Gracefully
In cross-platform posting, individual platforms can fail while others succeed. Publora processes each platform independently — a TikTok rate limit error does not prevent your LinkedIn post from going through.
What Publora handles
- Independent platform delivery — failure on one does not block others
- Automatic token refresh for expiring OAuth connections
- Rate limit awareness per platform
- Media format validation before attempting to publish
- Detailed per-platform status tracking
What you should monitor
- Expired connections (re-authorize in dashboard)
- Platform-specific content violations
- Video-only platforms receiving text-only posts
- Content length exceeding per-platform limits
- Facebook token 59-day refresh cycle
import requests
API_KEY = 'sk_YOUR_API_KEY'
BASE = 'https://api.publora.com/api/v1'
# Check post status after publishing
resp = requests.get(
f'{BASE}/list-posts?limit=5',
headers={'x-publora-key': API_KEY}
)
for post in resp.json()['posts']:
print(f"Post: {post['content'][:50]}...")
for platform in post.get('platforms', []):
status = platform.get('status', 'unknown')
name = platform.get('platformId', 'unknown')
print(f" {name}: {status}")
if status == 'failed':
print(f" Error: {platform.get('error', 'No details')}")
Content Strategy for Cross-Platform Posting
Not all content works equally well across all platforms. Here is a practical guide to which content types fit which platforms.
Text Announcements
Best for: LinkedIn, Twitter/X, Mastodon, Bluesky, Threads, Telegram, Facebook
Keep under 280 chars for universal compatibility
Image + Caption
Best for: Instagram, LinkedIn, Twitter/X, Threads, Mastodon, Bluesky, Facebook
Upload JPEG for widest compatibility
Short Video (<60s)
Best for: TikTok, Instagram Reels, YouTube Shorts, Facebook, Bluesky
Use 9:16 MP4 for maximum reach
Cross-platform content tip
The safest cross-platform content is a JPEG image with a caption under 280 characters. This works on every platform that supports images (9 out of 11), and the short caption avoids truncation on Twitter and Bluesky. For video-only platforms (TikTok, YouTube), create separate posts with dedicated video content.
Pricing: One Post, Many Platforms
A common question about cross-platform posting: does posting to 8 platforms count as 8 posts against your quota?
How Publora counts
A single create-post call with multiple platforms counts as one post toward your plan quota. Posting to 8 platforms costs the same as posting to 1. This makes cross-platform posting extremely cost-efficient.
Plan requirements
Most platforms work on any Publora plan. Twitter/X requires a Pro or Premium plan (excluded from Starter). API key access requires Pro or Premium. The Starter plan is dashboard-only with limited platform access.
Getting Started in 5 Minutes
Ready to publish everywhere with one API call? Here is the quickest path.
- Create a Publora account — free trial available on the Pro plan
- Connect your platforms — Go to Connections and add each social account (one-time setup per platform)
- Get your API key — Settings → API Keys → Create Key (authentication docs)
- List your platform IDs — Via List Connections API or the dashboard
- Make your first cross-platform post — Use the code examples above with all your platform IDs
One API call. Eleven platforms. Zero headaches.
Stop managing 11 different APIs. Start publishing everywhere with Publora.
Get Started Free →Frequently Asked Questions
How many platforms can I post to simultaneously with one API call?
Publora supports 11 platforms: Instagram, LinkedIn, X (Twitter), Threads, Telegram, Facebook, TikTok, YouTube, Mastodon, Bluesky, and Pinterest. You can include any combination of these in a single create-post API call by listing their platform IDs in the platforms array. See the Create Post documentation for the full parameter reference.
What happens if my content exceeds a platform's character limit?
Each platform has different character limits — Twitter at 280, Bluesky at 300, Threads at 500, Mastodon at 500, LinkedIn at 3,000, and Instagram/TikTok/Facebook at 2,200. When your content exceeds a platform's limit, Publora handles it per platform: Twitter auto-splits into threads with (1/N) markers, Threads splits into connected replies, while other platforms may truncate. For universal compatibility, keep content under 280 characters.
Does Publora automatically convert media formats for each platform?
Yes. Publora handles media format conversion per platform automatically. Bluesky receives JPEG (converted from any input format), Twitter receives PNG at max 1000px width, Instagram requires JPEG (PNG is rejected), Facebook converts WebP to JPEG, and Mastodon accepts most formats natively. You upload once and Publora handles all format requirements.
Can I customize the post content per platform in a single API call?
Currently, the create-post endpoint sends the same content text to all platforms. You can customize platform-specific behavior through the platformSettings object (Instagram videoType, TikTok viewerSetting, YouTube privacy, etc.), but the caption text is shared. If you need different text per platform, create separate posts for each.
Which platforms require video content and cannot accept text-only posts?
TikTok and YouTube are video-only platforms — they require a video file with every post and do not support text-only or image-only content through their APIs. Instagram and Pinterest require media (image or video) but do not accept text-only posts. All other platforms (LinkedIn, X, Threads, Telegram, Facebook, Mastodon, Bluesky) accept text-only posts.
Is there a cost difference for posting to multiple platforms?
No. A single create-post call that targets multiple platforms counts as one post toward your Publora plan quota, not one per platform. Posting to 8 platforms costs the same as posting to 1. However, some platforms (Twitter/X) require a paid Publora plan (Pro or Premium) to access. Check your plan limits for details.
What happens if one platform fails during a cross-platform post?
Publora processes each platform independently. If one platform fails (e.g., Instagram rejects a PNG image, TikTok hits a rate limit, or a Bluesky app password expires), the other platforms still publish successfully. You can check the per-platform delivery status in the Publora dashboard or via the List Posts API.
Can I schedule cross-platform posts for a future time?
Yes. Add a scheduledTime field in ISO 8601 format (UTC) to your create-post request, for example "2026-04-15T15:00:00Z". Publora will hold the post and publish to all specified platforms simultaneously at the scheduled time. You can schedule up to 30 days in advance. See the scheduling guide for timezone handling best practices.
Further Reading
- Create Post API Reference — Full endpoint documentation with all parameters
- List Connections API — Retrieve all connected platform IDs programmatically
- Media Upload Workflow — Presigned URL upload guide for all platforms
- Scheduling Guide — Timezone handling and batch scheduling
- Rate Limits Reference — Platform-by-platform rate limit comparison
- Instagram Platform Docs — Instagram-specific API documentation
- TikTok Platform Docs — TikTok-specific API documentation
- Bluesky Platform Docs — Bluesky/AT Protocol API documentation
- MCP Client Setup — Use cross-platform posting with AI assistants
Related Articles

Publora vs Ordinal: Honest Review and Best Ordinal Alternative for 2026
Comparing Publora vs Ordinal for creators, agencies, and lean teams who don't want to pay enterprise prices. Honest pros and cons, pricing reality, and when each tool fits.

Top 20 Social Media Platforms in 2026 (User Counts + What They're Best For)
The list of social platforms gets longer every year, but the right number to actually post on is small. This article walks through the 20 platforms that matter in 2026 — ranked by monthly active users

Best Manus Skills for Content Creators in 2026
The 9 Publora skills that turn Manus into a social media content engine. What each skill does, which to install first, and how to use them as a creator.

Best AI Agent for Social Media Automation in 2026
Manus, Claude Code, Cursor, Cline, Goose — which AI agent should run your social media in 2026? Honest comparison by use case, plus the Publora layer.