# Is There an API to Schedule TikTok, Instagram Reels and YouTube Shorts?

URL: https://fulinlabs.com/blog/schedule-tiktok-reels-shorts-api-2026/
Published: 2026-11-11
Product: schedulepost
Summary: Yes. Each platform has its own publishing API with approval steps, and SchedulePost wraps them in one REST API and an MCP server. Endpoints, limits and a worked example.

**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](https://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](/blog/can-claude-post-to-tiktok-instagram-2026/); 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](/blog/youtube-shorts-title-description-length-2026/).

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`.

```sh
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:

```sh
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:

```sh
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](/projects/schedulepost/platform-support/) 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](/blog/best-tools-schedule-tiktok-reels-shorts-2026/). If you want to self-host, see [Postiz and Mixpost without the Docker](/blog/free-postiz-mixpost-alternative-hosted-2026/). If you post once a week, the native schedulers are enough.

## Quick checklist

- Create a key with `posts:write` only if the integration publishes.
- Upload, list connections, then schedule or queue.
- Send an idempotency key on every write.
- Handle 429 using `Retry-After` and listen for `post.completed`.
- Validate caption length before sending, using the [caption limits](/blog/short-video-caption-length-limits-2026/).

## 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.
