TikTok posting

Post and schedule TikTok videos and photos

Status 200 Uploads posts TikTok videos and photo posts for you, now or at a time you pick, from the dashboard, the REST API or an AI app such as Claude. You sign in on TikTok itself, choose who can see each post, turn comments, Duet and Stitch on or off, and we upload the file to TikTok through our own TikTok app.

  • Checked on

TikTok at a glance

What you can post
One video, or a photo post of one or more photos. TikTok does not mix photos and a video in one post.
Largest video
4 GB per file. File limits of every network
Largest image
20 MB per image.
Text
A video has one caption of up to 2,200 characters. A photo post has a title of up to 90 characters and a description of up to 4,000.
Scheduling
Schedule a post up to 365 days ahead, or send it now.
Plans
TikTok is on every plan, Free included. Pricing
How it connects
You sign in on TikTok itself (OAuth), so we never see your TikTok password.
Your own TikTok app
Not needed. Posts go through our TikTok app, which TikTok lets post publicly, so you never register a developer app of your own.

TikTok settings you control

Who can see it · Comments off · Duet off · Stitch off · Your brand · AI-generated label · Auto music · Photo title · Photo description

What you can post to TikTok

Video posts

One video per post, up to 4 GB and as long as your TikTok account allows. The caption can be up to 2,200 characters; in the API it is the post text, or tiktok.title when you send one. Duet and Stitch apply to videos.

Photo posts

A post of photos instead of a video, with a title of up to 90 characters and a description of up to 4,000. TikTok takes photos up to 1080 × 1920 pixels (1920 × 1080 wide): a larger JPEG is sent as a smaller copy, and a PNG or GIF as a JPEG copy, and the answer says so each time.

Several photos in one post

Send two or more photos in one post and TikTok shows them as a carousel people swipe through. TikTok's own limit is 35 photos in one post. Each photo follows the same size rules as a single one.

TikTok settings

Each setting by its name in the dashboard, its field in the REST API and its option in the AI connector. Every one here has been used in a real post or a dated live test.

TikTok settings in the dashboard, the REST API and the AI connector
SettingDashboardREST fieldAI connector optionWhat it does
Who can see itPrivacy Leveltiktok.privacyLevelprivacy_levelPublic, friends, followers or only you: only the levels TikTok offers the account (the account's posting options list them). Through the REST API a post without one goes out as only you.
Comments offCommentstiktok.disabledCommentsdisable_commentsNobody can comment on the post.
Duet offDuettiktok.disabledDuetdisable_duetNobody can Duet the video. Videos only.
Stitch offStitchtiktok.disabledStitchdisable_stitchNobody can Stitch the video. Videos only.
Your brandYour brandtiktok.isYourBrandis_your_brandMarks the post as promoting your own business, as TikTok asks.
AI-generated labelAI-Generated Contenttiktok.isAiGeneratedis_ai_generatedTikTok labels the video as AI-generated. Videos only.
Auto musicAuto Musictiktok.autoAddMusicauto_add_musicTikTok adds music to the photo post. Photo posts only.
Photo titlePhoto title (optional)tiktok.titletitleThe title of a photo post, up to 90 characters; a longer one is shortened at the end of a word. On a video it replaces the caption.
Photo descriptionPhoto description (optional)tiktok.descriptiondescriptionThe text under a photo post, up to 4,000 characters. Photo posts only.

What we change for you, and tell you

When we change or flag something in a TikTok post, the answer (and History) names it with one of these codes. Your original file is never changed.

  • unknown_field: A field we do not read is not used, and the answer says so (with the field name we think you meant, when there is one). The post still goes out.

  • field_not_used: A field we read but could not use for this post (for example another network's block, or a setting that does not apply to this kind of post) is named in the answer. The post still goes out.

  • options_outside_post: An option sent next to "post" instead of inside it is not used, and the answer says where it belongs.

  • converted_to_jpeg: TikTok does not take PNG or GIF photos, so we send a JPEG copy of such a photo and say so. Your original file is unchanged.

  • resized_for_tiktok: A photo larger than TikTok takes is sent as a smaller copy, and the answer gives both sizes. Your original file is unchanged.

  • title_shortened: A title longer than TikTok allows is shortened at the end of a word, and the answer says to how many characters.

  • description_shortened: A description longer than TikTok allows is shortened at the end of a word, and the answer says so.

  • text_partly_used: When the title is made from the post text and a description was sent, the rest of the text is not used, and the answer says how to keep it.

  • media_url_not_kept: A scheduled post that names its media by web address fetches the file when it goes out, and we keep no copy: the answer reminds you the file must still be there then.

  • posts_close_together: The answer warns when another TikTok post of the account is scheduled within 20 seconds: leave at least a minute between them.

  • caption_over_limit: In a dry run or a scheduled post, a caption longer than TikTok allows is flagged. We send it as it is; TikTok may refuse it or cut it short.

  • moved_to_next_day: When the daily limit of the profile is reached while a scheduled post is going out, the networks that did not fit move to the next day as a scheduled post of their own, and the post read back says so.

  • queued_for_next_day: On a plan with a daily limit, a post over the day's limit is queued for the next day instead of failing (answer 202), and the answer gives the time.

Post to TikTok your way

The same TikTok post from the dashboard, the REST API, Python, n8n or an AI app.

From the dashboard

  1. Under Connections, connect your TikTok account: you sign in on TikTok itself.
  2. In Schedule, add your video or photos, write the caption, and pick TikTok.
  3. Choose who can see it and the TikTok settings, then post now or pick a time.

Connect TikTok →

From the REST API

Post an uploaded video to TikTok, public (POST /api/v2/posts)
curl -X POST 'https://status200uploads.com/api/v2/posts' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer rl_your_api_key' \
  -d '{
    "post": {
      "accountId": "@yourprofile",
      "platform": "tiktok",
      "content": {
        "text": "My first API post! #automation",
        "mediaID": ["YOUR_FILE_ID"]
      },
      "tiktok": {
        "privacyLevel": "PUBLIC_TO_EVERYONE"
      }
    }
  }'

Full page →

From Python

The same post with the status200uploads package (pip install status200uploads)
from status200uploads import Status200

s200 = Status200()  # the key comes from STATUS200_API_KEY

post = {
    "accountId": "@yourprofile",
    "platform": "tiktok",
    "content": {"text": "My first API post! #automation", "mediaID": ["YOUR_FILE_ID"]},
    "tiktok": {"privacyLevel": "PUBLIC_TO_EVERYONE"},
}
result = s200.publish(post, wait=True)  # reads the post back until TikTok is done
print(result.final.get("status") if result.final else result.code)

Full page →

From n8n

  1. Add an HTTP Request node: POST https://status200uploads.com/api/v2/posts.
  2. Headers: Authorization Bearer rl_your_key, Content-Type application/json, and an Idempotency-Key such as {{ $json.id }}-tiktok, so a retry never posts twice.
  3. Body: the JSON below, with your own fields as expressions.
The HTTP Request body
{
  "post": {
    "accountId": "@yourprofile",
    "platform": "tiktok",
    "content": {
      "text": "{{ $json.caption }}",
      "mediaID": ["{{ $json.fileId }}"]
    },
    "tiktok": { "privacyLevel": "PUBLIC_TO_EVERYONE" }
  }
}

Full page →

From an AI app

Post the newest video in my media library to TikTok with the caption "Behind the scenes".

The app finds the file with status200_list_media, then asks you who should see the post: the connector refuses a TikTok post without a privacy level, before anything is sent. It checks the post with status200_validate_post and sends it with status200_publish_post, and tells you if we changed anything.

Full page →

TikTok errors you may see

The code in the answer, what it means and what to do. Each one is in the API reference.

TikTok error codes
HTTPCodeWhat it meansWhat to do
401REFRESH_TOKEN_EXPIREDTikTok ended the connection to your account.Connect TikTok again under Connections, then send the post again.
401NO_TOKENNo TikTok connection is stored for this profile.Connect TikTok under Connections.
422photo_format_not_supportedThe photo is HEIC, AVIF, BMP or TIFF, which TikTok does not take. Nothing was sent.Save it as a JPEG and post again.
422photo_too_large_to_resizeThe photo is larger than TikTok takes and we cannot make a smaller copy of it. Nothing was sent.Save it smaller, for example 1080 × 1350 pixels, and post again.
422photo_too_large_to_convertThe PNG or GIF is too large for us to make a JPEG copy. Nothing was sent.Save it as a JPEG of at most 1080 × 1920 pixels and post again.
400no_publish_idTikTok did not confirm the upload.Send it again once, with the same Idempotency-Key.
502upload_worker_failedOur upload of the video to TikTok stopped.Send it again once, with the same Idempotency-Key.
202still_publishingTikTok accepted a photo post, and its upload was still going when we answered.Do not send it again: read the post back later.
413MEDIA_TOO_LARGEThe file is larger than TikTok takes through us.Use a smaller file: videos up to 4 GB.

TikTok questions

Start posting to TikTok

TikTok is on every plan, Free included. Everything on this page was checked on 26 October 2026.