Skip to main content
Socialift
Pillar guide

TikTok API for developers: products, access and limits

The TikTok API is a family of products on TikTok for Developers, not a single endpoint. Login Kit handles OAuth, the Display API reads profiles and public videos, and the Content Posting API publishes video and photo posts. To use them you register an app, add products and scopes, test in a sandbox and pass app review; public posting also needs an audit.

Updated:

What is the TikTok API?

TikTok for Developers is TikTok's official developer platform. One app can enable several products: Login Kit (OAuth 2.0 authorization), the Display API (profile and public videos), the Content Posting API (direct posts and drafts), Share Kit for mobile apps, Webhooks, and research-only APIs. Every call made on behalf of a user needs a user access token with the right scopes.

The v2 Open API lives at open.tiktokapis.com/v2/. Responses carry an error object next to data: error.code is ok on success, and log_id is the identifier TikTok support asks for. Log it with every error.

Brand and advertising features sit on a separate platform, TikTok API for Business, with its own portal and endpoints. The Research API and Commercial Content API serve approved researchers and are not meant for product integrations.

TikTok for Developers products at a glance

Choose products by what your integration has to do. The last column shows what the Socialift Python SDK wraps.

TikTok for Developers products at a glance — Capability matrix by platform
ProductWhat it doesWho needs itSocialift SDK
Login KitOAuth 2.0 authorization; issues access and refresh tokensAny app acting for a TikTok userlogin_url, exchange_code, refresh_token, revoke
Display API/v2/user/info/, /v2/video/list/, /v2/video/query/ — profile and public videosDashboards, creator portfoliosme, videos, iter_videos, video
Content Posting APIDirect Post to a profile or Upload to the creator's inbox; video and photo postsPublishing and scheduling backendscreator_info, publish_video, upload_video, publish_photos, publish_status
WebhooksEvent notifications such as authorization.removedKeeping connection state in syncverify_tiktok_request, parse_tiktok_event
Share KitMobile SDK for iOS and Android that hands media from your app to TikTokNative mobile appsNot covered — the Python SDK runs server-side
TikTok API for BusinessSeparate portal for business accounts and ads, including comment endpointsBrands and agenciesBusiness account metrics and comments (business_videos, comments, …)
Research API, Commercial Content APIPublic data and ad data for researchNon-profit researchersNot covered

Socialift is an independent integration layer, not a TikTok partner. Access to every product is granted by TikTok.

How to get TikTok API access, step by step

The sequence is the same whether you call raw HTTP or use an SDK.

  1. Create a developer account and an app

    Sign up at developers.tiktok.com and connect an app under Manage apps. TikTok asks for an icon (1024×1024 px), app name, category, description, Terms of Service and Privacy Policy URLs, and the platforms you target (Web, Desktop, Android, iOS).

  2. Add products and scopes

    Use Add products to enable Login Kit and, if needed, the Content Posting API. Register redirect URIs for Login Kit, then add only the scopes your features use — reviewers compare them with your demo video.

  3. Store the client key and client secret

    Both are in the Credentials section. The client key appears in authorization URLs; the client secret stays on your server and is only sent to the token endpoint.

  4. Verify URL properties if you post from URLs

    In PULL_FROM_URL mode the Content Posting API only accepts media from a verified domain or URL prefix. You verify by placing a signature file from TikTok at that location.

  5. Test in a sandbox

    A sandbox lets you try the integration without review: up to 5 sandboxes per app and up to 10 target users, which must be accounts you own. Sandbox does not offer the Content Posting API for public videos.

  6. Submit for app review

    Explain how each product and scope is used and attach at least one demo video (up to 5 videos, 50 MB each). TikTok's FAQ says review may take several days to two weeks.

  7. Pass the audit for public posts

    Until your API client is audited, everything it posts is restricted to private viewing. The audit checks compliance with TikTok's terms and posting guidelines.

Which TikTok API scopes do you need?

Scopes are first assigned to the app on the developer site, then granted by each user. user.info.basic is added automatically for apps that use Login Kit.

Which TikTok API scopes do you need? — Capability matrix by platform
ScopeWhat it grantsSDK methods
user.info.basicopen_id, union_id, avatar, display nameme
user.info.profilebio_description, profile_deep_link, is_verified, usernameme
user.info.statsfollower_count, following_count, likes_count, video_countme
video.listThe user's public videosvideos, iter_videos, video
video.publishDirect Post to the user's profilecreator_info, publish_video, publish_photos
video.uploadShare content to the creator's account as a draftupload_video, publish_photos(draft=True)

Request the minimum. By default me() asks for fields from all three user.info.* scopes — if your app only has user.info.basic, narrow them with fields=.

First TikTok API calls in Python

Authorization URL, code exchange, profile and the first page of videos. Keys are read from TIKTOK_CLIENT_KEY and TIKTOK_CLIENT_SECRET.

tiktok_first_calls.py
from socialift import TikTok

REDIRECT_URI = "https://app.example.com/oauth/tiktok/callback"

async def authorize_url(state: str) -> str:
    async with TikTok.from_env() as tt:
        return tt.login_url(
            redirect_uri=REDIRECT_URI,
            state=state,
            scopes=["user.info.basic", "video.list"],
        )

async def on_callback(code: str) -> None:
    async with TikTok.from_env() as tt:
        bundle = await tt.exchange_code(code, redirect_uri=REDIRECT_URI)
        me = await tt.me(bundle.access_token, fields="open_id,display_name,avatar_url")
        page = await tt.videos(bundle.access_token, limit=20)
        print(me.id, me.full_name, len(page["data"]), page["has_more"])

videos() returns at most 20 videos per call — the Display API maximum. Pass the returned cursor for the next page, or use iter_videos(token, max_items=100).

The full OAuth flow, with state checks and token refresh, is covered in the Login Kit article.

TikTok API limits you will hit first

Values from TikTok's documentation as of September 2026. Exceeding a rate limit returns HTTP 429 with rate_limit_exceeded.

TikTok API limits you will hit first — Capability matrix by platform
LimitValue
Access token lifetime24 hours
Refresh token lifetime365 days from first issuance
/v2/user/info/, /v2/video/list/, /v2/video/query/600 requests per minute each, one-minute sliding window
Videos per /v2/video/list/ pageUp to 20
Creator info query20 requests per minute per user access token
Post init endpoints (video, inbox, photo)6 requests per minute per user access token
Post status fetch30 requests per minute per user access token
Direct Post volumeCapped per creator per 24 hours; typically around 15 posts, varies by creator
Unaudited Content Posting clientUp to 5 users posting in 24 hours, private visibility only

Higher Display API limits can be requested through TikTok's support page.

Why TikTok integrations break after launch

Tokens expire fast. A 24-hour access token means a daily refresh job, not a yearly one. On refresh TikTok may return a different refresh token — store the new value, or the next refresh fails.

Users revoke access. When someone disconnects your app in TikTok, a subscribed webhook receives authorization.removed, and the access token is already invalid by then. Mark the account as disconnected instead of retrying calls.

Scopes drift. If you add a scope later, existing users have not granted it. Send them through authorization again; disable_auto_auth=1 shows the consent page even when the session is still valid.

Posting rules are product rules, not API errors. Private-only posts before the audit, the mandatory creator info query before every post and daily caps are documented behavior — design your UI around them.

What Socialift covers — and what it doesn't

The TikTok client in the Socialift Python SDK wraps Login Kit, the Display API, the Content Posting API and TikTok business account endpoints (metrics and comments). For endpoints without a dedicated method there is call() for the Open API and business() for the Business API. Webhook signatures are checked with verify_tiktok_request from socialift.webhooks.

The Research API, Commercial Content API, Data Portability API and the mobile Share Kit are not covered. The SDK stores nothing: tokens and state live in your application.

In the Socialift dashboard, the Keys (Kalitlar) page stores your own TikTok client key and secret encrypted and shows the exact redirect and webhook URLs to register with TikTok; Connections (Ulanishlar) runs the TikTok OAuth flow; Playground lets you call methods as a connected account before you write any code.

← Back to blog

Frequently asked questions

How long does TikTok app review take?

According to TikTok's FAQ, review may take several days to two weeks. If the app is rejected, the reason appears under Review comments in the app's history; fix the issues and resubmit.

Can I post public TikTok videos without an audit?

No. Content posted by an unaudited client is limited to SELF_ONLY visibility, the creator's account must be private at posting time, and up to 5 users can post in 24 hours. The restrictions are lifted after a successful audit.

Can I read comments with the TikTok API?

The Display API only returns profiles and videos. Comment management lives on a separate platform, TikTok API for Business. The Research API includes comments, but it is only available for approved non-profit research.

What is the difference between client key and client secret?

The client key is the app's public identifier and appears in the authorization URL. The client secret is confidential, stays on your server and is sent only when you obtain or refresh tokens. Never ship it in browser or mobile app code.

Which scope gives follower count?

user.info.stats. It unlocks follower_count, following_count, likes_count and video_count. user.info.basic only returns open_id, avatar and display name.

Can I use the TikTok Research API in my product?

No. TikTok grants the Research API to academic and independent researchers working on a non-profit basis, after their application is approved. Product integrations use Login Kit, the Display API and the Content Posting API.

Sources

  1. TikTok for Developers — Register your app
  2. TikTok for Developers — Scopes reference
  3. TikTok for Developers — Add a sandbox
  4. TikTok for Developers — Rate limits
  5. TikTok for Developers — Content sharing guidelines
  6. TikTok for Developers — User access token management

Related pages