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.
| Product | What it does | Who needs it | Socialift SDK |
|---|---|---|---|
| Login Kit | OAuth 2.0 authorization; issues access and refresh tokens | Any app acting for a TikTok user | login_url, exchange_code, refresh_token, revoke |
| Display API | /v2/user/info/, /v2/video/list/, /v2/video/query/ — profile and public videos | Dashboards, creator portfolios | me, videos, iter_videos, video |
| Content Posting API | Direct Post to a profile or Upload to the creator's inbox; video and photo posts | Publishing and scheduling backends | creator_info, publish_video, upload_video, publish_photos, publish_status |
| Webhooks | Event notifications such as authorization.removed | Keeping connection state in sync | verify_tiktok_request, parse_tiktok_event |
| Share Kit | Mobile SDK for iOS and Android that hands media from your app to TikTok | Native mobile apps | Not covered — the Python SDK runs server-side |
| TikTok API for Business | Separate portal for business accounts and ads, including comment endpoints | Brands and agencies | Business account metrics and comments (business_videos, comments, …) |
| Research API, Commercial Content API | Public data and ad data for research | Non-profit researchers | Not 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.
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).
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.
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.
Verify URL properties if you post from URLs
In
PULL_FROM_URLmode 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.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.
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.
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.
| Scope | What it grants | SDK methods |
|---|---|---|
user.info.basic | open_id, union_id, avatar, display name | me |
user.info.profile | bio_description, profile_deep_link, is_verified, username | me |
user.info.stats | follower_count, following_count, likes_count, video_count | me |
video.list | The user's public videos | videos, iter_videos, video |
video.publish | Direct Post to the user's profile | creator_info, publish_video, publish_photos |
video.upload | Share content to the creator's account as a draft | upload_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.
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.
| Limit | Value |
|---|---|
| Access token lifetime | 24 hours |
| Refresh token lifetime | 365 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/ page | Up to 20 |
| Creator info query | 20 requests per minute per user access token |
| Post init endpoints (video, inbox, photo) | 6 requests per minute per user access token |
| Post status fetch | 30 requests per minute per user access token |
| Direct Post volume | Capped per creator per 24 hours; typically around 15 posts, varies by creator |
| Unaudited Content Posting client | Up 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.
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.