Is There an API to Schedule TikTok, Instagram Reels and YouTube Shorts?
· Giovanni Fu Lin · api, automation, short-video, tiktok, instagram, youtube, scheduling
Yes. TikTok, Instagram and YouTube each have their own publishing API with its own approval steps, and a scheduling tool stores the video and calls those APIs at the time you chose. SchedulePost wraps all of them in one REST API (https://schedulepost.fulinlabs.com/api/v1) where you upload once, list your connected accounts, and schedule or queue a post for several platforms in one request. I build SchedulePost, so this guide uses my own API as the worked example; the API reference is at schedulepost.fulinlabs.com/api-docs.
What does each platform’s API require?
Publishing is gated by each platform, not by the scheduler. I cover these in detail in can Claude post to TikTok and Instagram; in short:
- TikTok: the Content Posting API publishes a video to a user who authorized your app. Public posts need an app that has passed TikTok’s audit; until then posts are drafts or private.
- Instagram: the Graph API publishes Reels for professional or creator accounts, not personal ones.
- YouTube: the Data API uploads videos with OAuth. Titles are limited to 100 characters; see Shorts title and description limits.
Building each integration yourself means three developer-app approvals and three upload flows. Using a scheduler’s API trades that for one key and the scheduler’s approved apps.
How do I schedule a video through the SchedulePost API?
Three calls. Examples follow the public API documentation as of November 11, 2026; check the live reference before depending on a field.
1. Upload the video. A multipart upload returns a public videoUrl. The media limit is 512 MB. For large files the documentation recommends requesting a presigned target from /api/v2/upload, with an exact contentLength.
curl -X POST -H "x-api-key: sp_xxx" \
-F "file=@/path/to/video.mp4" \
https://schedulepost.fulinlabs.com/api/v1/upload
2. List your connected accounts to get the connection IDs for TikTok, Instagram and YouTube:
curl -H "x-api-key: sp_xxx" https://schedulepost.fulinlabs.com/api/v1/connections
3. Schedule the post with an absolute ISO 8601 time. Use the videoUrl from step 1:
curl -X POST -H "x-api-key: sp_xxx" -H "Content-Type: application/json" \
-d '{
"mediaItems": [{ "url": "VIDEO_URL", "mediaType": "VIDEO" }],
"caption": "New video out tomorrow",
"connectionIds": ["CONNECTION_ID_1", "CONNECTION_ID_2"],
"scheduledFor": "2026-11-20T15:00:00Z",
"youtubeTitle": "New video"
}' \
https://schedulepost.fulinlabs.com/api/v1/schedule
The response includes postId and the confirmed scheduledFor. To let the service choose the time instead, post the same body without scheduledFor to /queue, which picks the next available slot; settings such as postsPerDay and allowedDays shape the choice.
What are the limits and safety features?
| Topic | Behaviour |
|---|---|
| Authentication | x-api-key header; new keys are read-only for 90 days; the posts:write permission is needed to publish, schedule, upload or delete |
| Rate limit | 120 requests per minute per key; a 429 response carries Retry-After |
| Media | 512 MB maximum per upload |
| Retries | Send an Idempotency-Key header; a repeat with the same intent returns the stored result, a changed request with the same key returns 409 |
| Bulk changes | Reschedule or delete 1 to 100 selected posts atomically; no partial writes |
| Results | A post.completed webhook fires when a post is published, partially published or failed |
| TikTok mode | tiktokPostMode is DIRECT_POST by default; MEDIA_UPLOAD sends a draft to the TikTok inbox |
Two honest caveats. Platforms can still refuse a post for reasons a scheduler cannot control, such as a TikTok account-specific limit, so read the per-platform result instead of assuming success; the platform support page shows what has actually published in production, including failures. And Threads and X have only single test publishes there, so do not build on them without testing.
When is this not the right tool?
If you need a visual content calendar, approvals for a team, LinkedIn, Pinterest or Bluesky, a broader tool fits better; compare options in the best tools to schedule TikTok, Reels and Shorts. If you want to self-host, see Postiz and Mixpost without the Docker. If you post once a week, the native schedulers are enough.
Quick checklist
- Create a key with
posts:writeonly if the integration publishes. - Upload, list connections, then schedule or queue.
- Send an idempotency key on every write.
- Handle 429 using
Retry-Afterand listen forpost.completed. - Validate caption length before sending, using the caption limits.
FAQ
Is there an official API for scheduling TikTok posts?
TikTok has a Content Posting API for publishing videos. A scheduling tool holds the video and the publish time on its side and calls the API when the time arrives. Public posting requires an app that has passed TikTok's audit; before that, posts are limited to drafts or private visibility.
Can I schedule Instagram Reels through an API?
Yes, through the Instagram Graph API, for professional or creator accounts only. The API publishes a Reel when you call it; a scheduling tool calls it at the time you chose.
What does the SchedulePost API let me do?
Upload media, list your connected accounts, publish now, schedule for a given time, add a post to a smart queue that picks the next slot, list and delete scheduled posts, reschedule or delete up to 100 at once, and receive a webhook when a post completes.
How do I authenticate to the SchedulePost API?
Send an API key in the x-api-key header. New keys are read-only for 90 days by default; select the posts:write permission to publish, schedule, upload or delete. A missing permission returns 403 with insufficient_scope.
What are the API rate and size limits?
The documentation states 120 requests per minute per key and a 512 MB limit on uploaded media. A reused idempotency key with a different request returns 409, so retrying a request with the same key does not create a duplicate post.
Can an AI assistant use the same API?
SchedulePost also runs an MCP server, so a connected assistant can call the same publishing functions. See the separate guide on whether Claude can post to TikTok and Instagram.
Related project: SchedulePost by Fulin Labs