Key takeaways
- A single upload carries 1,500 rows on Studio, 2,500 on Agency, 5,000 on Agency+ and 25,000 on Enterprise; Solo (500) needs two uploads for 1,000 posts and Free (50) needs twenty.
- Every row is validated against each platform’s rules and previewed before anything is committed, so errors are fixed before publish, not after.
- Spread the load: even at the daily ceilings, 1,000 posts on ONE Instagram account would take 10 days and on one TikTok account about 67, so 1,000 posts is a multi-account, multi-week plan — and real cadences sit far below the ceilings.
- Rows with no time are distributed automatically; a schedule spread offsets accounts so they do not all fire together.
How do you bulk schedule 1000 posts in one upload?
The importer enforces a row cap per plan, read from the same catalog the importer uses, so the numbers below cannot drift from what happens when you upload.
| Plan | Rows per upload | Uploads for 1,000 posts |
|---|---|---|
| Free | 50 | 20 |
| Solo | 500 | 2 |
| Studio | 1,500 | 1 |
| Agency | 2,500 | 1 |
| Agency+ | 5,000 | 1 |
| Enterprise | 25,000 | 1 |
How do you build a 1,000-row file?
One row per post. Only content and platforms are required; the other 14 columns are optional. The columns that matter at scale:
scheduledAt— an ISO-8601 datetime with a UTC offset, or blank to have SkedCast distribute the row automatically; addtimezone(an IANA name) so a client’s local morning stays local.accountIdsorclientName— pin each row to its destination; blank resolves by client and platform.mediaUrls— up to 20 public https image or video URLs per row; use stable URLs, since a dead link fails that row.hashtags,firstComment,link,title,altText— per-row extras;aiGeneratedmarks AI-written rows for disclosure.evergreen— mark rows that should be recyclable so you do not rebuild them next quarter.
How do you validate 1,000 rows before committing?
Check the file first with the free bulk import checker and CSV validator, which run the same schema as the importer. Then upload: SkedCast validates each row against its platform’s rules — caption length, hashtag caps, media — and shows a preview grid with a status per row, where you can fix a caption in place. Nothing is scheduled until you commit, and replaying a commit with the same idempotency key returns the original result rather than creating a second batch.
What are the platform ceilings you plan against?
A batch is only safe if no single account is asked to post more than its platform allows. These are the daily ceilings from each platform’s own developer documentation, read on 23 September 2026; real cadences should sit far below them. See also SkedCast’s posting limits reference.
| Platform | Daily ceiling | Spacing at the ceiling | Days for 1,000 posts on one account |
|---|---|---|---|
| 100 API-published posts in a rolling 24 hours (a carousel counts as one), per Meta | 14 min | 10 | |
| YouTube | Google’s default for a project calling the YouTube API directly is 100 uploads a day (Google’s quota page, updated 2026-09-15); the allowance applies per API project, not per channel | 14 min | 10 |
| TikTok | A daily per-user cap exists (TikTok documents an error for it) but we found no fixed number in its current docs; SkedCast plans around about 15 a day | 96 min | 67 |
How does SkedCast pace a large batch?
Committing fans the file out into posts and per-account targets, and the worker paces those targets rather than firing them all at their timestamp. A target that would break a limit is spaced out and rescheduled automatically (a target.rate_limited event records it). You can also opt in to a spread window of up to 12 hours, which adds a deterministic delay after the chosen time so many accounts do not publish in the same second; it only ever delays, never advances. Some platform allowances belong to the application rather than to your account — YouTube’s quota is per Google API project, so SkedCast manages that allowance as a shared pool across workspaces and paces your uploads within it; GET /v1/quota (and the MCP get_quota tool) shows the allowance that applies to your workspace before you commit. The bulk posting time calculator shows how long N posts across M accounts take at these ceilings.
What if you need to change or undo a batch?
Individual scheduled posts can be edited or rescheduled from the calendar, and the API has bulk actions for many at once: reschedule, retry or cancel selected targets (POST /v1/post-targets/bulk), and shifting a whole campaign by a fixed offset. If you expect to move the batch as a unit, assign its posts to a campaign afterwards: POST /v1/campaigns/:id/shift then moves every pending post by a fixed offset. If you drive the batch from your own code instead of a file, POST /v1/posts/bulk creates up to 50 posts per request (1,000 posts is 20 requests).
Sources
FAQ
- Can you bulk schedule 1,000 posts at once?
- Yes, in a single upload from the Studio plan up. Smaller plans have a lower row cap per upload, so 1,000 posts takes several uploads.
- What happens if some rows in a 1,000-row file are wrong?
- Each row is validated and shown in a preview with its own status, so you can fix a bad caption or drop a row before committing. Nothing is scheduled until you commit.
- Will 1,000 posts at once get my account restricted?
- It is the spacing that matters, not the file size. SkedCast paces targets per account and reschedules any that would break a limit, and you can add a spread window; still, plan the batch across enough accounts and days that no account nears a platform ceiling.
- Can I automate a bulk upload instead of using a file?
- Yes: `POST /v1/posts/bulk` creates up to 50 posts per request through the REST API, so 1,000 posts is 20 requests. It needs an API key on a plan that includes API access.
- How do I move the whole batch if the date changes?
- If the posts were grouped in a campaign, shift the campaign by an offset and its pending posts move together; otherwise reschedule the selected targets in bulk.