Publish video
Upload and publish in one request. The gateway gets the upload authorization, transfers the file in chunks, runs the media precheck and creates the post. Send multipart/form-data with a file, or JSON with video_url or video_base64.
- Upstream
/aweme/v1/upload/authkey//tiktok/v1/infringement/precheck//aweme/v1/create/aweme/- Access
- Growth and up
- Runs on
- FullPool
- Client
os,app_flavour,app_versionselectable- Body
- multipart/form-data or JSON
- Billing
- Failed calls are free
Authorization
Your API key. Create one in API keys.
Form fields or JSON body
Send multipart/form-data with the file, or application/json with a URL or base64. Arrays go as comma-separated form fields.
A connected account, from /dash/sessions or POST /v1/account/import. For example acc_7Hq2.
The .mp4 or .mov file (multipart only).
Or a URL to fetch the video from. For example https://example.com/launch.mp4.
Or the video as base64.
The caption. For example Launch film.
Hashtags, without the #.
Usernames to mention.
Who can see it. One of public, friends, private.
Allow comments. For example true.
Allow duets. For example true.
Allow stitches. For example true.
Allow downloads. For example false.
Frame to use as the cover. For example 1200.
Tag a place.
Use a sound.
Publish later, as Unix seconds.
Label the post as AI-generated. For example false.
Products to anchor.
android or ios. One of android, ios.
Which app to run as. One of tiktok, lite, lite_coin, pro, studio, shop, tv, douyin.
A release of that app. Defaults to the current default for (os, app_flavour). For example 47.6.3.
Response
A 200 returns JSON with stable field names. Every response carries x-credits-cost, x-credits-tier and x-credits-remaining.
Errors
Errors return a JSON body with a stable code and cost 0 credits. See Errors and retries.