Наша собственная статистика посещений включена всегда. Google Analytics помогает нам понять, как пользуются нашими публичными страницами (но не вашим рабочим пространством после входа), и включается только с вашего разрешения. См. нашу политику конфиденциальности.

Разделы · 18
  1. 01Как создать API-токен TikHub: права, срок действия и статус
  2. 02Лимиты запросов: TikHub считает по каждому эндпоинту в секунду, мы — по аккаунту в минуту
  3. 03Кто создал TikHub API Helper и что в нём
  4. 04Снимок эндпоинтов устарел: 288 из 1 120 путей исчезли из документации
  5. 05Поиск по инструкции из SKILL.md: почему запросы из нескольких слов часто возвращают 0 результатов
  6. 06Где хранить токен: три имени переменной и токен, зашитый в код
  7. 07api tikhub io и api.tikhub.dev: почему urllib в Python не может подключиться
  8. 08Сколько шагов занимает один вызов: Helper, TikHub MCP и удалённый MCP-сервер EveryInfra
  9. 09Что происходит при ошибке: проверяем 400, 422 и did_you_mean
  10. 10Три реальных вызова: один через MCP, два через curl
  11. 11Цена: те же 1 000 запросов к TikTok и Douyin
  12. 12Прежде чем выдать токен ИИ-агенту: шесть проверок
  13. 13Бесплатные Skills для анализа данных и Helper — не одно и то же
  14. 14Когда TikHub подходит лучше
  15. 15Новости отрасли
  16. 16FAQ
  17. 17С чего начать
  18. 18Источники

Токен TikHub API и Skill API Helper: проверяем в работе с ИИ-агентом

TikHub API Helper от сообщества содержит устаревший снимок API: 25,7 % указанных в нём путей больше не существуют. Проверяем настройку токена, лимиты запросов, вызовы API ИИ-агентом и цену.

Иллюстрация из двух половин, разделённых пунктирной линией. Слева небольшой робот с круглой головой стоит у захламлённого шкафа. Он держит латунный ключ на длинной верёвке, и верёвка уходит в ящик с выцветшими порванными серыми карточками. Серые ворота с восьмиугольным знаком за ним остаются закрытыми. Справа тот же робот читает одну бирюзовую карточку из аккуратной картотеки, и бирюзовые ворота перед ним открыты. Идея: ИИ-агент с токеном и старым списком эндпоинтов успевает гораздо меньше, чем агент с одной понятной карточкой возможности.

Skill для Claude Code, который первым выдаётся по запросу «tikhub api helper», не является продуктом TikHub. Это проект сообщества, который один разработчик ведёт в личном аккаунте GitHub. Ниже мы называем его «репозиторий сообщества A». Мы проверили его файл за файлом рано утром 2026-11-06 (по сингапурскому времени, SGT, UTC+8). Его снимок эндпоинтов содержит 1 120 путей, и 288 из них (25,7 %) уже отсутствуют в документации TikHub на тот день. В трёх из четырёх примеров вызовов в SKILL.md используются имена параметров, которых нет в актуальной документации. Skill предлагает задать TIKHUB_TOKEN, но его код читает TIKHUB_API_TOKEN.

Более серьёзная проблема связана с HTTP-клиентом. Skill отправляет запросы через встроенную в Python библиотеку urllib с User-Agent по умолчанию. Мы провели два раунда тестов из Сингапура в 00:20 и 00:25 SGT. На все запросы с этим стандартным заголовком к api.tikhub.io и api.tikhub.dev пришёл ответ HTTP 403 с сообщением «error code: 1010».

Не прошла даже проверка работоспособности, для которой токен не нужен. За те же 1 000 запросов к TikTok или Douyin публичная цена TikHub составляет $1.00. Каждый из наших трёх реальных вызовов стоил $0.000556, то есть 1 000 вызовов стоят $0.556, а TikHub обходится в 1.8 раза дороже. TikHub сравнивается с нами по цене только примерно при 117 900 вызовах в день на один эндпоинт, с учётом скидки за суточный объём.

Эта статья отвечает на один узкий вопрос для тех, кто ищет «tikhub api token», «tikhub api helper» или «api tikhub io». Токен у вас уже есть. Теперь вы хотите, чтобы ИИ-агент сам находил эндпоинты, вызывал их и обрабатывал ошибки.

Где хранить токен и как его контролировать? Как устроены лимиты запросов? Можно ли использовать Helper от сообщества как есть? По TikHub мы использовали только публичные материалы: документацию, файлы API, страницы с тарифами и публичные репозитории на GitHub.

Мы не регистрировались в TikHub. Мы не использовали чужие токены, чтобы вызывать его платные эндпоинты. По EveryInfra все цифры получены из реальных вызовов в ту же ночь, и в тексте указано время проверки каждого источника и каждого вызова.

Как создать API-токен TikHub: права, срок действия и статус

Токен TikHub создаётся в личном кабинете. В разделе «Get API Token» в конце README - English на сайте документации перечислены четыре шага. Вы регистрируетесь и входите в аккаунт. Открываете в личном кабинете меню API-токенов и создаёте токен.

Копируете его в заголовок запроса. Храните его в секрете и используете только в заголовке. В README на китайском написано то же самое. На странице с руководствами и FAQ добавлено, что каждый пользователь может создать до 100 API-ключей, поэтому завести отдельный ключ на каждый проект несложно.

Пока всё совпадает с тем, что уже описано в нашей статье «API-ключ TikHub, документация и GitHub: проверка». Здесь мы идём на шаг дальше. Можно ли после создания ограничить токен отдельными эндпоинтами? Задать срок действия? Временно отключить его? Именно эти три настройки определяют, можно ли безопасно передать токен ИИ-агенту, который сам принимает решения.

В текущей публичной документации TikHub мы не нашли инструкций по этим трём настройкам. В текущем README и openapi.json на api.tikhub.io (прочитано в 00:16 SGT 2026-11-06) они упоминаются только в описаниях кодов ответа. Среди шести причин ошибки 401 есть «API token has expired» и «status is invalid or not activated». Среди причин 403 — «API token lacks required permissions». То есть все три состояния существуют, но как их задать, в документации не сказано.

Описание настройки мы нашли в более старом источнике. На странице PyPI версии 1.13.0 Python SDK TikHub (релиз от 2024-12-05) сказано, что для токена можно задать собственные Scopes, установить Expire Date и вручную отключить токен через Status. Там же настоятельно рекомендуется заводить отдельный токен на каждый проект с подходящими Scopes, иначе запросы будут завершаться ошибкой из-за нехватки прав. В версии 2.2.0 (2026-10-03) этого раздела уже нет. Новый текст говорит лишь скопировать API-ключ из дашборда и задать его в TIKHUB_API_KEY.

Мы не входили в личный кабинет TikHub, поэтому не можем подтвердить, что эти три настройки и сегодня есть в дашборде. Вот что можно утверждать. В старой документации говорилось, что их можно задать. Текущая документация не объясняет, как это сделать. В описаниях кодов ответа по-прежнему перечислены все три состояния.

В EveryInfra все три настройки описаны в разделе об аккаунте в /docs. В консоли в разделе «API Keys → Permissions» можно отключить любой продукт для каждого ключа. Вызов отключённого продукта возвращает 403 capability_denied. Вызов с отключённым ключом возвращает 401. Три права на запись по умолчанию выключены: управление ключами, настройки аккаунта и тикеты поддержки. Включить их может только человек в консоли.

Ключ может создавать другие ключи, но не больше 20 в день. Некоторые действия всегда доступны только в консоли: просмотр или ротация полного ключа, изменение прав и списка разрешённых IP, повторное включение ключа и оплата. Это сделано намеренно. Когда ключ у ИИ-агента, главный риск — не один неверный вызов. Главный риск в том, что агент изменит аккаунт или потратит деньги, которые тратить не должен.

В таблице ниже сравниваются TikHub и EveryInfra. «Не описано» у TikHub означает, что в текущей публичной документации мы не нашли инструкций по настройке. Это не значит, что такой функции нет.

ДействиеTikHub (публичная документация; дата просмотра: 2026-11-06)EveryInfra (/docs; дата просмотра: 2026-11-06)
Создание токенаЛичный кабинет → API token → создать; до 100 на пользователяКонсоль → API Keys → создать; полный ключ показывается один раз
Ограничение доступных вызововДокументация 2024 года: Scopes; сейчас только «token lacks permissions» в описании 403Отключение продукта; возвращает 403 capability_denied
Срок действияДокументация 2024 года: Expire Date; сейчас только «token has expired» в описании 401Срока действия нет; вместо этого ключ можно отключить или сменить
Временное отключениеДокументация 2024 года: Status; сейчас «status invalid or not activated» в описании 401Отключённый ключ возвращает 401; повторно включить можно только в консоли
Может ли агент изменить аккаунтНе описаноПрава на запись по умолчанию выключены; ключом можно создать до 20 ключей в день
Имя переменной окруженияTikHub SDK и плагин TikHub: TIKHUB_API_KEYEVERYINFRA_API_KEY

Важнее всего вторая строка. Агент, который сам выбирает эндпоинты, рано или поздно выберет тот, на который вы не рассчитывали. Например, вы хотите, чтобы он читал профили TikTok, а он вызывает эндпоинт Douyin Xingtu стоимостью $0,02 за вызов. Если TikHub всё ещё поддерживает Scopes, при создании токена выберите только нужные платформы.

Если в вашем дашборде такой опции уже нет, остаются две меры. Используйте отдельный токен для каждого агента и держите на балансе только нужную сумму. Наш переключатель на уровне продукта не позволяет настраивать доступ так же точно, как область доступа для отдельного эндпоинта. Зато одним переключателем можно отключить целый продукт, не связанный со сбором данных, например решение капчи или прокси.

Лимиты запросов: TikHub считает по каждому эндпоинту в секунду, мы — по аккаунту в минуту

Следующая типичная проблема после передачи токена агенту — лимиты запросов. Агенты любят параллельные вызовы, и десяток запросов одновременно — обычное дело. openapi.json TikHub начинается со строки «QPS: 10/Second». FAQ на странице тарифов уточняет: лимит действует на каждый эндпоинт, а не на аккаунт.

Лимит по умолчанию в 10 запросов в секунду действует для каждого пути API отдельно, поэтому разные эндпоинты можно вызывать параллельно. Для более высокой скорости можно купить тариф RPS в панели RPS. Это ежемесячная плата, отдельная от оплаты запросов. В документации 2024 года было немного иначе: лимит устанавливался отдельно для каждого эндпоинта и адреса электронной почты владельца токена и в большинстве случаев составлял 5 запросов в секунду.

В документации указано «по умолчанию 10». Реальное значение для каждого эндпоинта есть в эндпоинте прайс-листа, который можно читать без токена. В 00:18:13 SGT мы получили 1 471 эндпоинт с ценами и подсчитали значения поля rate_limit. 1 397 эндпоинтов допускают 10 запросов в секунду.

47 допускают 5 запросов в секунду, 14 — 3, а 10 — 1. Ещё три эндпоинта допускают соответственно 20, 4 и 2 запроса в секунду. Итого 74 эндпоинта отличаются от значения по умолчанию. Агент, работающий со скоростью по умолчанию, будет раз за разом получать ответ 429 на эндпоинте, который допускает только 1 запрос в секунду.

Столбчатая диаграмма с логарифмической шкалой по вертикальной оси, каждое деление в 10 раз больше предыдущего. Она группирует 1 471 эндпоинт TikHub с ценами по числу допустимых запросов в секунду. 20 в секунду: 1. 10 в секунду: 1 397 (серый, значение по умолчанию). 5: 47. 4: 1. 3: 14. 2: 1. 1: 10. 74 эндпоинта со значением не по умолчанию выделены бирюзовым.

EveryInfra считает лимит по аккаунту, а не по эндпоинту. На нашей странице тарифов указано: по умолчанию 60 запросов в минуту на все ключи аккаунта вместе. Дополнительные ключи не увеличивают пропускную способность. Для большей скорости можно купить пакет скорости на 30 дней: 180 запросов в минуту за $10 или 600 в минуту за $30.

Лимиты также растут с общей суммой пополнений баланса. При превышении лимита вы получаете 429 rate_limited с заголовком Retry-After, в котором указано, сколько секунд ждать. Код 429 и Retry-After определены в разделе 4 RFC 6585, и оба сервиса их используют.

У каждого подхода есть свои издержки и преимущества. Лимит TikHub на каждый эндпоинт даёт высокую общую пропускную способность, когда вы одновременно вызываете много эндпоинтов. Его 10 запросов в секунду также намного быстрее нашего лимита по умолчанию в 60 запросов в минуту. Наш лимит на аккаунт означает, что агенту не нужно помнить 1 471 отдельный лимит. Ему достаточно знать одно число.

Лимит запросовTikHubEveryInfra
Что учитываетсяКаждый эндпоинт отдельно (для одного владельца токена)Весь аккаунт, все ключи вместе
По умолчаниюВ основном 10 в секунду; для 74 эндпоинтов лимит ниже или выше60 в минуту
Повышение скоростиТариф RPS в панели RPS, ежемесячноПакет скорости от $10 на 30 дней или повышение лимита в зависимости от общей суммы пополнений
При превышении лимита429 «Request too fast»429 rate_limited с Retry-After
Что должен знать агентЛимит каждого эндпоинта (rate_limit в списке цен)Один лимит на аккаунт

Ещё одна деталь о Helper от сообщества. В его SKILL.md написано «QPS 10 per second per endpoint, timeout 30 to 60 seconds, up to 3 retries on errors». Эти строки взяты из начала openapi.json TikHub. Но в клиенте Helper нет кода повторных попыток.

Тайм-аут жёстко задан: 30 секунд. При 429 клиент просто передаёт модели «HTTP 429». Модель читает SKILL.md и считает, что клиент сам выполняет повторные попытки.

Кто создал TikHub API Helper и что в нём

По запросу «tikhub api helper» первыми в выдаче идут репозиторий GitHub tikhub_api_skill (репозиторий сообщества A) и страницы в каталогах Skill, где он размещён, например маркетплейс Skill LobeHub и Shyft. Репозиторий принадлежит личному аккаунту и не входит в организацию TikHub на GitHub. В описании репозитория он назван «a Codex/Claude Code Agent Skill» для TikHub API. О том, что его сделала TikHub, там не говорится.

В 00:14 SGT API GitHub показывал 129 звёзд, а на странице отображалось 17 форков. Репозиторий создан 2026-01-08, последний пуш датирован 2026-07-08, лицензии нет. Поэтому корректное описание такое: это проект сообщества, а Skill под названием «API Helper» у TikHub нет. Собственный продукт TikHub — tikhub-plugin, плагин для Claude Code. Его последний релиз — v1.1.0 от 2026-06-15: 18 Skill и настройки MCP для 7 платформ.

Helper устроен просто: четыре файла в .claude/skills/tikhub-api-helper/. SKILL.md занимает 5 850 байт. Он предписывает модели найти эндпоинт, прочитать его параметры и затем вызвать его. api_searcher.py ищет по ключевым словам в локальном openapi.json. api_client.py отправляет запросы. openapi.json — снапшот эндпоинтов размером 2 997 476 байт.

Идея здравая. Файл API TikHub занимает около 840 000 токенов, поэтому передать его модели целиком нельзя. Локальный поиск, который отдаёт модели только совпадения, сильно экономит контекст. Это подтверждает и документация Claude Code по работе со Skill: содержимое Skill загружается только при его использовании, а до этого большие справочные файлы почти не занимают контекст. Проблемы кроются в деталях, и в следующих разделах мы разберём их по очереди.

Это не единственный Skill от сообщества. В каталоге Skill TypingMind указан ещё один Skill — tikhub-skill (репозиторий сообщества B). Он входит в проект OpenCompany с открытым исходным кодом и работает иначе. Снимка эндпоинтов в нём нет. Вместо этого он объединяет методы Python SDK TikHub в один инструмент. Ниже эти три подхода сопоставлены.

ПодходАвторКак ищет эндпоинтыОткуда берёт токенНайденные проблемы
tikhub_api_skill (API Helper)Репозиторий сообщества A (один разработчик)Локальный снимок с 1 120 путями, поиск по подстрокеВ коде: TIKHUB_API_TOKEN; в документации: TIKHUB_TOKEN25,7 % путей из снимка больше нет; urllib блокируется; неверные параметры в примерах
OpenCompany tikhub-skillРепозиторий сообщества BНазвания методов Python SDK от TikHubНе проверялосьНе проверялось пофайлово
tikhub-pluginTikHub18 Skill и по одному MCP-серверу на каждую платформуTIKHUB_API_KEYПроверено в нашей предыдущей статье с результатами тестирования: из 1 109 путей в коде этого плагина 237 исчезли из документации

В статье «API-ключ TikHub, документация и GitHub: проверка» мы уже проверили собственный плагин TikHub. Здесь речь пойдёт о Helper от сообщества, и на то есть две причины. По этому запросу его открывают чаще всего. Кроме того, его копируют как есть. В разделе о токене ниже вы увидите, что исправление в исходном репозитории не доходит до уже существующих копий.

Снимок эндпоинтов устарел: 288 из 1 120 путей исчезли из документации

openapi.json в Helper — это копия, которую автор скачал с TikHub в январе 2026 года. После этого она менялась лишь один раз, в мае. Мы сравнили её путь за путём с openapi.json TikHub, полученным в 00:16:44 SGT 2026-11-06. В обоих файлах info.version — V5.3.2, так что по номеру версии кажется, будто ничего не изменилось. На деле в сегодняшней документации осталось только 832 из 1 120 путей снимка. 288 путей (25,7 %) исчезли.

Верно и обратное. Из 1 058 путей в текущем файле 226 (21,4 %) отсутствуют в снимке, поэтому агент, использующий Helper, никогда их не найдёт. Среди 832 общих эндпоинтов у 59 различаются параметры запроса. Например, в поиске пользователей Kuaishou убрали page и добавили pcursor и ещё три фильтра.

Горизонтальная линейчатая диаграмма с накоплением и двумя полосами. Верхняя полоса — снимок Helper с 1 120 путями: 832 есть в обоих файлах (бирюзовый цвет), а 288 есть только в снимке и теперь удалены или переименованы (серый цвет). Нижняя полоса — текущая версия TikHub с 1 058 путями: 832 есть в обоих файлах (бирюзовый цвет), а 226 есть только в текущей документации, и Helper не может их найти (тёмно-серый цвет). В обоих файлах указана версия V5.3.2.

Изменения приходятся на несколько групп. Новые группы содержат эндпоинты, которые больше всего нужны специалистам по работе с блогерами и анализу рекламы.

Удалены из документации (из 288)ПутиНовые в документации (из 226)Пути
LinkedIn (две группы)77Bilibili Huahuo45
TikTok Ads23Douyin Xingtu V229
Douyin Web20Xiaohongshu Pugongying20
Xiaohongshu Web V218Douyin DOU+17
TikTok App V3 / Sora2по 17——
Xiaohongshu Web (первая группа)15, все——

Есть ещё один момент. 201 из 288 пропавших путей по-прежнему есть в прайс-листе, причём с ценами. В статье API-ключ TikHub, документация и GitHub: проверка мы также нашли в прайс-листе 433 пути, которых нет в документации. Похоже, TikHub сначала убирает эндпоинт из документации, а в прайс-листе его оставляет. Для агента запись в прайс-листе не доказывает, что эндпоинт ещё работает.

Таблица платформ в SKILL.md тоже показывает, насколько устарели данные. В ней указано, что у Xiaohongshu Web 26 эндпоинтов. В снимке их 15, а в текущей документации — 0. Для YouTube Web указано 16 эндпоинтов, а сейчас их 8.

Для TikTok App в таблице указано 76 эндпоинтов, а сейчас их 58. Цифры в таблице не совпадают ни со снимком, входящим в состав Helper, ни с текущей документацией.

ГруппаУказано в SKILL.mdТекущая документация
Xiaohongshu Web26 (в снимке: 15)0
YouTube Web168
TikTok App7658

Агент, который планирует работу по этой таблице, решит, что у Xiaohongshu Web много эндпоинтов. А затем его поиск вернёт только пути, которых уже нет.

Поиск по инструкции из SKILL.md: почему запросы из нескольких слов часто возвращают 0 результатов

Рабочий процесс Helper состоит из трёх шагов: поиск, чтение подробностей, вызов. В 00:19 по сингапурскому времени (SGT) мы запустили его api_searcher.py офлайн на своей машине. Мы выполнили каждый запрос из SKILL.md в исходном виде и ещё четыре запроса на китайском языке и из нескольких слов. Результаты показаны на диаграмме ниже.

С запроса «tiktok user profile» начинается пример рабочего процесса в SKILL.md. Он находит 1 результат, и это демо-эндпоинт без параметров. Запрос «fetch user profile tiktok» из раздела «common use» находит 0 результатов. «douyin video comments» находит 0, и запрос на китайском со значением «заметки Xiaohongshu» тоже находит 0.

Составная горизонтальная столбчатая диаграмма: 10 запросов и число эндпоинтов, найденных по каждому из них. Каждый столбец разделён на эндпоинты, которые работают сегодня (бирюзовый), эндпоинты, удалённые из текущей документации (серый), и демо-эндпоинты (тёмно-серый). Запросы со звёздочкой приведены в том виде, в каком они указаны в SKILL.md. tiktok user profile: 1, демо-эндпоинт. fetch user profile tiktok: 0. douyin video comments: 0. «Заметки Xiaohongshu» на китайском: 0. fetch post detail: 2, оба работают. search video: 5, все работают. fetch comment: 3, из них 2 удалены. user profile: 20, из них 5 удалены. «Заметки» на китайском: 20, из них 8 удалены. «Комментарии» на китайском: 20, из них 6 удалены.
Запрос (* = как в SKILL.md)РезультатыЕсть в текущей документации
tiktok user profile *1Только демо-эндпоинт
fetch user profile tiktok *0—
douyin video comments0—
Заметки Xiaohongshu (на китайском)0—
fetch post detail *22
search video *55
fetch comment *31
user profile *2015
заметки (на китайском)2012
комментарии (на китайском)2014

Причина в поисковом скрипте. Он воспринимает весь запрос как одну подстроку. Скрипт ищет эту подстроку в объединённой строке «path + summary + description + operationId» и останавливается на 20 результатах. Запрос из нескольких слов находит совпадение, только если слова идут подряд и именно в этом порядке. Значения поля summary в TikHub выглядят как «Get user profile», поэтому три слова «tiktok user profile» никогда не встречаются вместе.

В скрипте есть функция suggest_api со словарём ключевых слов. Она может преобразовать «user profile» в fetch_user_profile. Но точка входа для командной строки её не вызывает. Поиск по одному слову выдаёт результаты, но они сразу заполняют все 20 позиций, после чего скрипт обрезает список в порядке записей в файле. Из 20 результатов по китайскому слову «заметки» 8 уже удалены. Первые результаты не всегда относятся к нужной вам платформе.

Со вторым шагом, «чтением деталей», тоже есть проблема. Пример в SKILL.md — detail:tiktok_web_fetch_user_profile_get. Мы запустили его как есть и получили «No API found». Настоящий operationId в снимке — fetch_user_profile_api_v1_tiktok_web_fetch_user_profile_get. С этим именем мы получили 1 970 байт описания параметров.

Для последнего шага, вызова, SKILL.md приводит четыре разных примера. Мы сравнили каждый из них с параметрами в текущей документации.

Пример из SKILL.mdПараметр в примереПараметры в текущей документацииРезультат
tiktok/web/fetch_user_profilesec_user_iduniqueId или secUidТакого параметра нет
tiktok/web/fetch_post_detailpost_iditemId (обязательный), regionТакого параметра нет; не хватает обязательного параметра
tiktok/web/fetch_post_commentpost_idaweme_id (обязательный), cursor, count, current_regionТакого параметра нет; не хватает обязательного параметра
tiktok/web/fetch_search_videokeywordkeyword (обязательный), count, offset, search_id, cookieСовпадает

Агент, который учится на этих примерах, при первом же запросе профиля отправит sec_user_id, а сервер такого параметра не знает. Эндпоинты TikHub работают на FastAPI. В текущем openapi.json для 973 эндпоинтов указана ошибка валидации с кодом 422. Тело ответа содержит стандартные поля loc, msg и type. По нему можно понять, какого обязательного параметра не хватает. Но оно не подскажет, что вместо post_id нужен itemId.

В эндпоинте профиля оба параметра необязательны. Проигнорирует ли сервер неизвестный параметр без предупреждения и спишет ли плату за вызов? Аккаунта у нас нет, поэтому мы этого не проверяли, и ответы на оба вопроса остаются неизвестными. В разделе «Что будет, если ошибиться» ниже показано, как наш API реагирует на те же ошибки.

Где хранить токен: три имени переменной и токен, зашитый в код

Начнём с самой простой ошибки: имени переменной окружения. Раздел Authentication в SKILL.md велит задать TIKHUB_TOKEN. Но api_client.py читает TIKHUB_API_TOKEN. Python SDK TikHub и плагин TikHub используют третье имя, TIKHUB_API_KEY, и в настройках плагина оно встречается 83 раза.

Мы задали на своей машине только TIKHUB_TOKEN, а две другие переменные не задавали. Затем создали клиент Helper. Он прочитал токен длиной 0. Значением заголовка запроса стало имя схемы, затем пробел, а после него ничего. Поэтому пользователь, который в точности следует SKILL.md, отправляет все запросы без токена и получает только ответы с кодом 401.

Перевёрстанный скриншот двух фрагментов репозитория сообщества A, версия от 08.07.2026. Вверху — раздел Authentication из SKILL.md. Бирюзовыми рамками отмечены два элемента: строка «API requests use a default token for development.» и переменная TIKHUB_TOKEN в шаге 2. Внизу — строка документации метода __init__ в коде клиента. Бирюзовой рамкой отмечено «uses TIKHUB_API_TOKEN if not provided». Эти имена не совпадают.
SKILL.md велит задать TIKHUB_TOKEN, но код читает TIKHUB_API_TOKEN. Кроме того, SKILL.md утверждает, что запросы используют токен по умолчанию, но в текущем коде такого токена нет. Проверено 06.11.2026. Репозиторий сообщества A, оригинальный текст переверстан; ссылки в списке источников
ГдеИмя переменнойРезультат, если задана только она
Helper SKILL.mdTIKHUB_TOKENТокен длиной 0, пустой заголовок Bearer, 401
Helper api_client.pyTIKHUB_API_TOKENРаботает (с исправлением User-Agent)
SDK и плагин TikHubTIKHUB_API_KEYРаботает для SDK и плагина

В первой бирюзовой рамке на скриншоте написано «API requests use a default token for development». Эта строка осталась от ранней версии Helper. В ранней версии токен был прописан прямо в коде.

Позже другой контрибьютор прислал исправление. Оно изменило код так, чтобы токен читался только из переменной окружения, и это изменение влили в основную ветку. Само исправление верное. Но SKILL.md в нём не обновили. Поэтому сегодня SKILL.md по-прежнему сообщает модели, что запросы используют токен по умолчанию, хотя в коде его нет. Модель, прочитавшая эту строку, ожидает, что вызовы сработают без переменной, и получает только ответы 401.

Больше беспокоят форки. Через GitHub API мы по очереди прочитали форки репозитория. Мы сравнивали только хеши строки, а само значение не копировали и не проверяли. Наш вывод умещается в одно предложение: в некоторых форках до сих пор есть ранний зашитый токен, и мы рекомендуем автору его перевыпустить.

Мы не проверяли, работает ли этот токен, и не должны этого делать. Вызов с утёкшим токеном тратит чужие деньги. Для пользователей Helper вывод таков: версия, установленная из форка или копии, может отличаться от исправленной версии в исходном репозитории.

Ваша ситуацияЧто делать
Вы используете текущую основную ветку оригинального репозиторияЗадайте TIKHUB_API_TOKEN, а не TIKHUB_TOKEN, и добавьте User-Agent
Вы установили Helper из форка или копииНайдите в своей копии зашитый токен, удалите его и читайте токен из переменной
Вы поддерживаете репозиторий или форкОтзовите и перевыпустите ранний токен: изменение истории не затрагивает другие копии

Документация GitHub однозначно описывает этот случай. Если произошла утечка учётных данных, например пароля или токена, первым делом их нужно отозвать или перевыпустить. После отзыва никто не сможет ими воспользоваться, и переписывать историю часто не требуется. Если только переписать историю и сделать force-push, старые коммиты всё равно можно получить из любого клона или форка. Их также можно получить по хешу из кешированных представлений GitHub и из пул-реквестов, которые на них ссылаются. Удалить копию в форке может только владелец форка.

Иначе говоря, исправление в оригинальном репозитории решает проблему только на будущее. Копии, которые уже разошлись, оно исправить не может. Реально помогает только отзыв токена.

Иллюстрация: серый шкаф. В одном из средних ящиков под прозрачной крышкой лежит бирюзовый ключ. Другой ящик открыт и пуст. Снаружи на скамье лежит серый ключ, а по дорожке вдаль тянется вереница одинаковых серых ключей. Смысл: оригинальный репозиторий убрал токен, но копии в публичных местах продолжают расходиться.
Исправление в оригинальном репозитории не распространяется на уже разошедшиеся форки и копии. Реально помогает только отзыв токена. Иллюстрация подготовлена для этой статьи; реальный интерфейс на ней не показан

Если вы установили Helper из форка или копии, поищите в локальной копии длинную зашитую строку. Если найдёте, удалите её, читайте токен из переменной окружения и никогда не используйте токен, оставленный кем-то другим. Если речь о нашем сервисе, ссылайтесь на ${EVERYINFRA_API_KEY} в настройках MCP и больше нигде. В документации Claude Code по MCP сказано, что .mcp.json поддерживает такую подстановку переменных. Команда сможет пользоваться общим файлом настроек, не передавая друг другу ключ.

api tikhub io и api.tikhub.dev: почему urllib в Python не может подключиться

Те, кто ищет «api tikhub io», часто встречали этот домен в коде или в сообщении об ошибке. Основной домен TikHub — api.tikhub.io. По корневому пути на нём открывается страница Swagger, где можно ввести токен и попробовать вызовы прямо в браузере. Есть и api.tikhub.dev. Helper называет его «китайским доменом для обхода сетевых ограничений».

В README TikHub, в заметках о доменах и подключении, сказано иное. Там рекомендуют использовать api.tikhub.io и избегать api.tikhub.dev, который может работать медленнее. Если запрос выполняется дольше 30 секунд, README советует настроить собственный прокси.

Helper блокируют не из-за домена, а из-за заголовка запроса. api_client.py в Helper отправляет запросы через стандартный модуль Python urllib.request и не задаёт User-Agent. Поэтому используется значение по умолчанию из документации Python: «Python-urllib/» и номер версии. В 00:20:21 SGT мы вызвали через Helper без изменений эндпоинт проверки состояния /api/v1/health/check, которому не нужен токен. Он вернул «HTTP 403: Forbidden».

Затем мы отправили запросы на тот же адрес с разными заголовками. Результаты показаны в таблице и на графике ниже. Каждое тело ответа 403 состояло из одной строки «error code: 1010», а в заголовках ответа был server: cloudflare.

User-Agentapi.tikhub.ioapi.tikhub.dev
Python-urllib/3.15 (по умолчанию в Helper)403, 1010 (2 из 2)403, 1010 (2 из 2)
python-requests/2.32.3200 (2 из 2)200 (1 из 1)
python-httpx/0.28.1200 (1 из 1)не тестировалось
curl/8.7.1200 (1 из 1)200 (1 из 1)
Заголовок браузера200 (1 из 1)не тестировалось
Тепловая карта. Строки — 5 значений User-Agent. Столбцы — домены api.tikhub.io и api.tikhub.dev. Каждый запрос отправлен на эндпоинт проверки состояния, которому не нужен токен. Python-urllib/3.15 получает 403 с error code 1010 на обоих доменах, по 2 попытки на каждом (серый цвет). python-requests/2.32.3 получает 200 на обоих доменах (бирюзовый; 2 попытки на io, 1 на dev). python-httpx/0.28.1, curl/8.7.1 и заголовок браузера получают по одному ответу 200 на api.tikhub.io, curl также получает 200 на api.tikhub.dev. Время — с 00:20 до 00:26 SGT 2026-11-06, запросы отправлены из Сингапура.

1010 — это код ошибки Cloudflare. На странице Cloudflare об этой ошибке сказано, что владелец сайта заблокировал доступ на основе сигнатуры вашего браузера. В списке частых причин указан «стандартный User-Agent Python urllib». Browser Integrity Check в Cloudflare включена по умолчанию и блокирует запросы без User-Agent или с необычным значением. Cloudflare советует отправлять User-Agent, который сообщает, кто вы, например «my-app/1.0». Притворяться браузером не нужно.

У этого результата есть ограничения. Мы тестировали из одной сети в Сингапуре и только в два момента времени. TikHub сам настраивает правила Cloudflare, поэтому результаты могут зависеть от региона и времени. Но оба раунда и оба домена дали одинаковый результат.

Скриншот двух реальных ответов от api.tikhub.io. Вверху — запрос к эндпоинту деталей поста TikTok без токена и с неверным параметром post_id. Он возвращает HTTP 401. Бирюзовые рамки выделяют сообщение «API token is missing in the request Header or Cookie» и post_id в возвращённых params. В теле также есть message_zh, support и time_zone America/Los_Angeles. Внизу — запрос к эндпоинту проверки состояния с заголовком Python-urllib/3.15. Он возвращает HTTP 403, а тело состоит из одной строки error code: 1010 в бирюзовой рамке.
Без токена TikHub сначала проверяет аутентификацию и не указывает на неверный параметр. Стандартный заголовок urllib блокируется ещё до того, как запрос доходит до API. Отправлено из Сингапура 2026-11-06. Реальные ответы от api.tikhub.io

Для ИИ-агента этот 403 обработать сложнее, чем 401. Получив 403 с телом не в формате JSON, Helper возвращает только {"error": "HTTP 403: Forbidden", "status_code": 403}. Главная подсказка, «1010», теряется. Таблица ошибок в SKILL.md описывает только четыре случая: 401, 429, ошибки соединения и отсутствующие параметры. Строки для 403 в ней нет.

README TikHub называет четыре причины ответа 403: у токена нет прав на этот маршрут, аккаунт приостановлен, email не подтверждён или токену не хватает разрешений. Модель, которая внимательно читает документацию, почти всегда примет этот 403 за проблему с токеном. Она посоветует проверить подтверждение email или создать новый токен. На деле достаточно одной строки в заголовках. Добавьте строку User-Agent в _build_headers:

python
# _build_headers in api_client.py: add only the User-Agent line, keep the rest
def _build_headers(self, content_type: str = "application/json"):
    return {
        "Authorization": f"Bearer {self.api_token}",
        "Content-Type": content_type,
        "User-Agent": "my-tikhub-agent/1.0",  # without this line, Cloudflare blocks the default urllib header with 1010
    }

Мы также проверили EveryInfra с тем же заголовком Python-urllib. В 00:26:04 SGT мы прочитали каталог возможностей TikTok, а в 00:26:05 запросили список инструментов MCP. Оба запроса вернули 200. Один и тот же простой код на Python в одном случае работает, а в другом блокируется. Многие скрипты, которые пишут агенты, — именно такой код, без дополнительных библиотек.

Сколько шагов занимает один вызов: Helper, TikHub MCP и удалённый MCP-сервер EveryInfra

Теперь сведём вместе всё, что описано выше. Возьмём одну задачу: агенту нужно получить данные профиля одного аккаунта TikTok. Вот сколько шагов занимает каждый подход. Для Helper мы берём лучший случай, когда имя переменной и заголовок уже исправлены. Для TikHub MCP используем настройки с его страницы MCP. Для EveryInfra — наши реальные вызовы той же ночью.

ШагHelper от сообщества (после исправлений)TikHub MCPУдалённый MCP-сервер EveryInfra
НастройкаКлонировать репозиторий, задать TIKHUB_API_TOKEN, исправить заголовокУстановить Node.js; добавить по одной записи npx mcp-remote на каждую платформуОдна HTTP-запись; ключ берётся из переменной
Найти эндпоинтapi_searcher.py; запросы из нескольких слов часто возвращают 0Сервер TikTok содержит 163 инструмента, Douyin — 319Вызвать бесплатный everyinfra_list_capabilities или прочитать каталог
Изучить параметрыdetail: и полный operationIdПараметры указаны в описании каждого инструментаВ каждой записи каталога указаны обязательные и необязательные параметры, response_fields и цена
Вызовapi_client.py GET path paramsВызвать подходящий инструментeveryinfra_call_api с platform, action, params
При ошибкеТолько HTTP-статус и исходное тело ответаОтвет TikHub со статусом 401 или 422400 или 422 с did_you_mean и example, без списания
ИтогоМинимум 4 вызова инструментов, больше, если поиск не сработал1 вызов после загрузки описаний инструментов2 вызова (каталог + вызов), 1 — когда агент уже знает названия

У TikHub MCP отдельный сервер для каждой платформы. Список платформ можно посмотреть без токена. У TikTok 163 инструмента, у Douyin — 319, у Instagram — 93, у Xiaohongshu — 45. Каждый эндпоинт — отдельный инструмент, поэтому модель может сразу выбрать нужный. Обратная сторона: при подключении к серверу Douyin загружаются 319 описаний инструментов.

В примере настроек TikHub используется npx mcp-remote, который превращает удалённый HTTP-сервер в локальный процесс. Данные аутентификации передаются в аргументе --header. В настройках плагина TikHub переменная окружения указана как ${TIKHUB_API_KEY}. Ниже рядом приведены пример TikHub (ключ заменён ссылкой на переменную) и наш пример. Точные поля уточните в документации своего клиента.

json
{
  "mcpServers": {
    "tikhub-tiktok": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.tikhub.io/tiktok/mcp",
               "--header", "Authorization: Bearer ${TIKHUB_API_KEY}"]
    },
    "everyinfra": {
      "type": "http",
      "url": "https://api.everyinfra.com/mcp",
      "headers": { "Authorization": "Bearer ${EVERYINFRA_API_KEY}" }
    }
  }
}

У нас один адрес: https://api.everyinfra.com/mcp. В 00:21:08 SGT мы запросили его список инструментов без ключа. В ответе объёмом 16 247 байт было 12 инструментов. Ещё 12 инструментов для аккаунта (статистика использования, биллинг, ключи и другое) доступны по адресу /mcp/all, так что всего инструментов 24. См. /mcp-server. Для возможностей данных нет отдельных инструментов. Все они вызываются через everyinfra_call_api, а возможность выбирают два параметра, platform и action, например tiktok/profile.

Плюс такого подхода — короткий список инструментов, а для новых возможностей не нужно менять настройки. Минус в том, что модели сначала приходится читать каталог, чтобы узнать названия action. Для доступа к каталогу ключ не нужен. GET /api/v1/social/catalog?platform=tiktok&compact=1 возвращает только TikTok. В 00:18:12 SGT ответ занимал 6 835 байт и содержал параметры, цены и названия полей всех возможностей TikTok.

Спецификация MCP допускает оба варианта. В разделе об авторизации спецификации от 2026-07-28 сказано, что авторизация необязательна. Ни один из сервисов не использует OAuth. Оба передают ключ в заголовке запроса в формате Bearer по RFC 6750.

Что происходит при ошибке: проверяем 400, 422 и did_you_mean

Самая частая ошибка агента — использовать стиль именования другого сервиса. Мы воспроизвели поведение агента, который только что работал с TikHub. В 00:21:08 SGT мы отправили запрос с action в стиле TikHub, fetch_user_profile, и параметром uniqueId. Затем отправили второй запрос с правильным названием возможности, но с параметром sec_user_id из примера Helper.

Первый запрос вернул 400 unknown_capability. В did_you_mean был указан profile, а в allowed — все 24 возможности данных TikTok (это другие 24, не те 24 инструмента MCP, о которых шла речь выше). В next_steps говорилось, что нужно повторить запрос с profile и что ничего не списано. Второй запрос вернул 422 missing_param.

В next_steps этого ответа говорилось, что нужно добавить обязательный username и что sec_user_id здесь не является параметром. Также в ответе был example, который можно запустить без изменений. Ни один из запросов ничего не стоил.

Скриншот двух реальных ответов от api.everyinfra.com в 00:21:08 SGT 2026-11-06; в обоих случаях списание составило 0. Вверху: с action fetch_user_profile ответ — HTTP 400 unknown_capability. Бирюзовые рамки выделяют profile в did_you_mean и «Nothing was charged» в next_steps. Внизу: с параметром sec_user_id ответ — HTTP 422 missing_param. Бирюзовые рамки выделяют «sec_user_id is not a parameter here» и пример с platform tiktok, action profile, params username nasa.
Если название возможности или параметр указаны неверно, ответ объясняет агенту, что исправить, и даёт рабочий запрос. Ни за один из вызовов ничего не списано. Реальные ответы от api.everyinfra.com

Сравните с TikHub. Без токена он сначала проверяет аутентификацию. В 00:20:40 SGT мы вызвали эндпоинт деталей поста с неверным параметром post_id и без токена. Он вернул 401.

Тело ответа повторяло маршрут и параметры, но на неверный параметр не указывало. Согласно openapi.json, при наличии токена отсутствие обязательного параметра приводит к ответу FastAPI 422. В этом ответе указано отсутствующее поле, но правильное название не предлагается.

У нас порядок такой же: сначала аутентификация, потом проверка параметров. Без ключа вы получите 401, поэтому по запросам без аутентификации нельзя узнать структуру нашего API. Если ключ передан, то при неизвестном параметре или неверном значении API возвращает ответ 422 со списком поддерживаемых параметров, допустимых значений и did_you_mean. Это правило нужно, чтобы ИИ на стороне клиента мог сам исправить свою ошибку. Ошибочный вызов не должен каждый раз стоить денег.

Три реальных вызова: один через MCP, два через curl

Теперь реальные вызовы. Мы выбрали три возможности по $0.000556 каждая для двух платформ и использовали два способа вызова. Для каждого вызова мы записали время по SGT, количество записей и charged_usd.

Время (SGT)ВозможностьМетодДлительностьРезультатСписание
00:21:20tiktok/profile, username=tiktokУдалённый MCP: everyinfra_call_api30.2 s1 аккаунт: 96 600 000 подписчиков, 1 513 видео$0.000556
00:21:56tiktok/user_videos, username=tiktokcurl38.3 s10 видео$0.000556
00:22:42douyin/comments, одна ссылка на видео Douyincurl19.4 s20 комментариев$0.000556

Все три вызова вместе стоили $0.001668. О времени нужно сказать честно. Вызовы заняли 30, 38 и 19 секунд. Столько приходится ждать синхронного результата.

Это подходит агенту, который работает в фоне, но не человеку, который ждёт результата на странице. У нас нет аккаунта TikHub, поэтому измерить его скорость мы не смогли. В его README рекомендуется задавать тайм-аут от 30 до 60 секунд.

Поля, которые возвращает API, заданы в response_fields в каталоге. Возможность получения профиля возвращает 16 полей, например follower_count и video_count. Возможность получения видео возвращает больше 30 полей. Возможность получения комментариев включает like_count, reply_count, ip_location и next_page_token для следующей страницы. Ниже приведён curl-запрос для второго вызова. Ключ берётся только из переменной окружения.

bash
curl -s https://api.everyinfra.com/api/v1/social \
  -H "Authorization: Bearer $EVERYINFRA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"platform":"tiktok","action":"user_videos","params":{"username":"tiktok"}}'
# returns count: 10, billing.charged_usd: 0.000556

Цена: те же 1 000 запросов к TikTok и Douyin

Этот раздел о ценах намеренно короткий. Подробности — в разборе цен TikHub. Для TikHub мы использовали прайс-лист, просмотренный в 00:18:13 SGT, и страницу тарифов, просмотренную в 00:16 SGT. Нашим вызовам соответствуют эндпоинты профиля TikTok fetch_user_profile, видео TikTok fetch_user_post и комментариев Douyin fetch_video_comments.

Каждый стоит $0.001 за вызов. Всего у TikTok и Douyin 658 эндпоинтов с указанной ценой, и 529 из них стоят $0.001. Для EveryInfra мы взяли charged_usd из трёх реальных вызовов выше, по $0.000556 за каждый.

Сценарий (по 1 000 запросов)Публичная цена TikHubEveryInfra, по замерамСоотношение
Профиль TikTok$1.00 ($0.001 × 1,000)$0.5561.8
Видео TikTok$1.00; по умолчанию 15 записей на странице, около $0.067 за 1 000 записей$0.556; 10 записей за вызов, $0.0556 за 1 000 записейВ 1,8 раза за вызов, в 1,2 раза за запись
Комментарии Douyin$1.00; по умолчанию 20 записей на странице, $0.05 за 1 000 записей$0.556; 20 записей за вызов, $0.0278 за 1 000 записейВ 1,8 раза за вызов, в 1,8 раза за запись
Бесплатные кредиты$0.05 при регистрации, около 50 вызовов; некоторые эндпоинты бесплатны$1 за звезду на GitHub, срок действия — 24 часа—
Минимальное пополнение баланса$5Начиная с уровня $10У TikHub ниже

Два замечания о ценах за запись. В эндпоинте видео TikHub можно увеличить параметр count. Чем больше записей на странице, тем ниже цена за запись, а максимум мы проверить не смогли. Наш tiktok/user_videos возвращает 10 записей за вызов, поэтому цены за запись различаются всего в 1,2 раза.

У TikHub также есть скидка за дневной объём. На одном эндпоинте после первых 1 000 вызовов за день цена за вызов снижается до $0.0009, затем до $0.0008, а после 30 000 доходит до $0.0005. Мы пересчитали эти ступени в среднюю цену за 1 000 вызовов при N вызовах в день. При 10 000 вызовах в день средняя цена составляет $0.86.

При 50 000 она составляет $0.632. До нашей цены $0.556 она опускается только примерно при 117 900 вызовах в день. Выше этого порога дешевле TikHub.

Скидка действует только на тех эндпоинтах, где она предусмотрена. Из 529 эндпоинтов TikTok и Douyin по $0.001 скидка предусмотрена у 52,0 %. Например, у эндпоинта одного видео Douyin fetch_one_video её нет.

Линейный график. По горизонтальной оси отложено число вызовов в день на одном эндпоинте в логарифмическом масштабе от 1 000 до 200 000. По вертикальной оси отложена средняя цена за 1 000 вызовов. Серая линия показывает TikHub по $0.001 за вызов с дневной скидкой: $1.000 при 1 000, $0.860 при 10 000, $0.632 при 50 000, $0.533 при 200 000. Бирюзовая горизонтальная линия показывает EveryInfra: $0.556 по трём реальным вызовам. Линии пересекаются примерно на 117 900 вызовах в день.

Поэтому ответ зависит от объёма. Агент, который делает несколько тысяч или десятки тысяч вызовов в день на одном эндпоинте, платит меньше с EveryInfra. При объёме свыше примерно 118 000 вызовов в день на одном эндпоинте, для которого действует скидка, цена TikHub с учётом объёма ниже. В наших тарифах тоже есть уровни скидок за ежемесячное пополнение баланса, подробности приведены на странице тарифов.

На странице тарифов TikHub также указано, что вызовы через MCP и браузерное расширение стоят столько же, сколько прямые вызовы API. У нас так же. При вызовах через MCP, SDK и curl списывается одинаковая сумма charged_usd, а неудачные вызовы и пустые результаты ничего не стоят.

Прежде чем выдать токен ИИ-агенту: шесть проверок

Здесь всё, о чём шла речь выше, собрано в один чек-лист. Независимо от того, выберете вы TikHub или EveryInfra, выполните эти шесть проверок до первого реального вызова, который сделает агент. Для каждого пункта указано, как его проверить.

Во-первых, выдайте каждому агенту отдельный токен. TikHub разрешает до 100 токенов на пользователя. У нас один ключ может создать не более 20 ключей в день. Ключи, созданные в консоли, в этот лимит не входят.

С отдельными токенами по записям об использовании видно, какой агент сколько потратил и какой достиг лимита запросов. Если файл настроек одного агента по ошибке попадёт в публичный репозиторий, вы отключите только этот токен. Проверка: убедитесь, что каждый токен есть в окружении только одного проекта.

Во-вторых, храните токен только в переменной окружения. Не кладите его в файл Skill и не записывайте открытым текстом в файл настроек. Плагин TikHub и наш плагин ссылаются в настройках на переменную через ${...}, и это правильный подход. История Helper показывает обратный пример.

Токен, который в ранней версии попал в код, позже удалили из исходного репозитория, но в некоторых форках он остался. Проверка: поищите в папке проекта «Bearer» и первые несколько символов вашего токена. Единственными результатами должны быть имена переменных.

В-третьих, используйте то имя переменной, которое читает ваш работающий код. Звучит очевидно, но в Helper используются три разных имени. В SKILL.md указано TIKHUB_TOKEN, код читает TIKHUB_API_TOKEN, а SDK и плагин TikHub используют TIKHUB_API_KEY. Если задать только имя из SKILL.md, запросы уйдут с пустым заголовком Bearer.

TikHub вернёт 401, и модель, скорее всего, решит, что токен неверный, и посоветует создать новый. Проверка: перед вызовом выведите длину токена, а не его значение. Длина 0 означает, что имя переменной неверное.

В-четвёртых, сначала отправьте один бесплатный запрос. Для проверки работоспособности и прайс-листа TikHub токен не нужен. Для каталога EveryInfra и списка инструментов MCP ключ не нужен. Отправьте один запрос тем же HTTP-клиентом, который будет использовать агент. Так вы отделите друг от друга три вида проблем: заблокированный заголовок (1010), ошибку аутентификации (401) и неверные параметры (422). Именно на этом шаге мы обнаружили, что клиент urllib с заголовком по умолчанию не может обратиться ни к одному из доменов TikHub, а curl и requests работают.

В-пятых, укажите лимит запросов в инструкциях агента. TikHub считает лимит отдельно для каждого эндпоинта. У 74 эндпоинтов лимит отличается от стандартных 10 в секунду, самый низкий составляет 1 в секунду. У нас действует общий лимит на аккаунт, по умолчанию 60 в минуту.

Агенты по умолчанию работают параллельно, поэтому прямо укажите агенту ждать после ответа 429. В нашем ответе есть Retry-After, и агент ждёт указанное число секунд. В примечании TikHub к 429 сказано только «Request too fast», а в публичной документации не указано, сколько ждать. Мы советуем ждать 1 секунду и удваивать паузу после каждого нового 429.

В-шестых, установите лимит на баланс и сначала найдите самый дорогой вызов. Из 1 471 эндпоинта TikHub с указанной ценой большинство стоит $0.001 за вызов. Но из 78 эндпоинтов Douyin Xingtu, у которых в пути есть «xingtu», 19 стоят $0.02 за вызов. Общий поиск Douyin v2 стоит $0.01.

С одним токеном стоимость вызовов может различаться в 20 раз. У нас цена каждой возможности указана в каталоге, и агент может прочитать её перед вызовом. Проверка: попросите агента перечислить эндпоинты и цены до того, как он их вызовет, и утвердите список. Держите на балансе ровно столько, сколько нужно для этого запуска.

ПроверкаКак проверитьКак это решено в EveryInfra
1. Один токен на агентаКаждый токен только в одном проектеВы
2. Токен только в переменнойПоиск «Bearer»: только имена переменныхВы
3. Правильное имя переменнойДлина токена не равна 0Только одно имя: EVERYINFRA_API_KEY
4. Сначала один бесплатный запросРазличать 1010, 401 и 422Бесплатные каталог и список инструментов
5. Лимит запросов в инструкцияхАгент ждёт после 429Retry-After задаёт паузу
6. Лимит баланса и самая высокая ценаАгент сначала перечисляет ценыЦены указаны в каталоге

Бесплатные Skills для анализа данных и Helper — не одно и то же

Многие, кто ищет «tikhub api helper», хотят одного: установить Skill, чтобы ИИ сам получил данные и проанализировал их. Но Skills бывают двух видов. Helper представляет собой руководство о том, как вызывать API. Он подсказывает модели, где найти эндпоинты и как составлять запросы. Данные он не анализирует.

У EveryInfra тоже есть Skills для анализа данных. Их можно скачать бесплатно и использовать со своими ИИ-инструментами и моделями. В версии v0.4.1 от 2026-10-15 их четыре: анализ товаров в e-commerce, эффективность контента в соцсетях, разметка контента и выводы из отзывов. Данные они не собирают. Данные вы собираете через API EveryInfra, и сбор оплачивается за каждый вызов. Как ими пользоваться, показано в нашей статье один SKILL.md для четырёх ИИ-инструментов.

Часть для работы с API находится в нашем репозитории плагинов. Версия v0.4.0 вышла 2026-10-21, её настройки ссылаются на ${EVERYINFRA_API_KEY}. 2026-11-01 мы также выпустили everyinfra 0.3.0 на PyPI с инструментом командной строки и оценкой стоимости.

Разделение сбора и анализа также упрощает управление токенами. Skills для анализа вообще не требуют ключа. Ключ нужен только на шаге с API. Анализ можно запускать локально, а для сбора выдать один ключ с жёстко ограниченными правами.

Когда TikHub подходит лучше

Вот в чём TikHub лучше нас. Во-первых, охват эндпоинтов. Сейчас в его документации 1 058 путей. Для маркетинга с блогерами и данных рекламных платформ, таких как Douyin Xingtu, DOU+, Xiaohongshu Pugongying и Bilibili Huahuo, у него много детальных эндпоинтов. Таких эндпоинтов для внутренних маркетинговых кабинетов у него больше, чем у нас.

Во-вторых, цена на больших объёмах. Если на одном эндпоинте со скидкой больше примерно 118 000 вызовов в день, его цена за объём ниже нашей. В-третьих, порог входа. Минимальное пополнение баланса у него $5, ниже нашего уровня $10, а бесплатные кредиты на $0.05 не ограничены по сроку. В-четвёртых, исходные поля.

Он возвращает собственную структуру данных платформы. Например, в статье TikHub: API-ключ, документация и GitHub в тесте он выдал точное число подписчиков в TikTok, а мы отдаём округлённое. В-пятых, количество ключей. У каждого пользователя может быть 100 ключей, поэтому вести учёт по проектам просто. В описании Python SDK 2.2.0 сказано, что SDK охватывает 1 048 эндпоинтов и включает асинхронный клиент.

Направление видно и по сравнению снимков выше. Почти все 226 новых эндпоинтов относятся к работе с блогерами и рекламным платформам. Если вы подбираете авторов для брендов и изучаете их прайс-листы и рекламные данные, возможности TikHub в этой области гораздо шире наших. Проверяйте цену каждого из этих эндпоинтов, потому что многие из них стоят не $0.001.

Если вы уже работаете с TikHub и хотите продолжать, в этой статье есть три рекомендации. Используйте плагин или SDK TikHub, а не устаревший Helper от сообщества. Задайте имя переменной, которое читает исполняемый код. Укажите User-Agent в своих Python-скриптах.

Если вы впервые подключаете ИИ-агента к данным соцсетей, важнее могут быть другие факторы: ошибки, которые агент может исправить сам, отсутствие списаний за неудачные запросы, единый адрес для всех платформ и стоимость при нескольких тысячах или десятках тысяч вызовов в день. В этом случае EveryInfra — более простой выбор.

Другие наши статьи о TikHub посвящены другим темам. Статья API-ключ TikHub, документация и GitHub: проверили на практике рассказывает о ключе, объёме документации и состоянии SDK TikHub. В статье Тарифы TikHub: подробный разбор разобрано более тысячи строк прайса. Альтернативы TikHub и /alternatives/tikhub содержат полное сравнение.

Новости отрасли

  • 2026-10-22 Anthropic передала стандарт Agent Skills фонду Agentic AI Foundation. В анонсе Linux Foundation от того же дня сказано, что стандарт поддерживают более 70 платформ для агентов. Там же сообщается о 1 миллионе опубликованных Skills и почти 280 миллионах установок. Что это значит для вас: SKILL.md смогут читать больше инструментов, поэтому ошибочные имена переменных и эндпоинтов из Skill будут распространяться через форки и копии ещё шире, как это произошло с Helper от сообщества, описанным в этой статье.
  • 2026-10-24 Cloudflare обновила страницу ошибки 1010, где упомянут User-Agent, который Python urllib использует по умолчанию. Что это значит для вас: задайте User-Agent в скриптах агентов без дополнительных библиотек, прежде чем запускать их в продакшене.
  • 2026-10-27 Google Cloud выпустила IAM Helper. Он использует Agent Skills и инструменты MCP, чтобы агенты могли разбираться с ошибками 403 и запрашивать временный доступ на один час, причём изменение прав требует одобрения человека. Что это значит для вас: агенты всё чаще будут отвечать на ошибку 403 запросом дополнительного доступа. Если ошибка 403 на самом деле вызвана блокировкой заголовка 1010, дополнительный доступ не поможет. Сначала прочитайте тело ответа, чтобы понять, откуда возникла ошибка 403.
  • 2026-10-28 GitHub подключил обнаружение секретов с помощью ИИ к push protection. Функция доступна в публичной предварительной версии и по умолчанию выключена. Что это значит для вас: она может блокировать будущие push-операции с жёстко заданными токенами, но не затронет копии, которые уже есть в форках.

FAQ

Где создать API-токен TikHub?

(Источник: автодополнение Google по запросу «tikhub api token», данные от 2026-11-06.) Войдите в личный кабинет TikHub. Откройте меню API-токенов и создайте токен. Передавайте его в заголовке Authorization: Bearer. Исходный текст находится в разделе «Get API Token» в конце README сайта документации. У каждого пользователя может быть до 100 токенов.

В старой документации говорилось, что можно задать области доступа, срок действия и вручную включать или выключать токен. В текущей публичной документации не сказано, как это сделать, а эти состояния упоминаются только в причинах ошибок 401 и 403. Для ИИ-агентов выдавайте каждому агенту отдельный токен.

Helper для API TikHub создан компанией TikHub?

(Источник: автодополнение Google по запросу «tikhub api helper», данные от 2026-11-06.) Нет. Первый результат, tikhub_api_skill, принадлежит личному аккаунту, и в его описании не утверждается, что его сделал TikHub. Собственные продукты TikHub: tikhub-plugin в GitHub-организации TikHub (v1.1.0, 18 Skills) и Python SDK TikHub. 25,7 % содержимого снимка Helper от сообщества уже не существует, а используемый им заголовок urllib по умолчанию блокируется. Используйте вместо него плагин TikHub или сначала внесите два исправления из этой статьи.

Что делать, если api.tikhub.io не открывается или возвращает 403?

(Источник: автодополнение Google по запросам «api tikhub io» и «https api tikhub io», данные от 2026-11-06.) Сначала прочитайте тело ответа. Если там написано «error code: 1010», Cloudflare заблокировал заголовок вашего запроса. Укажите User-Agent в клиенте, и проблема исчезнет. К токену это отношения не имеет. Если в JSON-теле сказано, что у токена нет прав или почта не подтверждена, проблема в аккаунте. TikHub просит использовать api.tikhub.io и настроить собственный прокси, если запросы выполняются дольше 30 секунд. api.tikhub.dev может работать медленнее.

API-ключ и API-токен TikHub — это одно и то же?

(Источник: автодополнение Google по запросам «tikhub api key» и «tikhub api token», данные от 2026-11-06.) Да. TikHub в разных местах использует оба слова. На сайте документации написано «API Token». На странице с руководствами и в новом Python SDK написано «API key», а переменная окружения называется TIKHUB_API_KEY.

Путаница возникает с именем переменной. Код Helper от сообщества читает TIKHUB_API_TOKEN, а в его SKILL.md указано TIKHUB_TOKEN. Кроме того, у сервиса ИИ-агентов TikHub свои ключи, которые не работают с API данных.

Можно ли установить Skills TikHub с GitHub как есть?

(Источник: автодополнение Google по запросу «tikhub github», дата обращения: 2026-11-06.) tikhub-plugin от TikHub можно установить как плагин Claude Code, его настройки используют ${TIKHUB_API_KEY}. Helper от сообщества установить можно, но сначала сделайте три вещи. Задайте правильное имя переменной. Добавьте User-Agent в api_client.py. Поищите в локальной копии захардкоженный токен. В форке или копии всё ещё может остаться токен, захардкоженный в ранней версии, и использовать его нельзя.

Что такое API TikHub для ИИ и использует ли он тот же ключ?

(Источник: автодополнение Google по запросу «tikhub ai api», дата обращения: 2026-11-06.) У TikHub есть отдельный сервис ИИ-агентов, который находится на стадии тестирования. Согласно документации самого TikHub, на которую мы ссылались в статье API-ключ TikHub, документация и GitHub: проверили на практике, регистрация проходит на отдельном сайте, и вы получаете отдельный ключ. Этот ключ не работает с API данных соцсетей. В этой статье «токен» означает только токен API данных. Один ключ EveryInfra можно использовать для сбора данных, поиска и решения капчи, а в консоли можно отдельно отключить каждый из этих продуктов для каждого ключа.

С чего начать

  1. Откройте /docs, зарегистрируйтесь и создайте ключ в консоли. Сохраните его в переменной окружения EVERYINFRA_API_KEY. Чтобы получить кредиты до пополнения баланса, следуйте инструкциям на /pricing и получите пробные кредиты на сумму $1 за звезду на GitHub.
  2. Просмотрите каталог без ключа: GET https://api.everyinfra.com/api/v1/social/catalog?platform=tiktok&compact=1. В нём указаны возможности и цены для TikTok и Douyin.
  3. Добавьте MCP в свой ИИ-инструмент. Адрес: https://api.everyinfra.com/mcp, а в заголовке авторизации используется переменная окружения. Настройки описаны на странице /mcp-server.
  4. Попросите агента сначала вызвать everyinfra_list_capabilities. Затем он вызывает нужную возможность, например tiktok/profile, через everyinfra_call_api. При ошибке агент использует поля did_you_mean и example из ответа как подсказки; плата за это не взимается.

Источники

  1. «README - English» (API Token Introduction, HTTP Status Codes), документация TikHub, дата обращения: 2026-11-06, https://docs.tikhub.io/4592766m0
  2. «README - Chinese», документация TikHub, дата обращения: 2026-11-06, https://docs.tikhub.io/4579297m0
  3. llms.txt (индекс сайта документации), TikHub, дата обращения: 2026-11-06, https://docs.tikhub.io/llms.txt
  4. «TikHub API» (страница Swagger), TikHub, дата обращения: 2026-11-06, https://api.tikhub.io/
  5. openapi.json (V5.3.2, 1 058 путей), TikHub, просмотрено 2026-11-06 00:16 SGT, https://api.tikhub.io/openapi.json
  6. Прайс-лист get_all_endpoints_info (1 471 эндпоинт с указанной ценой, поле rate_limit), TikHub, просмотрено 2026-11-06 00:18 SGT, https://api.tikhub.io/api/v1/tikhub/user/get_all_endpoints_info
  7. Эндпоинт health/check, TikHub, запросы 2026-11-06 00:20–00:26 SGT, https://api.tikhub.io/api/v1/health/check
  8. «Pricing» (скидки за объём, тарифы по RPS, минимальное пополнение баланса), TikHub, дата обращения: 2026-11-06, https://tikhub.io/pricing
  9. «Tutorials & FAQ» (до 100 ключей на пользователя, коды состояния), TikHub, дата обращения: 2026-11-06, https://tikhub.io/tutorials
  10. «Getting Started», TikHub, дата обращения: 2026-11-06, https://tikhub.io/getting-started
  11. «MCP Integration Guide», TikHub, дата обращения: 2026-11-06, https://tikhub.io/mcp
  12. «MCP platforms» (число инструментов по платформам), TikHub, дата обращения: 2026-11-06, https://mcp.tikhub.io/platforms
  13. llms.txt (основной сайт), TikHub, дата обращения: 2026-11-06, https://tikhub.io/llms.txt
  14. tikhub 2.2.0, PyPI, дата выпуска: 2026-10-03, https://pypi.org/project/tikhub/
  15. tikhub 1.13.0 (Scopes, Expire Date, Status text), PyPI, дата выпуска: 2024-12-05, https://pypi.org/project/tikhub/1.13.0/
  16. TikHub-API-Python-SDK, GitHub TikHub, дата обращения: 2026-11-06, https://github.com/TikHub/TikHub-API-Python-SDK
  17. tikhub-plugin (v1.1.0), GitHub TikHub, дата выпуска: 2026-06-15, https://github.com/TikHub/tikhub-plugin
  18. tikhub-plugin .mcp.json, GitHub TikHub, дата обращения: 2026-11-06, https://github.com/TikHub/tikhub-plugin/blob/main/.mcp.json
  19. Репозиторий tikhub_api_skill, GitHub liangdabiao, дата обращения: 2026-11-06, https://github.com/liangdabiao/tikhub_api_skill
  20. SKILL.md (95b2a10), GitHub liangdabiao, версия от 2026-07-08, https://github.com/liangdabiao/tikhub_api_skill/blob/95b2a10199b77d461a2108785eb2c03569bc28c9/.claude/skills/tikhub-api-helper/SKILL.md
  21. api_client.py (95b2a10), GitHub liangdabiao, версия от 2026-07-08, https://github.com/liangdabiao/tikhub_api_skill/blob/95b2a10199b77d461a2108785eb2c03569bc28c9/.claude/skills/tikhub-api-helper/api_client.py
  22. api_searcher.py (95b2a10), GitHub liangdabiao, версия от 2026-07-08, https://github.com/liangdabiao/tikhub_api_skill/blob/95b2a10199b77d461a2108785eb2c03569bc28c9/.claude/skills/tikhub-api-helper/api_searcher.py
  23. tikhub-api-helper, LobeHub Skills Marketplace, дата обращения: 2026-11-06, https://lobehub.com/skills/liangdabiao-tikhub_api_skill-tikhub-api-helper
  24. «TikHub API Skill», Shyft, дата обращения: 2026-11-06, https://shyft.ai/skills/tikhub-api-skill
  25. «Tikhub Skill by zeenie-ai», TypingMind, дата обращения: 2026-11-06, https://www.typingmind.com/skills/zeenie-ai-tikhub-skill
  26. Исходный код tikhub-skill в OpenCompany, GitHub zeenie-ai, дата обращения: 2026-11-06, https://github.com/zeenie-ai/OpenCompany/tree/main/server/skills/web_agent/tikhub-skill
  27. «Extend Claude with skills», документация Claude Code, дата обращения: 2026-11-06, https://code.claude.com/docs/en/skills
  28. «Connect Claude Code to tools via MCP», документация Claude Code, дата обращения: 2026-11-06, https://code.claude.com/docs/en/mcp
  29. «Donating Agent Skills to the Agentic AI Foundation», Anthropic, 2026-10-22, https://www.anthropic.com/news/donating-agent-skills-to-the-agentic-ai-foundation
  30. «Agentic AI Foundation Announces Four New Projects», Linux Foundation, 2026-10-22, https://www.linuxfoundation.org/press/agentic-ai-foundation-announces-four-new-projects-agent-skills-open-responses-openenv-and-opensandbox
  31. «Authorization» (версия 2026-07-28), спецификация Model Context Protocol, дата обращения: 2026-11-06, https://modelcontextprotocol.io/specification/2026-07-28/basic/authorization
  32. RFC 6750 «The OAuth 2.0 Authorization Framework: Bearer Token Usage», IETF, 2012-10, https://datatracker.ietf.org/doc/html/rfc6750
  33. RFC 6585 «Additional HTTP Status Codes» (429), IETF, 2012-04, https://datatracker.ietf.org/doc/html/rfc6585
  34. «Error 1010», документация Cloudflare, обновлено 2026-10-24, https://developers.cloudflare.com/support/troubleshooting/http-status-codes/cloudflare-1xxx-errors/error-1010/
  35. «Browser Integrity Check», документация Cloudflare, дата обращения: 2026-11-06, https://developers.cloudflare.com/waf/tools/browser-integrity-check/
  36. «urllib.request», документация Python, дата обращения: 2026-11-06, https://docs.python.org/3/library/urllib.request.html
  37. «Removing sensitive data from a repository», документация GitHub, дата обращения: 2026-11-06, https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository
  38. «Push protection beyond predefined secret patterns», GitHub Changelog, 2026-10-28, https://github.blog/changelog/2026-10-28-push-protection-beyond-predefined-secret-patterns/
  39. «Scale agents securely with IAM Helper Agent Skills and MCP Tools», Google Cloud, 2026-10-27, https://cloud.google.com/blog/products/identity-security/scale-agents-securely-with-iam-helper-agent-skills-and-mcp-tools
  40. Каталог возможностей EveryInfra (TikTok, компактный формат), EveryInfra, дата обращения: 2026-11-06 00:18 SGT, https://api.everyinfra.com/api/v1/social/catalog?platform=tiktok&compact=1
  41. llms.txt EveryInfra, EveryInfra, дата обращения: 2026-11-06, https://api.everyinfra.com/llms.txt
  42. everyinfra-agent-plugins (v0.4.0), GitHub everyinfra, дата выпуска: 2026-10-21, https://github.com/everyinfra/everyinfra-agent-plugins
  43. analysis-skills v0.4.1, GitHub everyinfra, дата выпуска: 2026-10-15, https://github.com/everyinfra/analysis-skills/releases/tag/v0.4.1
  44. everyinfra 0.3.0, PyPI, дата выпуска: 2026-11-01, https://pypi.org/project/everyinfra/

Справка BL-98