TikTok API errors: what each code means and the fix

    TikTok Content Posting API errors explained: token, scope, audit, privacy, spam limits, "frame rate check failed" and the integration guidelines message.

    Updated · 5 min read · Prices and limits checked against the vendors' own pages and APIs on that date.

    When a post to TikTok through the Content Posting API fails, the message is often a pointer to TikTok's guidelines and says nothing about the cause. The cause is in the error code. This page lists the codes a scheduler meets, what each one means, whether retrying can help, and what to change. It is written from the code that publishes to TikTok for Preflight, checked on 20 October 2026, and it covers the errors a person can act on: a token that expired, a post that was refused for its privacy setting, a caption with a link, a video that failed after processing.

    Two things explain most of them. First, TikTok splits a failure into two moments: the request is refused at once with a code, or it is accepted and the video fails minutes later while TikTok processes it. Second, many limits belong to the creator and to the app, not to the post, so the same video can pass for one account and fail for another.

    The codes, and what to do

    CodeWhat it meansRetry?What to change
    access_token_invalid, access_token_expiredThe token is no longer good. A TikTok access token lasts 24 hours, and the refresh token is replaced each time it is used.No, not until reconnected or refreshedReconnect the account. A scheduler refreshes it for you; if the refresh token was lost or reused, only reconnecting works.
    scope_not_authorizedThe token lacks a permission the call needs. Publishing needs video.publish, reading figures needs video.list.NoCheck which scope the app asks for and reconnect so the person grants it.
    unaudited_client_can_only_post_to_private_accountsThe app has not passed TikTok's audit, so it can only post to accounts set to private.NoSet the TikTok profile to private while testing, or get the app through the audit.
    privacy_level_option_mismatchThe visibility you asked for is not one this creator may use.NoPick one of the options TikTok returned for the creator.
    reached_active_user_capAn unaudited app has reached its cap on active users.NoThe cap lifts after the audit.
    spam_risk_too_many_posts, spam_risk_user_banned_from_postingTikTok is rate-limiting posts to this account.LaterWait before trying again; spread the posts through the day.
    url_ownership_unverifiedTikTok will not fetch pictures from a domain it has not verified.NoVerify the domain in the TikTok developer console.

    Anything else arrives as "TikTok error:" followed by TikTok's own message, and a 400 answer is treated as final, since sending the same request again gets the same answer.

    The error nobody can read: "review our integration guidelines"

    This message appears when a direct post is sent without first asking TikTok what the creator is allowed to do. The Content Posting API wants a call to the creator-info endpoint before any direct post: the visibility you send has to be one of the options it returns, and the duet, stitch and comment settings have to respect the creator's own. Skip that call and TikTok answers with the generic pointer. Preflight makes the call before every publish, uses your chosen visibility when the creator may, and otherwise falls back to private, or to the first option TikTok offers when private is not one.

    Two refusals are caught earlier, with a plain sentence instead of a code. TikTok does not allow branded content on a private post, so a post marked as a paid partnership has to be public. And a creator may be allowed fewer minutes of video than the API's ten, often three or five, which is checked at publish time.

    The failure that arrives later: "frame rate check failed"

    A video can be accepted and then rejected during processing. The status check then reports FAILED with a fail_reason, and Preflight shows it as "TikTok rejected the video" followed by that reason. The usual one is "frame rate check failed": TikTok takes 23 to 60 frames per second, and a video recorded at 120 fps or exported at a rate outside that window passes the upload and fails afterwards. The fix is to re-export at 30 or 60. The other file limits are checked before anything is sent: 3 seconds to 10 minutes, up to 4 GB, and 360 to 4,096 pixels on each side. The full table is on the TikTok limits page, and a draft can be tested with the video checker.

    Photo posts: the domain and the format

    TikTok does not accept picture bytes. It fetches each picture itself, from a domain you have verified in its developer console, and refuses any other with url_ownership_unverified. Pictures are converted to JPEG for this, up to 35 per post, and a post is a photo post or a video post, never both: a post that leads with a picture goes out as the pictures and the video is left out. If one picture cannot be converted, the whole post is refused with a message saying so, rather than going out with fewer pictures than written.

    Caption rules that look like errors

    A link in a caption is refused before sending. TikTok's content sharing guidelines forbid an integration to include a link or promotional text in what it shares, and breaking that can lead to deleted content or a disabled account, so Preflight stops the post and says why instead of letting it through. More than five hashtags is only a warning: the app takes five and the API has no hashtag rule, so the rest costs caption characters and earns nothing. The first line of a photo post becomes its title and is cut at 90 characters. For how TikTok is scheduled in general, see how to schedule TikTok posts; the integration page is TikTok scheduler.

    Questions people ask

    What does "frame rate check failed" mean on TikTok?
    TikTok accepted the upload and then rejected the video while processing it because its frame rate is outside 23 to 60 fps. Export again at 30 or 60 frames per second and post it again.
    Why does my TikTok post say "review our integration guidelines"?
    The generic message usually means the post did not respect what the creator is allowed to do: a visibility they cannot use, an interaction setting they have switched off, or a direct post sent without first asking TikTok what the creator may do. A scheduler that queries the creator's options before publishing avoids it.
    Why does my TikTok post only show for me?
    An app that has not passed TikTok's audit can only post to private accounts, so content from it is limited to private viewing whatever visibility you choose. The limit lifts only when the app passes the audit.
    What is spam_risk_too_many_posts?
    TikTok is rate-limiting posts to that account because it has posted too many through the API in a day. Waiting is the fix; retrying at once does not help. Spread scheduled posts across the day.
    Can I put a link in a TikTok caption through the API?
    No. TikTok's content sharing guidelines forbid links and promotional text in what an integration shares, and a link in a caption is not clickable anyway. Put the link in your profile instead.

    Write it once. Let the rules be our problem.

    Preflight checks every post against each network's rules before it leaves, then publishes it to twelve networks. Free plan, no card.