Интеграция TikTok API
Socialift подключает TikTok API к тому же Python SDK, что Instagram, Facebook и LinkedIn: OAuth через Login Kit с access token на 24 часа и refresh token на 365 дней, профиль и видео автора, публикация видео и фото-каруселей через Content Posting API, статистика и комментарии Business Account API, а также проверка подписи вебхуков.
Обновлено:
Что можно делать через TikTok API
TikTok API — набор официальных интерфейсов TikTok for Developers. После того как пользователь дал доступ через Login Kit, приложение может читать его профиль и видео, публиковать видео и фото-карусели через Content Posting API, а через Business Account API — работать со статистикой видео и комментариями.
Особенности TikTok усложняют интеграцию: access token живёт всего 24 часа, а при обновлении может прийти новый refresh token, который должен заменить сохранённый. Open API v2 оборачивает каждый ответ в объект error (при успехе code: "ok"), а Business API использует свой конверт code/message — поэтому проверяйте тело ответа, а не только HTTP-статус.
Socialift берёт механику на себя: refresh_token() возвращает TokenBundle с новыми access и refresh токенами (хранит их ваше приложение — SDK ничего не сохраняет), для аккаунтов, подключённых в кабинете, эндпоинт обновления сервера (POST /tiktok/auth/refresh, есть и в Playground) записывает новые токены в зашифрованном виде, а коды ошибок TikTok поднимаются как AuthError, PermissionError, RateLimitError или ApiError — как на других платформах.
Что поддерживается на стороне TikTok
OAuth через Login Kit
Авторизация, обмен кода на токен, обновление и отзыв. TokenBundle содержит expires_at и refresh_expires_at для access token на 24 часа и refresh token на 365 дней.
Профиль и видео
Профиль автора, список видео постранично или целиком, а также данные видео по конкретным ID.
Публикация видео
Content Posting API: по ссылке или прямой загрузкой файла частями, с отслеживанием статуса публикации.
Фото-карусели и черновики
Пост из нескольких изображений или отправка контента в черновики автора в TikTok.
Business Account API
Статистика видео и аккаунта; чтение комментариев, ответы, скрытие, удаление, лайки и закрепление.
Вебхуки
verify_tiktok_request проверяет заголовок TikTok-Signature (HMAC-SHA256 от метки времени и тела) с окном защиты от replay; в кабинете события дедуплицируются, а при authorization.removed аккаунт деактивируется.
Публикация видео — начиная с creator_info
По правилам TikTok перед каждой публикацией запрашивается creator_info, а уровень приватности пользователь выбирает из этого списка сам — без значения по умолчанию.
import asyncio
from socialift import TikTok
async def main(token: str, privacy_level: str):
async with TikTok.from_env() as tt: # TIKTOK_CLIENT_KEY / TIKTOK_CLIENT_SECRET
info = await tt.creator_info(token)
# privacy_level — значение, которое пользователь сам выбрал из info["privacy_level_options"]
if privacy_level not in info["privacy_level_options"]:
raise ValueError("уровень приватности недоступен для этого автора")
result = await tt.publish_video(token, video_url="https://cdn.example.com/reel.mp4",
title="Новая коллекция", privacy_level=privacy_level, wait=True)
print(result["publish_id"])
# Домен не подтверждён — загрузите сам файл частями
await tt.publish_video(token, video="reel.mp4", privacy_level=privacy_level)
asyncio.run(main("ACCESS_TOKEN", privacy_level="SELF_ONLY")) # значение из формы публикацииПри video_url TikTok сам скачивает файл, поэтому домен с медиа должен быть подтверждён в кабинете разработчика TikTok. При video= файл загружается частями, и подтверждение домена не требуется.
wait=True ждёт, пока TikTok обработает видео (до ~2 минут; при FAILED или тайм-ауте — ApiError). Если отправить без ожидания, статус проверяется позже через await tt.publish_status(publish_id, token). Для фото-карусели используется await tt.publish_photos(token, photo_urls=[...], title="...", privacy_level=privacy_level).
В пробный месяц (первые 30 дней) токен открывает все возможности SDK, в том числе публикацию (creator_info, publish_video, publish_photos, upload_video) и статистику (business_videos, business_account). После продления возможности зависят от тарифа токена — точный список показывает «Tekshirish va muhitlar» (проверка и окружения) в кабинете. Playground в кабинете работает независимо от тарифа.
Профиль, видео и комментарии
Профиль и видео доступны по токену Login Kit; статистика и комментарии работают через Business API и требуют доступа к Business API, выданного TikTok.
import asyncio
from socialift import TikTok
async def main(token: str, video_id: str, comment_id: str):
async with TikTok.from_env() as tt:
profile = await tt.me(token)
page = await tt.videos(token, limit=20)
everything = await tt.iter_videos(token, max_items=100)
# Business API: business_id — open_id автора
biz = profile.id
stats = await tt.business_videos(token, business_id=biz, max_count=20)
account = await tt.business_account(token, business_id=biz)
comments = await tt.comments(video_id, token, business_id=biz)
await tt.reply_comment(comment_id, token, "Спасибо!", video_id=video_id, business_id=biz)
asyncio.run(main("ACCESS_TOKEN", "VIDEO_ID", "COMMENT_ID"))Business-эндпоинт, для которого в SDK нет отдельного метода, тоже можно вызвать: await tt.business("business/get/", token, method="GET", params={...}). Ошибки и повторные попытки работают так же, как в остальных методах.
Что требуется для каждой возможности
TikTok API состоит из нескольких продуктов, и у каждого свои условия. Таблица помогает спланировать интеграцию заранее.
| Возможность | Метод SDK | Условие со стороны TikTok |
|---|---|---|
| Профиль и видео | me · videos · iter_videos · video | OAuth через Login Kit |
| Публикация видео — по ссылке | publish_video(video_url=…) | Домен с медиа подтверждён в кабинете TikTok |
| Публикация видео — загрузка файла | publish_video(video=…) | Подтверждение домена не нужно |
| Фото-карусель | publish_photos | Только по ссылке (PULL_FROM_URL), до 35 изображений, подтверждённый домен или URL-префикс |
| Публичный пост | privacy_level | Приложение прошло аудит; иначе SELF_ONLY, закрытый аккаунт, ≤5 пользователей за 24 ч |
| Статистика и комментарии | business_videos · business_account · comments | Бизнес-аккаунт TikTok и доступ к Business API, выданный TikTok |
| Вебхуки | verify_tiktok_request | Подпись TikTok-Signature |
Эти условия устанавливает TikTok — ни один SDK не может их обойти.
Подключение TikTok — четыре шага
Создайте приложение TikTok
В TikTok for Developers создайте приложение, добавьте Login Kit и нужные продукты, получите client key и client secret.
Добавьте ключи в Socialift
Введите client key и secret на странице «Kalitlar» (ключи): они хранятся в зашифрованном виде и проверяются на стороне TikTok в один клик. После сохранения там появятся redirect URI и адрес вебхука.
Настройте redirect URI и вебхук
Вставьте этот redirect URI в Login Kit, а адрес вебхука — в кабинет TikTok. Если публикуете по ссылке, подтвердите домен или URL-префикс с медиа.
Подключите аккаунт и проверьте
На странице «Ulanishlar» (подключения) подключите аккаунт TikTok через OAuth, отправьте первый запрос в Playground и перенесите готовый код в SDK.
Перед выходом в прод
- При обновлении может вернуться другой refresh token — всегда сохраняйте значение из последнего ответа.
- Access token живёт 24 часа: учитывайте обновление в долгих фоновых задачах.
- Перед каждой публикацией вызывайте creator_info, а privacy_level пусть пользователь выбирает только из полученного списка.
- Приложение без аудита может публиковать только с приватностью SELF_ONLY, с закрытого аккаунта и не более чем для 5 пользователей за 24 часа — это правило TikTok.
- Для публикации по ссылке заранее подтвердите домен или загружайте файл напрямую.
- Не полагайтесь только на HTTP-статус: в ответе Open API v2 есть строковый
error.code(okпри успехе) иlog_id, который запрашивает поддержка TikTok.
Частые вопросы
Можно ли загружать видео в TikTok через API?
Да. Через Content Posting API видео публикуется по ссылке или прямой загрузкой файла частями. Перед публикацией обязателен запрос creator_info, а способ со ссылкой требует домена, подтверждённого в кабинете TikTok.
Почему пост виден только мне (SELF_ONLY)?
Пока приложение не прошло аудит TikTok, посты через API возможны только с SELF_ONLY, аккаунт автора должен быть закрытым, а публиковать через приложение могут не более 5 пользователей за 24 часа. После аудита используйте уровни из creator_info; дневной лимит постов на автора (обычно около 15) действует всё равно.
Можно ли читать комментарии TikTok и отвечать на них через API?
Да, через Business (Accounts) API TikTok: список комментариев, ответы, скрытие, удаление, лайки и закрепление. Нужен бизнес-аккаунт TikTok и доступ к Business API, выданный TikTok.
Сколько живёт токен TikTok?
Access token живёт 24 часа, refresh token — 365 дней. При обновлении может прийти другой refresh token — всегда храните последний. С SDK TokenBundle сохраняете вы; для аккаунтов из кабинета эндпоинт обновления сервера записывает новые токены в зашифрованном виде.
Можно ли публиковать истории (Stories) TikTok через API?
Нет. Content Posting API умеет только видео- и фотопосты: в официальном справочнике Direct Post нет ни отдельного эндпоинта, ни значения post_mode для историй. Это не ограничение Socialift — таковы границы самого API TikTok, а истории публикуются только в приложении TikTok. Поэтому любой контент, отправленный через API, выходит обычным постом с уровнем privacy_level из ответа creator_info.
Socialift — официальный партнёр TikTok?
Нет. Socialift — независимый слой интеграции поверх публичных API TikTok. Статуса официального партнёра TikTok у него нет.
Источники
Связанные страницы
Подключите и TikTok
Получите токен, добавьте ключи своего приложения TikTok и отправьте первый запрос в Playground.
Получить бесплатный токен →