TikTok API для разработчиков: продукты, доступ и ограничения
TikTok API — это не один endpoint, а набор продуктов TikTok for Developers. Login Kit отвечает за OAuth-авторизацию, Display API — за профиль и публичные видео, Content Posting API — за публикацию видео и фото. Чтобы получить доступ, вы создаёте приложение, подключаете продукты и scopes, тестируете в sandbox и проходите проверку; для публичных постов нужен ещё аудит.
Обновлено:
Что такое TikTok API?
TikTok for Developers — официальная платформа TikTok для разработчиков. В одном приложении подключается несколько продуктов: Login Kit (OAuth 2.0), Display API (профиль и публичные видео), Content Posting API (прямая публикация и черновики), Share Kit для мобильных приложений, Webhooks и API только для исследователей. Любой запрос от имени пользователя требует user access token с нужными scopes.
Open API v2 работает на open.tiktokapis.com/v2/. В ответе рядом с data приходит объект error: при успехе error.code равен ok, а log_id — идентификатор, который запрашивает поддержка TikTok. Пишите его в лог вместе с каждой ошибкой.
Функции для брендов и рекламы — отдельная платформа TikTok API for Business со своим порталом и endpoint'ами. Research API и Commercial Content API предназначены для одобренных исследователей, а не для продуктовых интеграций.
Продукты TikTok for Developers: обзор
Выбирайте продукты по задаче интеграции. Последняя колонка — что есть в Socialift Python SDK.
| Продукт | Что делает | Кому нужен | Socialift SDK |
|---|---|---|---|
| Login Kit | OAuth 2.0-авторизация; выдаёт access и refresh token | Любому приложению, работающему от имени пользователя TikTok | login_url, exchange_code, refresh_token, revoke |
| Display API | /v2/user/info/, /v2/video/list/, /v2/video/query/ — профиль и публичные видео | Дашборды, портфолио авторов | me, videos, iter_videos, video |
| Content Posting API | Прямая публикация в профиль (Direct Post) или отправка во «Входящие» автора (Upload); видео и фото | Сервисы публикации и планирования | creator_info, publish_video, upload_video, publish_photos, publish_status |
| Webhooks | Уведомления о событиях, например authorization.removed | Синхронизация статуса подключения | verify_tiktok_request, parse_tiktok_event |
| Share Kit | Мобильный SDK для iOS и Android: передаёт медиа из приложения в TikTok | Нативные мобильные приложения | Нет — Python SDK работает на сервере |
| TikTok API for Business | Отдельный портал для бизнес-аккаунтов и рекламы, там же endpoint'ы комментариев | Бренды и агентства | Метрики бизнес-аккаунта и комментарии (business_videos, comments, …) |
| Research API, Commercial Content API | Публичные данные и данные о рекламе для исследований | Некоммерческие исследователи | Нет |
Socialift — независимый интеграционный слой, а не партнёр TikTok. Доступ к каждому продукту выдаёт сам TikTok.
Как получить доступ к TikTok API: пошагово
Последовательность одинакова и для чистого HTTP, и для SDK.
Создайте аккаунт разработчика и приложение
Зарегистрируйтесь на developers.tiktok.com и подключите приложение в разделе Manage apps. TikTok попросит иконку (1024×1024 px), название, категорию, описание, ссылки на Terms of Service и Privacy Policy и целевые платформы (Web, Desktop, Android, iOS).
Добавьте продукты и scopes
Через Add products включите Login Kit и при необходимости Content Posting API. Для Login Kit укажите redirect URI, затем добавьте только те scopes, которые реально использует функциональность: проверяющие сверяют их с демо-видео.
Сохраните client key и client secret
Оба значения — в разделе Credentials. Client key виден в ссылке авторизации; client secret хранится только на сервере и отправляется только на token endpoint.
Подтвердите URL, если публикуете по ссылке
В режиме
PULL_FROM_URLContent Posting API принимает медиа только с подтверждённого домена или URL-префикса. Для подтверждения загрузите файл с подписью, который выдаёт TikTok.Проверьте интеграцию в sandbox
Sandbox позволяет тестировать без проверки: до 5 sandbox на приложение и до 10 тестовых пользователей — это должны быть ваши аккаунты. Публикация публичных видео через Content Posting API в sandbox недоступна.
Отправьте приложение на проверку
Опишите, как используется каждый продукт и scope, и приложите минимум одно демо-видео (до 5 видео, до 50 МБ каждое). По FAQ TikTok проверка может занять от нескольких дней до двух недель.
Пройдите аудит для публичных постов
Пока API-клиент не прошёл аудит, весь опубликованный им контент виден только в приватном режиме. Аудит проверяет соответствие условиям TikTok и правилам публикации.
Какие scopes TikTok API нужны?
Scopes сначала назначаются приложению на сайте разработчика, затем каждый пользователь даёт на них согласие. user.info.basic автоматически добавляется приложениям с Login Kit.
| Scope | Что даёт | Методы SDK |
|---|---|---|
user.info.basic | open_id, union_id, аватар, отображаемое имя | 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 | Публичные видео пользователя | videos, iter_videos, video |
video.publish | Прямая публикация в профиль пользователя | creator_info, publish_video, publish_photos |
video.upload | Отправка контента в аккаунт автора как черновика | upload_video, publish_photos(draft=True) |
Запрашивайте минимум. По умолчанию me() запрашивает поля всех трёх scopes user.info.* — если у приложения только user.info.basic, ограничьте поля через fields=.
Первые запросы к TikTok API на Python
Ссылка авторизации, обмен кода, профиль и первая страница видео. Ключи берутся из TIKTOK_CLIENT_KEY и 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() возвращает не больше 20 видео за вызов — это максимум Display API. Для следующей страницы передайте полученный cursor или используйте iter_videos(token, max_items=100).
Полный OAuth-поток с проверкой state и обновлением токена разобран в статье про Login Kit.
Лимиты TikTok API, с которыми вы столкнётесь первыми
Значения из документации TikTok на сентябрь 2026 года. При превышении rate limit возвращается HTTP 429 с кодом rate_limit_exceeded.
| Ограничение | Значение |
|---|---|
| Срок жизни access token | 24 часа |
| Срок жизни refresh token | 365 дней с первой выдачи |
/v2/user/info/, /v2/video/list/, /v2/video/query/ | По 600 запросов в минуту, скользящее окно в одну минуту |
Видео на странице /v2/video/list/ | До 20 |
| Запрос creator info | 20 запросов в минуту на user access token |
| Endpoint'ы инициализации публикации (видео, inbox, фото) | 6 запросов в минуту на user access token |
| Запрос статуса публикации | 30 запросов в минуту на user access token |
| Объём Direct Post | Ограничен на автора за 24 часа; обычно около 15 постов, зависит от автора |
| Клиент Content Posting без аудита | До 5 пользователей за 24 часа, только приватная видимость |
Повышенные лимиты Display API можно запросить через страницу поддержки TikTok.
Почему интеграции с TikTok ломаются после запуска
Токены быстро истекают. Access token на 24 часа означает ежедневное обновление, а не ежегодное. При обновлении TikTok может вернуть другой refresh token — сохраняйте новое значение, иначе следующее обновление не пройдёт.
Пользователи отзывают доступ. Когда человек отключает ваше приложение в TikTok, подписанный webhook получает authorization.removed, а access token к этому моменту уже недействителен. Помечайте аккаунт как отключённый вместо повторных запросов.
Scopes меняются. Если позже вы добавили scope, существующие пользователи его не подтверждали. Проведите их через авторизацию снова: disable_auto_auth=1 показывает страницу согласия даже при активной сессии.
Правила публикации — это правила продукта, а не ошибки API. Приватные посты до аудита, обязательный запрос creator info перед каждой публикацией и дневные лимиты задокументированы — проектируйте интерфейс с учётом этого.
Что покрывает Socialift, а что нет
Клиент TikTok в Socialift Python SDK оборачивает Login Kit, Display API, Content Posting API и endpoint'ы бизнес-аккаунта TikTok (метрики и комментарии). Для endpoint'ов без отдельного метода есть call() для Open API и business() для Business API. Подпись вебхуков проверяется функцией verify_tiktok_request из socialift.webhooks.
Research API, Commercial Content API, Data Portability API и мобильный Share Kit не покрываются. SDK ничего не хранит: токены и состояние остаются в вашем приложении.
В кабинете Socialift на странице «Kalitlar» (ключи) хранятся ваши client key и secret TikTok в зашифрованном виде и показаны точные redirect- и webhook-URL для консоли TikTok; «Ulanishlar» (подключения) проводит OAuth TikTok; в Playground можно вызвать методы от имени подключённого аккаунта ещё до написания кода.
Частые вопросы
Сколько длится проверка приложения TikTok?
Согласно FAQ TikTok, проверка может занять от нескольких дней до двух недель. При отказе причина указана в разделе Review comments в истории приложения; исправляете и отправляете повторно.
Можно ли публиковать публичные видео в TikTok без аудита?
Нет. Контент от клиента без аудита доступен только в режиме SELF_ONLY, аккаунт автора в момент публикации должен быть приватным, а публиковать могут до 5 пользователей за 24 часа. Ограничения снимаются после успешного аудита.
Можно ли читать комментарии через TikTok API?
Display API отдаёт только профиль и видео. Работа с комментариями — в отдельной платформе TikTok API for Business. В Research API комментарии есть, но он доступен только для одобренных некоммерческих исследований.
Чем client key отличается от client secret?
Client key — открытый идентификатор приложения, он виден в ссылке авторизации. Client secret — секретный ключ, хранится только на сервере и отправляется при получении или обновлении токена. Не размещайте его в коде браузера или мобильного приложения.
Какой scope нужен для числа подписчиков?
user.info.stats. Он открывает поля follower_count, following_count, likes_count и video_count. user.info.basic даёт только open_id, аватар и отображаемое имя.
Можно ли использовать Research API в своём продукте?
Нет. TikTok выдаёт Research API академическим и независимым исследователям, работающим на некоммерческой основе, после одобрения заявки. Для продуктовых интеграций используются Login Kit, Display API и Content Posting API.