Skip to content
Connected session · FullPool

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.

POSTapi.tikultra.com/v1/account/upload/video100 cr
Upstream/aweme/v1/upload/authkey//tiktok/v1/infringement/precheck//aweme/v1/create/aweme/Growth and up

Parameters

NameTypeDescription
account_idrequiredstringA connected account, from /dash/sessions or POST /v1/account/import.
e.g. acc_7Hq2
filefile, video_url or video_base64fileThe .mp4 or .mov file (multipart only).
video_urlfile, video_url or video_base64stringOr a URL to fetch the video from.
e.g. https://example.com/launch.mp4
video_base64file, video_url or video_base64stringOr the video as base64.
captionstringThe caption.
e.g. Launch film
hashtagsstring[]Hashtags, without the #.
mentionsstring[]Usernames to mention.
visibilitystringWho can see it.
e.g. public
allow_commentbooleanAllow comments.
e.g. true
allow_duetbooleanAllow duets.
e.g. true
allow_stitchbooleanAllow stitches.
e.g. true
allow_downloadbooleanAllow downloads.
e.g. false
cover_timestamp_msintegerFrame to use as the cover.
e.g. 1200
poi_idstringTag a place.
music_idstringUse a sound.
schedule_timeintegerPublish later, as Unix seconds.
aigc_generatedbooleanLabel the post as AI-generated.
e.g. false
shop_product_idsstring[]Products to anchor.
osstringandroid or ios.
e.g. android
app_flavourstringWhich app to run as.
e.g. tiktok
app_versionstringA release of that app. Defaults to the current default for (os, app_flavour).
e.g. 47.6.3

Pricing

PlanPer callPer 1,000 calls
Starter100 credits$11.60
Growth100 credits$7.92
Scale100 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
  }
}
Try it in the playgroundFull reference in the docs

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.