TikTok
Formats, media and text limits, options, inbox and analytics on TikTok.
Publish video and photo to TikTok, read every post's numbers, and answer comments. Set a target's format, or leave it out and Rizamo picks one from the files.
Formats
| Format | Files | Text |
|---|---|---|
video | 1 video | 2,200 |
photo | 1 to 35 images | 4,000 |
Media
Rizamo takes JPEG, PNG, WebP, MP4 and MOV files up to 4 GB. What TikTok takes:
- Images: JPEG or WebP, up to 20 MB, at most 1,080 by 1,920 px either way round.
- Video: H.264, HEVC or VP9 with AAC audio, 23 to 60 frames a second, up to 1,920 px wide.
| Format | Length | Size |
|---|---|---|
video | 3 s to 1 h | up to 1 GB |
Each account has its own longest video, maxVideoSeconds in its creator info: TikTok checks it when the post goes out.
What Rizamo does to files
- Images: another type becomes JPEG or WebP; a larger file is compressed under 20 MB; a larger one is made to fit 1,080 by 1,920 px.
- Video: one TikTok does not take as it is (its codec, frame rate, width or size) is converted to H.264 and AAC within those limits. Its length cannot change: a video too short or too long for the format is refused when it is attached.
- Your file itself never changes: the copy is made when the post goes out, and each target's
changessays what was done.
Text
- Up to 2,200 (4,000 on
photo), counted in UTF-16 code units, as JavaScript'slengthcounts them: most emoji count 2. Rizamo counts the same way, soPOST /v1/posts/validaterefuses what TikTok would. - A first comment takes up to 1,200 characters.
Options
Under options.tiktok on a target. Each says which formats take it.
TikTok has no defaults: before each post, read the account's creator info (GET /v1/accounts/{id}/tiktok/creator-info, get_tiktok_creator_info in MCP) and ask the person every required choice. A draft (draft: true) needs none.
| Option | Type | What it does |
|---|---|---|
disableComments | boolean | Required. Turns comments off. Ask the person; true when the account's creator info says comments are off. |
disableDuet | boolean | Required for videos. Turns Duet off. Ask the person; true when the account's creator info says Duet is off. |
disableStitch | boolean | Required for videos. Turns Stitch off. Ask the person; true when the account's creator info says Stitch is off. |
isYourBrand | boolean | Required. The post promotes the person's own business: TikTok labels it "Promotional content". |
isBrandedContent | boolean | Required. A paid partnership with a third party: TikTok labels it "Paid partnership". It cannot be private (only_me). |
isAiGenerated | boolean | Required for videos. Labels the video as AI-generated. |
privacyLevel | everyone, friends, followers, only_me | Required for photos (videos are always public): one of the account's privacyLevels from its creator info. |
title | string | Photos: a title shown above the caption, up to 90 characters. |
autoAddMusic | boolean | Photos: let TikTok pick the music. Not together with music. |
music | object | Music from TikTok's library, for a video or photo post that publishes (not a draft, not with autoAddMusic). Photos take only trackId. |
coverOffsetMs | integer | Videos: the frame this many milliseconds in becomes the cover. It must be within the video: TikTok fails a post whose cover is past its end. TikTok's default is 0, the first frame. Not with coverMediaId, nor in a draft, where TikTok ignores it. |
coverMediaId | string | Videos: an image uploaded to Rizamo, by its media id, as the cover: JPG, PNG or WebP, at least 360 by 360 pixels. TikTok downloads covers only from Rizamo's own media links, so a cover is media, not a link. Not with coverOffsetMs. |
coverIndex | integer | Photos: which photo is the cover, from 0 (the first, TikTok's default). |
draft | boolean | Send it to the creator's TikTok inbox as a draft instead of publishing. The person finishes it in the TikTok app, where TikTok asks for every other choice; the target is published once it reaches the inbox, with no link. |
consent | true | Required to publish: the person saw the post, the account's name and these choices, and agreed to TikTok's Music Usage Confirmation (and its Branded Content Policy for branded content). Never set it without asking. |
First comment
firstComment goes out right after the post, as a comment by the account, up to 1,200 characters. Not on a draft (draft: true), which has no post to comment on yet, nor with disableComments. One it would not take is refused when the post is made (400), with the reason. If it fails once the post is live, the post stays published.
Music
Music from TikTok's library, for a video or photo post that publishes (not a draft, not with autoAddMusic). Photos take only trackId. Find a track with GET /v1/accounts/{id}/music (search_music in MCP). The video's own sound plays under the track at volume 50 of 100 unless videoVolume says otherwise.
After publishing
- Edits: TikTok does not change a live post's text: an update to a live post is
not_supported. - Deleting: TikTok keeps its posts: deleting one in Rizamo leaves it live there (
removal: not_supported), to delete in TikTok's app.
Inbox
Comments on the account's videos and photo posts are read every 15 minutes for a post's first 48 hours, hourly to day 14 and daily to day 90, then no longer, and answered as the account.
- Replies to comments: up to 1,200 characters.
- Messages: none. TikTok does not offer its messaging API to accounts in the EEA, Switzerland or the UK.
| Action | People's comments | The account's own |
|---|---|---|
| Hide | yes | no |
| Delete | no | yes |
| Like | no | no |
Comment automations
Comment automations are off for TikTok: they answer by private message, and TikTok does not offer its messaging API to accounts in the EEA, Switzerland or the UK.
Daily caps
Up to 15 posts an account in 24 hours, counting every post sent, live or not yet. Up to 6 a minute. A post over a cap waits for room (Limits).
Analytics
Days run on UTC. Numbers come up to 48 hours late: posts are first read 24 to 48 hours after they go out. TikTok stops updating a post's numbers a year after it goes out. On connecting, Rizamo reads back the posts of the last 12 months (up to 500) and 59 days of the account's numbers. How Rizamo reads numbers.
Posts
| Metric | TikTok's name | Formats | Note |
|---|---|---|---|
views | video_views | all | |
reach | reach | all | |
likes | likes | all | |
comments | comments | all | |
shares | shares | all | |
saves | favorites | all | |
watch_time | total_time_watched | all | Needs video.insights |
avg_watch_time | average_time_watched | all | Needs video.insights |
follows | new_followers | all | Needs video.insights |
profile_visits | profile_views | all | Needs video.insights |
engagements | Rizamo adds up likes, comments, shares and saves | all |
Its posts' details, what is not a count (a post's details, the latest read only: Details):
| Detail | TikTok's name | Formats | Note |
|---|---|---|---|
completion_rate | full_video_watched_rate | video | Needs video.insights |
traffic_sources | impression_sources | all | Needs video.insights |
viewer_types | audience_types | all | Needs video.insights |
retention | video_view_retention | video | Needs video.insights |
viewer_demographics | audience_genders | all | Needs video.insights |
viewer_demographics | audience_countries | all | Needs video.insights |
viewer_demographics | audience_cities | all | Needs video.insights |
Account
| Metric | TikTok's name | Note |
|---|---|---|
reach | unique_video_views | Needs user.insights |
views | video_views | Needs user.insights |
accounts_engaged | engaged_audience | Needs user.insights |
likes | likes | Needs user.insights |
comments | comments | Needs user.insights |
shares | shares | Needs user.insights |
profile_visits | profile_views | Needs user.insights |
follows | daily_new_followers | Needs user.insights |
unfollows | daily_lost_followers | Needs user.insights |
Its audience: who follows the account, by age, gender, country and city, for accounts with 100 followers or more. TikTok gives shares of the followers: Rizamo turns them into counts of today's followers, so they are estimates. With it, the hours its followers are active (activeHours, from audience_activity, accounts with advanced access or a verified business account, and 100 followers or more).
No clicks on its posts. A post's profile visits, and the account's reach, accounts engaged, follows and unfollows, come only for accounts with TikTok's advanced access or verified business accounts: otherwise they are missing, with a note.