Why posting one by one is costing you time
Think about what happens every time you finish editing a video. You open TikTok, upload, write a caption, pick a cover. Then you do the same thing on Instagram. Then YouTube. Then LinkedIn. Before you know it, 30 minutes have gone by and you haven't done any actual creative work.
The math gets worse when you manage multiple brands. Five clients with ten platforms each means fifty manual uploads per piece of content. That's not sustainable, and it's exactly the problem that a social media API solves.
What you'll need before starting
- An Upload-Post account (the free plan includes 10 uploads per month)
- Your API key, which you can generate from the API Keys dashboard
- At least one social media account connected through your Upload-Post profile
- A video or image file ready to publish
Step 1: Create your account and connect platforms
Head over to app.upload-post.com and create a free account. No credit card needed. Once you're in, go to User Management and create a profile. Think of a profile as a container that groups all the social accounts for one brand or client.
From that profile, connect the platforms you want. Upload-Post currently supports TikTok, Instagram, YouTube, LinkedIn, Facebook, X (Twitter), Threads, Pinterest, Reddit and Bluesky. You can connect all ten or just the ones that matter for your workflow.
Step 2: Get your API key
Navigate to API Keys in the dashboard and generate a new key. Copy it somewhere safe because you'll use it in every API request as your authentication header. The format is simple:
Authorization: Apikey your-api-key-here Step 3: Send one request, publish everywhere
This is where the magic happens. Instead of uploading separately to each platform, you make a single POST request to the /api/upload endpoint and pass multiple platform[] parameters. The API handles the rest: format conversion, aspect ratio adaptation, caption length limits, everything.
cURL example
curl -X POST https://api.upload-post.com/api/upload \
-H "Authorization: Apikey your-api-key-here" \
-F "[email protected]" \
-F "user=mybrand" \
-F "title=Check out our latest product launch" \
-F "platform[]=tiktok" \
-F "platform[]=instagram" \
-F "platform[]=youtube" \
-F "platform[]=linkedin" \
-F "platform[]=facebook" \
-F "platform[]=threads" That's it. Six platforms, one command. You can add up to all ten supported platforms in the same request.
Python example
from upload_post import UploadPostClient
client = UploadPostClient(api_key="your-api-key-here")
response = client.upload_video(
video_path="/path/to/my-video.mp4",
title="Check out our latest product launch",
user="mybrand",
platforms=["tiktok", "instagram", "youtube", "linkedin"]
)
for platform, result in response["results"].items():
if result["success"]:
print(f"{platform}: {result['url']}")
else:
print(f"{platform}: failed")
You can install the Python SDK with pip install upload-post. There's also a JavaScript SDK available through npm.
Node.js example
import { UploadPost } from 'upload-post';
const uploader = new UploadPost('your-api-key-here');
const result = await uploader.upload('/path/to/my-video.mp4', {
title: 'Check out our latest product launch',
user: 'mybrand',
platforms: ['tiktok', 'instagram', 'youtube', 'linkedin', 'threads']
});
console.log(result); Step 4: Understanding the API response
After the upload completes, the API returns a JSON response with individual results for each platform. This way you can confirm which posts went live and get direct links to them.
{
"success": true,
"results": {
"tiktok": {
"success": true,
"url": "https://www.tiktok.com/@yourbrand/video/123..."
},
"instagram": {
"success": true,
"url": "https://www.instagram.com/p/ABC..."
},
"youtube": {
"success": true,
"url": "https://youtube.com/shorts/XYZ..."
}
},
"usage": {
"count": 12,
"limit": 100,
"last_reset": "2025-09-01T10:00:00.000Z"
}
} Platform specific options you should know about
While the basic request works for most cases, each platform has specific parameters you can use to fine tune your posts. Here are the most useful ones:
| Platform | Useful parameters | Notes |
|---|---|---|
| TikTok | privacy_level, tiktok_title | Max 15 videos per day per account |
media_type (REELS/STORIES), collaborators | Max 50 uploads per day | |
| YouTube | tags[], privacyStatus, thumbnail | Shorts auto-detected for videos under 60s |
visibility, target_linkedin_page_id | Can post to personal profile or company page | |
facebook_page_id (required), facebook_media_type | Requires a connected Facebook Page | |
pinterest_board_id (required), pinterest_link | Board ID is mandatory for every pin |
Check the full API reference for every available parameter on each platform.
Want to skip the code? Use n8n or Make.com
If you're not a developer, you can still post to all your platforms at once using visual automation tools. Upload-Post has official integrations with the most popular ones:
- n8n has an official Upload-Post community node. You can trigger a workflow from Google Drive, Dropbox or any source and publish to all platforms automatically. There are also ready made templates you can import in one click.
- Make.com (formerly Integromat) works great with the HTTP module and multipart form data.
- Zapier can connect your favorite tools to Upload-Post for fully automated publishing.
Posting photos and carousels to multiple platforms
Videos aren't the only content type you can distribute. The /api/upload_photos endpoint lets you publish images and carousels across platforms in the same way. Just swap the video parameter for photos[]:
curl -X POST https://api.upload-post.com/api/upload_photos \
-H "Authorization: Apikey your-api-key-here" \
-F "photos[][email protected]" \
-F "photos[][email protected]" \
-F "photos[][email protected]" \
-F "user=mybrand" \
-F "title=Our new collection" \
-F "platform[]=instagram" \
-F "platform[]=tiktok" \
-F "platform[]=linkedin" Instagram will create a carousel post, TikTok will turn them into a slideshow, and LinkedIn will display them as a multi-image post. Each platform gets the format that works best for its audience.
Adding a first comment automatically
A common strategy on Instagram and TikTok is to put hashtags or a call to action in the first comment instead of the caption. You can do this automatically by adding the first_comment parameter to your request:
-F "first_comment=#marketing #socialmedia #contentcreator Follow for more!"
This works on Instagram, Facebook, Threads, Bluesky, Reddit, X and YouTube. You can even set different comments per platform using parameters like instagram_first_comment or x_first_comment.
Character limits to keep in mind
When you're posting the same caption to multiple platforms, remember that each one has different character limits. Here are the main ones:
| Platform | Caption limit |
|---|---|
| X (Standard) | 280 characters |
| Bluesky | 300 characters |
| Threads | 500 characters |
| 500 characters | |
| 2,200 characters | |
| TikTok | 2,200 characters |
| 3,000 characters | |
| YouTube | 5,000 characters |
| 63,206 characters |
You can use platform specific title parameters (like tiktok_title, youtube_title, etc.) to set a different caption for each platform if needed. Our character counter tool can help you check limits before posting.
Async uploads for large files
If your video is large or you're posting to many platforms, the request might take a while. You can add async_upload=true to get an immediate response with a request_id, then poll the status later:
curl https://api.upload-post.com/api/uploadposts/status?request_id=abc123 \
-H "Authorization: Apikey your-api-key-here" You can also set up webhooks to get notified automatically when each platform upload finishes.
Frequently asked questions
Does posting to all platforms at once hurt my reach or engagement?
No. Upload-Post uses each platform's official API and OAuth authentication. The platforms see your content as a regular post. There are no rotating IPs, no bots, no workarounds. Your views and engagement stay exactly the same as if you uploaded manually.
Can I customize the caption for each platform?
Yes. The title parameter sets the default caption for all platforms. But you can override it per platform using tiktok_title, instagram_title, youtube_title, linkedin_title, and so on. This is perfect when you want longer descriptions on YouTube and shorter ones on TikTok.
What video formats work?
MP4 with H.264 encoding works on every platform. If your file uses a different codec, Upload-Post will transcode it automatically. You can also process videos beforehand using our built in FFmpeg editor.
How much does this cost?
There's a free plan with 10 uploads per month. Paid plans start at $16/month (billed annually) and include unlimited uploads. That's a fraction of what tools like Buffer or Hootsuite charge, especially when you factor in the per-channel pricing those tools use.