Skip to Content
API ReferenceUpload MediaBulk Upload

Bulk Upload API

The Bulk Upload API allows you to upload a single video or image file to multiple social media accounts (TikTok, Instagram, YouTube, Facebook, LinkedIn, Pinterest, Bluesky) simultaneously with a single request.

Endpoint

POST /api/v1/upload/bulk

This endpoint accepts multipart/form-data requests.

Authentication

All requests require an API Token in the header: x-api-key: YOUR_API_TOKEN

Body Parameters (Multipart)

Core Parameters

ParameterTypeRequiredDescription
accountsstring (JSON Array)YesA JSON array of account IDs (numbers). Example: "[12, 45, 89]"
videoFileYesThe video file to upload.
photoFileNoUse this instead of video for image uploads.
titlestringNo*The title of the post. Acts as caption for TikTok/Instagram. (*Required for TikTok if no description)
descriptionstringNoThe description/caption of the post.
schedule_datestring (ISO 8601)NoDate to schedule the post for (e.g., 2024-12-25T10:00:00Z).

Platform-Specific Parameters

You can include any platform-specific parameter used in the individual upload endpoints. They will only be applied to the relevant platforms.

TikTok

  • privacy_level: PUBLIC, FRIENDS, PRIVATE
  • disable_comment: true/false
  • disable_duet: true/false
  • disable_stitch: true/false
  • brand_content_toggle: true/false
  • is_aigc: true/false

Instagram

  • share_to_feed: true/false (for Reels)
  • collaborators: JSON string of collaborator IDs

YouTube

  • youtube_title: Override title specifically for YouTube
  • youtube_description: Override description specifically for YouTube
  • tags: JSON array or comma-separated string of tags
  • categoryId: YouTube category ID
  • privacyStatus: public, private, unlisted
  • madeForKids: true/false

Facebook

  • link: URL to attach to the post

LinkedIn

  • visibility: PUBLIC or CONNECTIONS

Pinterest

  • pinterest_board_id or board_id: The board to pin to (required for Pinterest accounts)
  • link: URL to attach to the pin

Bluesky

  • bluesky_langs: Comma-separated language codes (e.g. en,fr) or JSON array
  • bluesky_labels: Content warnings. Values: sexual, nudity, porn, graphic-media, !no-unauthenticated

Response

The API returns a summary of the operations. It handles potential errors for individual accounts gracefully (e.g., if one account hits a limit, others may still succeed).

{ "success": true, "message": "Bulk upload processing finished", "results": [ { "accountId": 12, "platform": "tiktok", "success": true, "uploadId": 501, "jobId": "1024", "scheduledFor": null }, { "accountId": 45, "platform": "instagram", "success": true, "uploadId": 502, "jobId": "1025", "scheduledFor": "2024-12-25T10:00:00.000Z" }, { "accountId": 89, "success": false, "error": "Daily upload limit reached. Reset at 2024-12-24T00:00:00.000Z" } ] }

Example Request

curl -X POST https://api.yourdomain.com/api/v1/upload/bulk \ -H "x-api-key: YOUR_API_TOKEN" \ -F "accounts=[12, 45, 89]" \ -F "video=@/path/to/video.mp4" \ -F "title=My Amazing Video" \ -F "description=Check this out! #viral #fyp" \ -F "disable_comment=true" \ -F "youtube_title=Exclusive: My Amazing Video (4K)"

Notes

  • One File Source: The file is uploaded once to storage and then processed for each platform locally.
  • De-duplication: If you provide the same account ID multiple times in the accounts array, it will only be processed once.
  • Limits: Each account is checked against its own daily upload limits.