Обзор локального API
TikMatrix предоставляет локальное RESTful API, которое позволяет управлять задачами программно. Это полезно для интеграции TikMatrix с вашими автоматизированными системами, создания пользовательских рабочих процессов или выполнения пакетных операций.
Требования
Локальное API доступно только для подписчиков планов Pro, Team и Business. Для плана Starter доступ к API отсутствует.
Базовый URL
API работает локально по адресу:
http://localhost:50809/api/v1/
Порт 50809 — порт по умолчанию. Убедитесь, что TikMatrix запущен перед отправкой запросов.
Формат ответа
Все ответы API имеют формат:
{
"code": 0,
"message": "success",
"data": { ... }
}
Коды ответов
| Code | Описание |
|---|---|
| 0 | Успех |
| 40001 | Неверный запрос - Недопустимые параметры, в том числе script_config, не прошедший проверку |
| 40002 | Неверный запрос - отсутствует script_name |
| 40003 | Неверный запрос - Скрипт не поддерживается в этой сборке или на этой платформе, не имеет реализации, либо недопустимое состояние задачи |
| 40004 | Неверный запрос - можно остановить только запущенные задачи |
| 40005 | Неверный запрос - task_ids не может быть пустым |
| 40301 | Запрещено - доступ к API требует план Pro+ |
| 40401 | Не найдено - ресурс отсутствует |
| 50001 | Внутренняя ошибка сервера |
Быстр ый старт
1. Проверка доступа к API
Сначала проверьте, поддерживает ли ваша лицензия доступ к API:
curl http://localhost:50809/api/v1/license/check
Пример ответа:
{
"code": 0,
"message": "success",
"data": {
"plan_name": "Pro",
"api_enabled": true,
"device_limit": 20,
"message": "API access enabled"
}
}
2. Как узнать список скриптов и их параметры
GET /api/v1/schema описывает каждый скрипт, который может выполнить эта сборка, и точный набор полей script_config: имена, типы, значения по умолчанию, допустимые значения и то, какие поля обязательны. Он формируется из того же каталога, по которому проверяет сервер, поэтому не может разойтись с тем, что принимает создание задач.
curl http://localhost:50809/api/v1/schema
Два необязательных параметра запроса:
| Параметр | Действие |
|---|---|
platform | Ограничивает выдачу платформой tiktok или instagram. Платформа, которой нет в сборке, отклоняется с кодом 40001. По умолчанию — все платформы сборки. |
include_unavailable | Со значением true дополнительно перечисляет имена скриптов, которые API принимает, но у которых нет рабочей реализации. У каждого есть unavailable_reason. |
Ответ (сокращённо):
{
"code": 0,
"message": "success",
"data": {
"build": { "platforms": ["tiktok"] },
"scripts": [
{
"name": "follow",
"internal_name": "follow",
"summary": "Follow the given users. One task per target.",
"platforms": ["tiktok", "instagram"],
"available": true,
"fan_out": { "kind": "per_item", "key": "target_users", "alt_key": "target_user" },
"any_of": [["target_users", "target_user"]],
"fields": [
{
"key": "access_method",
"type": "string",
"required": false,
"default": "direct",
"choices": ["direct", "search"],
"description": "How to reach the profile: direct (via URL) or search."
}
]
}
]
}
}
fan_out показывает, сколько задач создаст запрос: per_device создаёт одну задачу на устройство (или на аккаунт в многоаккаунтном режиме), per_item — по одной на каждый элемент указанного поля, на каждое устройство.
3. Создание задачи
curl -X POST http://localhost:50809/api/v1/task \
-H "Content-Type: application/json" \
-d '{
"serials": ["device_serial_1", "device_serial_2"],
"script_name": "post",
"script_config": {
"content_type": 1,
"captions": "Смотрите моё новое видео! #вирусное"
},
"enable_multi_account": false,
"start_time": "14:30"
}'
4. Получение списка задач
curl http://localhost:50809/api/v1/task?status=0&page=1&page_size=20
Доступные скрипты
Параметр script_name может принимать следующие значения:
| Скрипт | Описание | Поддержка API |
|---|---|---|
post | Опубликовать контент | ✅ Поддерживается |
follow | Подписаться на пользователя | ✅ Поддерживается |
unfollow | Отписаться | ✅ Поддерживается |
account_warmup | Разогрев аккаунта | ✅ Поддерживается |
comment | Оставить комментарий к публикации | ✅ Поддерживается |
boost_comment | Лайк / ответ на существующие комментарии | ✅ Поддерживается |
login | Войти в аккаунт | ✅ Поддерживается |
profile | Обновить профиль | ✅ Поддерживается |
match_account | Сопоставить аккаунты на устройстве | ✅ Поддерживается |
like | Поставить лайк | ✅ Поддерживается |
view | Просмотр публикации в течение заданного времени | ✅ Поддерживается |
favorite | Сохранить публикацию в избранное | ✅ Поддерживается |
repost | Репостить видео TikTok | ✅ Поддерживается — только TikTok |
message | Отправить сообщение | ❌ Недоступно § |
follow_suggested | Подписаться на рекомендованных | ✅ Поддерживается — только TikTok |
super_marketing | Супер маркетинговая кампания | ✅ Поддерживается † |
scrape_user | Собирать данные о пользователе | 🔜 Скоро |
Кампания супер маркетинга не создаётся через POST /api/v1/task. Она работает на основе многократно используемого датасета целей с собственными эндпоинтами — см. Конфигурацию скрипта супер маркетинга.
message нет реализацииmessage принимался при создании задачи, но в бинарнике скриптов нет обработчика для него ни на одной из платформ, поэтому каждая такая задача падала на устройстве с ошибкой "Unknown script". Теперь она отклоняется уже при созд ании с указанием этой причины. Для личных сообщений используйте super_marketing, который рассылает их по набору целей.
repost и follow_suggested реализованы только для TikTok. Создание такой задачи для цели в Instagram отклоняется, а не ставится в очередь — раньше задача создавалась и затем падала на устройстве.
Проверка script_config
Перед записью создание задачи проверяет script_config по описанной выше схеме, поэтому неверный параметр возвращается как 400 с указанием поля, а не превращается в задачу, которая упадёт на телефоне позже. Отклоняются три вещи:
- обязательное поле отсутствует или пусто;
- ни один член группы «одно из» не задан (например,
followтребуетtarget_usersилиtarget_user); - значение вне документированного списка
choicesдля поля.
Ключи, которых нет в схеме, игнорируются, а не отклоняются — настольное приложение передаёт собственные ключи через тот же объект, и отклонение неизвестных сломало бы существующие интеграции. Они пишутся в серверный журнал, так что опечатку можно заметить в логе приложения.
Числа можно передавать строками ("20" наравне с 20) — так же, как их уже принимают скрипты.
Статус задачи
| Код статуса | Статус | Описание |
|---|---|---|
| 0 | pending | Задача ожидает выполнения |
| 1 | running | Задача выполняется |
| 2 | completed | Задача выполнена успешно |
| 3 | failed | Задача завершилась с ошибкой |
Дальше
- API управления задачами - создание, запрос и управление задачами
- API журнала активности - Отслеживание и управление журналами активности
- Конфигурация скрипта публикации - настройка параметров скрипта публикации
- Конфигурация скрипта подписки - настройка параметров скрипта подписки
- Конфигурация скрипта подписки на рекомендованных - Настройка параметров скрипта подписки на рекомендованных
- Конфигурация скрипта отписки - настройка параметров скрипта отписки
- Конфигурация скрипта прогрева аккаунта - настройка параметров скрипта прогрева аккаунта
- Конфигурация скрипта комментариев - Оставить новый комментарий к публикациям
- Конфигурация скрипта Boost Comment - Лайк / ответ на существующие комментарии
- Конфигурация скрипта лайков - настройка параметров скрипта лайков
- Конфигурация скрипта просмотра - Просмотр публикаций в течение заданного времени
- Конфигурация скрипта избранного - Сохранение публикаций в избранное
- Конфигурация скрипта сообщений - настройка параметров скрипта сообщений
- Конфигурация скрипта входа - Настройка параметров скрипта входа
- Конфигурация скрипта профиля - Настройка параметров скрипта профиля
- Конфигурация скрипта сопоставления аккаунтов - Настройка параметров скрипта сопоставления аккаунтов
- Конфигурация скрипта супер маркетинга - Импорт датасетов и запуск кампаний супер маркетинга
- API TCP-сканирования - Сканирование и подключение Android-устройств через TCP/IP
- API статуса аккаунтов - Запрос статуса аккаунтов, подключения устройств и состояния входа
- Примеры API - примеры кода на нескольких языках