On this page
Bulk scheduling from CSV requires a clear mapping from each row to a video, a destination and a publication time. This guide demonstrates that mapping for already registered library videos, then submits and verifies a separate API schedule for each selected row. Importing spreadsheet text alone does not create a schedule or upload a file.
Prepare the media using our guide to adapting a video for multiple platforms. The CSV organizes the plan; it does not change media compatibility.
Define the input and the tested result
You need a workspace API key, prepared library videos, their IDs, exact destination channel IDs and a future schedule for each item you intend to publish. Keep a filename-to-video-ID mapping in your integration. A filename is a matching label, not a server-side video ID.
Test scope: On 2026-10-19 a development harness used the actual Uplonic CSV parser and row-mapping functions, then called the real uploads HTTP router with API-key authentication. It matched CSV rows to prepared-video metadata fixtures, created separate schedules, listed them and cancelled them. Browser file selection, storage upload and platform delivery were outside this check. The CSV parsing and API submission are distinct steps in this demonstrated integration.
Prepare and inspect the CSV
Use the bulk scheduling CSV validator to inspect your sheet and obtain its template. Replace example filenames, channel names and dates before use. This is the sample exercised in our dev check; its 2030 dates are deliberately distant test values, checked 2026-10-19.
file;title;description;hashtags;channels;scheduledFor
clip-01.mp4;First demo;"A caption; with punctuation";#demo;Demo YouTube;2030-01-15T17:00:00.000Z
clip-02.mp4;Second demo;Review before release;;Demo YouTube;2030-01-16T17:00:00.000Z
The implementation accepts comma, semicolon and tab separators and recognizes the supported header aliases. The sample uses semicolons. A separator inside a field must be quoted, as in the description above. For CSV quoting conventions, see RFC 4180, checked 2026-10-19; delimiter support beyond its comma format comes from our implementation.
Keep your working time zone explicit. The parser converts an offset-bearing ISO timestamp into a local date-time value for the row. Our harness converted that local value back to an ISO instant when submitting the API request. Check the interpreted time rather than assuming that a visible clock value is always UTC. The posting time-zone converter can help review the intended instant.
Resolve every row before submitting
The CSV mapper matches rows by filename. Resolve each matched file to its actual library video ID, and resolve the selected account to a channel ID. In our test, the quoted description survived parsing and the named channel resolved to the expected ID.
A channel name matching several connections is ambiguous. The parser reported that condition rather than choosing an account. An unknown name was also reported. Prefer the exact account identity when several channels belong to the same platform. A bare platform name can resolve to its default connection and should not be assumed to select the client you had in mind.
Check unmatched CSV rows, duplicate filenames and row errors before creating requests. Blank metadata cells do not overwrite existing row values in the inspected mapper. Missing publication time or destination needs an explicit decision about whether the item is only being prepared or should be scheduled.
Create and verify each schedule
For each valid row, send POST /uploads/schedule with the workspace key in the x-api-key header. The integration used the matched video ID, resolved channel ID and interpreted timestamp:
{
"videoId": "MATCHED_VIDEO_ID",
"platforms": ["youtube"],
"channels": ["RESOLVED_CHANNEL_ID"],
"scheduledFor": "2030-01-15T17:00:00.000Z",
"title": "First demo",
"description": "A caption; with punctuation",
"privacyStatus": "public"
}
This request shape and timestamp were exercised on 2026-10-19. The demonstration created a schedule for each sample row and confirmed both entries through GET /uploads/scheduled?status=scheduled. Store each returned schedule ID and publishing request ID beside its original filename. Do not count a parsed row as a submitted request.
Our demonstration used YouTube fixtures. Other destinations need their own permissions and per-platform metadata. A CSV row does not replace TikTok's user choices or required consent. This check does not establish a working TikTok submission.
Handle a partial result and cancel unwanted plans
When a request fails, inspect that row and the server's response before retrying. Preserve successful schedule IDs. Creating all rows again can create additional plans for items already accepted.
Cancel a still-scheduled item with DELETE /uploads/scheduled/SCHEDULE_ID. Our harness cancelled both sample plans, then confirmed that the scheduled list was empty. This verifies local plan cancellation before execution, not removal of content already published on a network.
Problem | Verified behavior | Action |
|---|---|---|
Separator inside a caption | The quoted semicolon remained inside the description. | Quote the whole field and escape embedded quotes. |
Unknown or duplicated channel name | The mapper reported unknown or ambiguous input. | Select an unambiguous connected account. |
Impossible calendar date | The invalid-date fixture was rejected by the parser. | Correct the date and inspect its time zone. |
Only part of the batch appears | Schedules are separate API requests in this workflow. | Compare returned IDs with the original row list before retrying. |
Sources & methodology
Method: first-party parser and API source review plus a connected development harness, 2026-10-19. All example dates are test configuration. No browser upload, provider authorization or platform delivery was established.
- Uplonic batch-csv implementation: headers, delimiter detection, quoting, filename matching, time parsing and channel resolution; checked 2026-10-19.
- Uplonic uploads routes: individual schedule creation, listing and cancellation, exercised with the parser output in a dedicated development workspace on 2026-10-19.
- RFC 4180: comma-separated values and quoting conventions — checked 2026-10-19.




