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/Growth and upParameters
| Name | Type | Description |
|---|---|---|
account_idrequired | string | A connected account, from /dash/sessions or POST /v1/account/import. e.g. acc_7Hq2 |
filefile, video_url or video_base64 | file | The .mp4 or .mov file (multipart only). |
video_urlfile, video_url or video_base64 | string | Or a URL to fetch the video from. e.g. https://example.com/launch.mp4 |
video_base64file, video_url or video_base64 | string | Or the video as base64. |
caption | string | The caption. e.g. Launch film |
hashtags | string[] | Hashtags, without the #. |
mentions | string[] | Usernames to mention. |
visibility | string | Who can see it. e.g. public |
allow_comment | boolean | Allow comments. e.g. true |
allow_duet | boolean | Allow duets. e.g. true |
allow_stitch | boolean | Allow stitches. e.g. true |
allow_download | boolean | Allow downloads. e.g. false |
cover_timestamp_ms | integer | Frame to use as the cover. e.g. 1200 |
poi_id | string | Tag a place. |
music_id | string | Use a sound. |
schedule_time | integer | Publish later, as Unix seconds. |
aigc_generated | boolean | Label the post as AI-generated. e.g. false |
shop_product_ids | string[] | Products to anchor. |
os | string | android or ios. e.g. android |
app_flavour | string | Which app to run as. e.g. tiktok |
app_version | string | A release of that app. Defaults to the current default for (os, app_flavour). e.g. 47.6.3 |
Pricing
| Plan | Per call | Per 1,000 calls |
|---|---|---|
| Starter | 100 credits | $11.60 |
| Growth | 100 credits | $7.92 |
| Scale | 100 credits | $5.82 |
Connected sessions run on FullPool and are for accounts you own or are authorized to operate. Growth and up.
Responses
A 200 returns JSON with stable field names. Every response carries x-credits-cost, x-credits-tier and x-credits-remaining. Errors return a JSON body with a stable code and cost 0 credits. Error codes
curl -X POST https://api.tikultra.com/v1/account/upload/video \
-H "x-api-key: $TIKULTRA_KEY" \
-F "[email protected]" \
-F "account_id=acc_7Hq2" \
-F "caption=Launch film" \
-F "hashtags=keyboards" \
-F "visibility=public" \
-F "allow_comment=true" \
-F "allow_duet=true" \
-F "allow_stitch=true" \
-F "cover_timestamp_ms=1200"{
"aweme_id": "7705852133855161377",
"status": "published",
"visibility": "public",
"share_url": "https://www.tiktok.com/@acme/video/7705852133855161377",
"steps": {
"authorize_ms": 182,
"transfer_ms": 2840,
"precheck_ms": 410,
"create_ms": 366
}
}More in Connected sessions
POST/v1/account/importImport session25 crPOST/v1/account/login/otp/sendEmail sign-in: send code25 crPOST/v1/account/login/otp/verifyEmail sign-in: verify code25 crPOST/v1/account/sessionRefresh session25 crGET/v1/account/healthSession health15 crPOST/v1/account/warm/nicheWarm session for niche25 crGET/v1/account/upload/precheckUpload precheck15 crPOST/v1/account/upload/slideshowPublish slideshow100 crPOST/v1/account/upload/deleteDelete post15 crPOST/v1/account/post/visibilityPost visibility15 crGET/v1/account/upload/placesPlaces for a post15 crPOST/v1/account/profile/updateUpdate profile25 crPOST/v1/account/profile/usernameChange username25 crPOST/v1/account/profile/avatarChange avatar25 crPOST/v1/account/profile/privacyPrivacy settings25 crPOST/v1/account/settingsApp settings15 crPOST/v1/account/wellbeingDigital wellbeing15 crPOST/v1/account/commentPost comment25 crPOST/v1/account/comment/likeLike comment15 crPOST/v1/account/comment/unlikeUnlike comment15 crPOST/v1/account/comment/deleteDelete comment15 crGET/v1/account/dm/inboxInbox20 crGET/v1/account/dm/conversation/listConversations20 crGET/v1/account/dm/conversation/messagesConversation messages20 crPOST/v1/account/dm/conversation/createStart conversation20 crPOST/v1/account/dm/conversation/readMark read20 crPOST/v1/account/dm/sendSend message35 crPOST/v1/account/dm/send-imageSend image35 crPOST/v1/account/dm/send-voiceSend voice note35 crPOST/v1/account/dm/replyReply to message35 crPOST/v1/account/dm/stickerSend sticker35 crPOST/v1/account/dm/share-videoShare video35 crPOST/v1/account/dm/reactReact to message15 crPOST/v1/account/dm/recallUnsend message15 crGET/v1/account/dm/group/infoGroup info20 crGET/v1/account/dm/group/membersGroup members20 crGET/v1/account/dm/streaksStreaks20 crPOST/v1/account/live/startStart LIVE100 crPOST/v1/account/live/pingLIVE heartbeat15 crPOST/v1/account/live/finishEnd LIVE15 crPOST/v1/account/live/moderateModerate LIVE20 crPOST/v1/account/live/cohostCo-host20 crPOST/v1/account/live/battleLIVE match20 crGET/v1/account/shop/cartCart25 crGET/v1/account/shop/order-centerOrders25 crGET/v1/account/shop/csShop support chat25 cr
Ready to build?
Start with 2,500 free credits and test every public endpoint, then pick a plan.