How to Bulk Upload TikTok Videos in 2026
To bulk upload TikTok videos, use one of three workflows: a scheduler with a CSV or multi-file importer, a script that creates repeated API publishing jobs, or a dashboard queue for a smaller batch. The right choice depends on whether your source of truth is a spreadsheet, an application, or a human review process.
Important correction: Postqued does not currently provide a CSV-import screen. Its documented bulk workflow is API-based: upload each media asset, validate a scheduled TikTok target, and create one durable /v2/publish request per post. This guide uses the real v2 routes instead of the retired and inaccurate examples that were previously on this page.
Quick decision table
| Method | Best for | Setup | Human review | Main limitation |
|---|---|---|---|---|
| CSV or multi-file scheduler | Marketers with a spreadsheet calendar | Low | Usually built in | Field support varies by tool |
| Postqued v2 API loop | Apps, agencies, and repeatable pipelines | Medium | Dry run plus durable status | One publish request per post |
| Manual calendar queue | Small, occasional batches | Low | Full | Slowest at higher volume |
Method 1: Use a CSV or multi-file bulk scheduler
In short: Choose this method when captions, media locations, accounts, and publishing times already live in a spreadsheet. Import into a tool that explicitly documents TikTok video bulk scheduling, review every mapped field, then test a small batch before committing the full calendar.
Current smaller tools with documented bulk workflows include:
- OneUp: CSV, Google Sheets, Google Drive, Dropbox, and local bulk uploads; video bulk upload starts above its Basic plan. Site: oneupapp.io
- RecurPost: CSV and Excel bulk scheduling, including platform-specific caption columns. Site: recurpost.com
- PostPlanify: a calendar bulk composer for up to 20 posts. Site: postplanify.com
Do not assume one tool’s CSV template works in another. Download the destination product’s current sample file and verify:
- Whether media is uploaded directly or referenced by URL.
- Which timestamp and time-zone format it accepts.
- Whether privacy, comments, Duet, Stitch, commercial-content disclosure, and cover settings can be imported.
- Whether a failed row blocks the batch or can be retried independently.
- Whether the tool directly publishes or creates a draft that needs completion in TikTok.
Method 2: Bulk schedule through the Postqued v2 API
In short: Use Postqued’s API when another system generates the calendar. Your worker loops over a manifest, uploads each video to Postqued, checks the latest TikTok creator constraints, validates the publish request with dryRun: true, then submits the same post with an idempotency key.
Postqued’s API base URL is https://api.postqued.com. Use only /v2 routes and pass Authorization: Bearer YOUR_POSTQUED_API_KEY.
Step 1: Resolve the workspace and TikTok account
Call GET /v2/mcp/context to resolve the organization and workspace available to the API key. Then call GET /v2/integrations?workspaceId=... and select the exact TikTok account ID.
Do not infer IDs from display names when a workspace contains similar accounts.
Step 2: Upload and complete each video
Create an asset with POST /v2/content/upload, send the bytes to the returned presigned storage URL, then complete the asset with POST /v2/content/upload/complete.
{
"workspaceId": "WORKSPACE_UUID",
"filename": "launch-01.mp4",
"contentType": "video/mp4",
"fileSize": 52428800
}
The completion call records the returned object key plus the final file metadata. Store the returned contentId beside the matching row in your batch manifest.
Step 3: Read TikTok creator constraints
Immediately before composing the post, call:
GET /v2/integrations/ACCOUNT_UUID/creator-info?workspaceId=WORKSPACE_UUID
Use the returned privacy choices and maximum video duration. TikTok requires publishing clients to show and honor the latest creator settings; public visibility must never be assumed.
Step 4: Validate the scheduled post
Send one target with dryRun: true before creating live state:
{
"workspaceId": "WORKSPACE_UUID",
"contentIds": ["CONTENT_UUID"],
"targets": [
{
"platform": "tiktok",
"accountId": "ACCOUNT_UUID",
"intent": "publish",
"caption": "Launch day. #product",
"dispatchAt": "2026-08-12T16:00:00Z",
"options": {
"privacyLevel": "PUBLIC_TO_EVERYONE",
"disableComment": false,
"disableDuet": false,
"disableStitch": false,
"authenticContentConfirmed": true
}
}
],
"dryRun": true
}
dispatchAt must be an offset-bearing ISO timestamp. Using UTC (Z) in the manifest avoids daylight-saving ambiguity.
Step 5: Create the live scheduled request
After validation succeeds, repeat the request with dryRun: false and a fresh UUID in the Idempotency-Key header. Save the returned publish ID.
For a batch, repeat these steps for every manifest item with bounded concurrency. Do not fire hundreds of untracked writes at once. A reliable worker should:
- keep a state per row:
pending,asset_uploaded,validated,scheduled, orfailed; - use a different idempotency key for every distinct post body;
- pause on
429responses and honor retry information; - read
GET /v2/publish/:publishId?workspaceId=...before retrying a timed-out write; - continue successful rows even when a different row fails.
The live schema is available at api.postqued.com/v2/docs/openapi.json.
Method 3: Build a reviewed queue in the dashboard
In short: For a small batch, a calendar queue is safer than custom automation. Upload each asset, customize the TikTok caption and native settings, schedule it, and review the resulting week or month before publishing starts.
This method is appropriate when:
- every post needs a human caption or compliance review;
- the batch is small enough that API setup would cost more time than it saves;
- different posts require different privacy, commercial-content, cover, comment, Duet, or Stitch choices;
- a client must approve each post before scheduling.
Postqued’s TikTok scheduler supports this calendar workflow and keeps TikTok alongside the rest of a multi-platform publishing plan.
TikTok video requirements to validate before uploading
In short: Validate container, codec, frame rate, dimensions, size, duration, and account-specific limits before starting the batch. Rejecting bad files locally is faster and safer than discovering the same error after dozens of API calls.
TikTok’s current Content Posting API media-transfer guide lists:
| Check | Documented range |
|---|---|
| Containers | MP4, WebM, MOV |
| Codecs | H.264, H.265, VP8, VP9 |
| Frame rate | 23–60 FPS |
| Width and height | 360–4096 pixels |
| Maximum file size | 4 GB |
| Maximum initialized upload duration | 10 minutes |
The actual maximum duration can vary by creator. Read max_video_post_duration_sec from creator info instead of treating 10 minutes as universally publishable.
TikTok also supports FILE_UPLOAD and PULL_FROM_URL transfer modes for videos. A pulled URL must use HTTPS, must not redirect, must remain accessible during the download, and must belong to a domain or URL prefix verified by the developer application.
A practical batch manifest
Keep the source data explicit and provider-neutral. JSON is safer than inventing a CSV schema that your publishing API does not support directly:
[
{
"localFile": "./videos/launch-01.mp4",
"caption": "Launch day. #product",
"dispatchAt": "2026-08-12T16:00:00Z",
"privacyLevel": "PUBLIC_TO_EVERYONE"
},
{
"localFile": "./videos/tutorial-01.mp4",
"caption": "Three setup tips.",
"dispatchAt": "2026-08-13T16:00:00Z",
"privacyLevel": "PUBLIC_TO_EVERYONE"
}
]
Add your own externalId to each item so you can reconcile the source calendar with Postqued’s contentId, publishId, and target status.
Common bulk-upload failures
Invalid privacy choice
The selected privacy value is missing from the creator’s current privacy_level_options. Refresh creator info and require the user to choose a supported value.
Video duration rejected
The file exceeds max_video_post_duration_sec for that creator. Do not rely on a generic TikTok maximum.
URL ownership not verified
TikTok cannot pull from the media URL because the domain or URL prefix is not verified for the application. Complete TikTok’s URL-property verification or use the correct file-upload workflow.
Duplicate live requests
A network timeout causes the worker to submit the same post again with a new key. Persist the original idempotency key and check durable status before retrying.
Rate or posting cap reached
TikTok applies request, creator, and application caps. Queue work, respect 429, and surface the blocked rows instead of silently dropping them.
Final checklist
- Validate every file before transfer.
- Use one source time zone and save offset-bearing timestamps.
- Read current creator info before composing TikTok options.
- Dry-run every distinct request.
- Save one idempotency key and publish ID per post.
- Test a small batch on the real account before scaling.
- Monitor each target until it reaches a terminal state.
Bulk uploading is an operational workflow, not a single magic endpoint. Spreadsheet tools are easiest for marketers; the Postqued v2 API is the better fit when your calendar is generated by a CMS, database, script, or AI agent.
Next, read how TikTok’s official API works or start a seven-day Postqued trial.