Skip to main content

How do I post to TikTok with an API?

Send a multipart/form-data request to Upload-Post's POST https://api.upload-post.com/api/upload endpoint with your video file (or a public video URL), a user profile and platform[]=tiktok. Upload-Post runs its own approved TikTok app, so there's no developer application to register, no TikTok audit to pass, and no OAuth tokens to manage. You connect the TikTok account once in the dashboard and that's it. One caveat: TikTok posting needs a paid plan, it's not available on Free.

Steps

  1. Create an account at upload-post.com and generate an API key in the dashboard under API Keys (see Authentication).
  2. Connect a TikTok account to a profile at Manage Users. It's a standard TikTok login, no developer setup. For posting on behalf of your users, use white-label JWT connect links.
  3. Call the upload endpoint:
curl \
-H 'Authorization: Apikey your-api-key-here' \
-F 'video=@/path/to/your/video.mp4' \
-F 'title="Your Video Title"' \
-F 'user="test"' \
-F 'platform[]=tiktok' \
-X POST https://api.upload-post.com/api/upload

video also accepts a public URL instead of a file: -F 'video="https://example.com/videos/myvideo.mp4"'.

Useful TikTok parameters

All parameters are documented in the Upload Video reference. The most used ones:

ParameterWhat it doesDefault
tiktok_titleTikTok-specific caption (falls back to title). Max 2,200 chars for video.title
post_modeDIRECT_POST publishes immediately; MEDIA_UPLOAD sends the video to the user's TikTok inbox/drafts.DIRECT_POST
privacy_levelPUBLIC_TO_EVERYONE, MUTUAL_FOLLOW_FRIENDS, FOLLOWER_OF_CREATOR, SELF_ONLYPUBLIC_TO_EVERYONE
disable_comment / disable_duet / disable_stitchTurn off comments, duets or stitchesfalse
cover_timestampVideo frame (ms) to use as cover1000
is_aigcDeclare AI-generated contentfalse
scheduled_dateISO-8601 date to schedule the postnone
async_uploadReturn immediately with a request_id and process in background (recommended)false
Draft mode gets better organic reach

We recommend post_mode=MEDIA_UPLOAD (Draft): the video lands in the TikTok inbox and the user publishes it from the app, which typically performs better in TikTok's distribution. In Draft mode TikTok ignores title/privacy metadata sent via API.

TikTok photo slideshows

Post images (with optional automatic music) through the Upload Photos endpoint:

curl -X POST https://api.upload-post.com/api/upload_photos \
-H 'Authorization: Apikey your-api-key-here' \
-F 'photos[][email protected]' \
-F 'photos[][email protected]' \
-F 'title="Photo slideshow with music"' \
-F 'user="test"' \
-F 'platform[]=tiktok' \
-F 'auto_add_music=true'

Limits and gotchas

  • Daily cap: 15 TikTok posts per connected account per rolling 24 h (upload limits).
  • Free plan: TikTok uploads return 403; you need a paid plan (pricing & limits).
  • reached_active_user_cap error: a temporary TikTok platform limit. See the workaround guide.
  • Formats: see Video Requirements for TikTok's accepted formats and sizes.