Media Upload API

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: July 2026

API key authScheduled publishing14 platforms
Quick start
API request
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 payload

Platform-by-platform media handling

Each platform has its own media upload endpoint, size limits, format requirements, and processing delays.
Re-uploading the same video to Instagram, TikTok, and YouTube means writing three separate upload flows.
Teams often block post creation on media upload status rather than decoupling the two steps.

What bundle.social handles

Upload media once and reference the upload ID in post payloads for any supported platform.
Media processing and format validation are handled by the library before the post is created.
Decouple uploads from post creation so your publishing pipeline stays unblocked.

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.

01

Upload the file

POST the media file as multipart/form-data with your teamId and API key.

02

Store the upload ID

The response returns an uploadId. Store it alongside the creative brief or campaign asset.

03

Reference in post payloads

Include the uploadId in the data block of any scheduled post to attach the media.

Product architecture

Build social media workflows without rebuilding every platform

Media upload API for images, videos, documents, and reusable assets

A media upload API is not just a place to send files. In real publishing products, uploads quickly become part of a larger workflow: users add videos, images, PDFs, carousels, product assets, campaign creatives, and short-form content before posts are created or scheduled. If your app handles publishing across multiple platforms, you need a clean way to upload media once, store the asset, and reference it later without repeating the same upload flow for every channel.

bundle.social solves this with a reusable upload ID. Your backend can upload a file to the media library, store the returned identifier, and use that ID inside post payloads for supported platforms. That keeps asset handling separate from post creation, which is much cleaner for SaaS products, AI content tools, agency dashboards, content distribution systems, and internal publishing workflows. For the full publishing layer, see the social media API.

Upload once, then publish across social platforms

Each native platform has different media rules. Instagram, TikTok, YouTube, LinkedIn, Pinterest, Facebook, and X may vary in file size, format, duration, dimensions, document handling, carousel behavior, and processing delays. Building those workflows separately means your engineering team has to maintain many small but painful upload pipelines.

With bundle.social, the upload step is decoupled from publishing. Your product can upload media first, then reference the upload ID when creating a post through the posting API or scheduling content through the scheduling API. This approach is especially useful when assets are approved before publishing, reused across campaigns, or attached to multiple platform-specific variants.

Media upload built for developer-first publishing automation

For developers, a good media upload API should be predictable: clear authentication, multipart upload support, useful error messages, platform-aware validation, and a workflow that does not block the whole publishing pipeline. Instead of mixing large file transfer, post creation, and scheduling logic into one fragile request, bundle.social lets your app treat media as its own object.

That model works well for products where marketers, creators, customers, or AI agents prepare assets before the final post is created. It also helps support teams and developers debug issues faster, because upload failures and publishing failures are separated. If reporting is part of the same product roadmap, connect uploaded-media publishing with the analytics API. If higher-volume campaigns matter, compare this workflow with bulk posting.

Why media handling matters in social media integrations

Media is where many social media integrations become messy. A text-only post may be simple, but modern social publishing depends on reels, shorts, videos, carousels, images, PDFs, thumbnails, and platform-specific requirements. If your users expect one interface for many social accounts, your infrastructure has to normalize the workflow without hiding the fact that native platforms still have their own constraints.

bundle.social is built for that middle ground. It gives your application one upload workflow and one media reference model, while still respecting platform limits at post creation time. That makes it easier to build reliable publishing automation, content calendars, approval flows, AI-generated campaigns, and multi-platform social tools without spending months on media upload edge cases. In short: upload the asset once, keep the upload ID, and let your product build the experience around it.

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.

TypeScript
API request
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

ImagesVideosDocumentsCarouselsReelsShorts

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.