Media upload API for images, videos, and documents
Upload media files to the bundle.social library, get an upload ID, and reference that ID in any post payload across all connected platforms.
Last updated: May 2026
1const formData = new FormData();2formData.append("file", fs.createReadStream("./product-launch.mp4"));3formData.append("teamId", "team_123");45const upload = await fetch("https://api.bundle.social/api/v1/upload", {6 method: "POST",7 headers: { "x-api-key": process.env.BUNDLE_SOCIAL_API_KEY },8 body: formData9});1011const { uploadId } = await upload.json();12// Reference uploadId in any post payloadPlatform-by-platform media handling
What bundle.social handles
Upload once, publish everywhere
Media should not be a bottleneck. Upload your assets to the bundle.social library and reference the same upload ID whether the post goes to Instagram, TikTok, YouTube, LinkedIn, or Pinterest.
Workflow
How it works
Connect accounts once, then create and schedule posts with channel-specific fields from one API.
Upload the file
POST the media file as multipart/form-data with your teamId and API key.
Store the upload ID
The response returns an uploadId. Store it alongside the creative brief or campaign asset.
Reference in post payloads
Include the uploadId in the data block of any scheduled post to attach the media.
Capabilities
Media upload built for production publishing pipelines
Upload once and reference the same asset across Instagram Reels, LinkedIn documents, and TikTok videos.
Direct file upload
POST media as multipart/form-data and receive a reusable uploadId in return with no extra steps.
Upload before publishing
Decouple asset delivery from post creation so the publishing pipeline stays non-blocking regardless of file size.
Platform format validation
The library validates file types and dimensions against platform requirements before the post is created.
One upload ID, many posts
Reference the same uploadId across multiple scheduled posts without reuploading the asset each time.
Carousel and document support
Upload multiple assets for carousel posts, PDF documents, and platform-specific media types in the same workflow.
Media library access from the dashboard
Marketing teams can browse and select uploaded assets without using the API directly.
Developer example
Upload a video and reference it in a post
Examples use bundle.social's public API shape: API key authentication, a post date, selected social account types, and platform-specific data.
1// Step 1: Upload2const formData = new FormData();3formData.append("file", fs.createReadStream("./launch-video.mp4"));4formData.append("teamId", "team_123");56const upload = await fetch("https://api.bundle.social/api/v1/upload", {7 method: "POST",8 headers: { "x-api-key": process.env.BUNDLE_SOCIAL_API_KEY },9 body: formData10});11const { uploadId } = await upload.json();1213// Step 2: Use the upload ID in a scheduled post14await fetch("https://api.bundle.social/api/v1/post", {15 method: "POST",16 headers: {17 "x-api-key": process.env.BUNDLE_SOCIAL_API_KEY,18 "Content-Type": "application/json"19 },20 body: JSON.stringify({21 teamId: "team_123",22 postDate: "2026-05-14T10:00:00.000Z",23 status: "SCHEDULED",24 socialAccountTypes: ["INSTAGRAM", "TIKTOK"],25 data: {26 INSTAGRAM: { type: "REEL", text: "Launch week is here.", uploadIds: [uploadId] },27 TIKTOK: { type: "VIDEO", uploadIds: [uploadId], privacyLevel: "PUBLIC_TO_EVERYONE" }28 }29 })30});Supported content
Honest limitations
- Platform-specific size limits, codecs, and duration caps still apply at post creation time.
- Uploaded media is stored in the bundle.social library and associated with your team.
- Media processing may take a short time before the upload ID can be used in a post.
Guarantees
Developer-first infrastructure
2% error rate
We handle the platform edge cases, media processing, and rate limits so your requests succeed.
Verbose errors
When native APIs fail, we return human-readable error messages and actionable recovery steps.
Flat pricing
No per-post counting. Predictable pricing for teams managing many users, workspaces, and connected accounts.
Same-day support
Direct access to the engineers building the API. We respond to technical issues the same day. Sometimes the same hour. Test us c;
FAQ
Questions developers ask before building
Can I upload the same file and use it on multiple platforms?
Yes. Once you have an upload ID, you can reference it in post payloads for any supported platform that accepts that media type.
What file formats are supported?
Common image formats (JPG, PNG, WebP) and video formats (MP4, MOV) are supported. Check platform-specific requirements for size and duration limits.
Do I upload before or after creating the post?
Before. Upload your media first to get an upload ID, then include that ID in the post creation request.
What happens if the upload fails?
The /api/v1/upload endpoint returns an error. Retry the upload independently before creating the post to keep the two steps cleanly separated.
Can I upload from a URL instead of a local file?
Yes. The API supports URL-based media ingestion through /api/v1/upload/from-url.