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
| Parameter | Type | Required | Description |
|---|---|---|---|
accounts | string (JSON Array) | Yes | A JSON array of account IDs (numbers). Example: "[12, 45, 89]" |
video | File | Yes | The video file to upload. |
photo | File | No | Use this instead of video for image uploads. |
title | string | No* | The title of the post. Acts as caption for TikTok/Instagram. (*Required for TikTok if no description) |
description | string | No | The description/caption of the post. |
schedule_date | string (ISO 8601) | No | Date 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,PRIVATEdisable_comment:true/falsedisable_duet:true/falsedisable_stitch:true/falsebrand_content_toggle:true/falseis_aigc:true/false
share_to_feed:true/false(for Reels)collaborators: JSON string of collaborator IDs
YouTube
youtube_title: Override title specifically for YouTubeyoutube_description: Override description specifically for YouTubetags: JSON array or comma-separated string of tagscategoryId: YouTube category IDprivacyStatus:public,private,unlistedmadeForKids:true/false
link: URL to attach to the post
visibility:PUBLICorCONNECTIONS
pinterest_board_idorboard_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 arraybluesky_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
accountsarray, it will only be processed once. - Limits: Each account is checked against its own daily upload limits.