Перейти к содержимому
Socialift
Техническое руководство

Лимиты API соцсетей: Meta, TikTok, Telegram и LinkedIn

Каждая платформа считает лимиты по-своему. Meta — по приложению, пользователю и бизнес-объекту (BUC) в часовом или суточном окне и показывает остаток в заголовках ответа. TikTok — отдельно для каждого endpoint в скользящем минутном окне. Telegram-бот — скорость на чат и retry_after в ответе 429. LinkedIn — суточные лимиты приложения и участника. Надёжное решение: вебхуки, очередь, кеш и backoff с jitter.

Обновлено:

Что такое лимит API и почему «подождать и повторить» мало?

Лимит — объём запросов, который платформа принимает за окно (секунда, минута, час, 24 часа или сутки). При превышении Meta возвращает коды 4/17/32/613 или 800xx, TikTok, Telegram Bot API и LinkedIn — HTTP 429, MTProto — FLOOD_WAIT. Если окно часовое или суточное, быстрые повторы только сжигают квоту — нагрузкой нужно управлять очередью.

Модель лимитов по платформам

Цифры — из официальной документации (2026-09-17). Многие значения — формулы или значения по умолчанию: реальная квота вашего приложения может отличаться.

Модель лимитов по платформам — Таблица возможностей по платформам
Платформа / APIКак считаетсяОкноПри превышении
Meta, лимит платформыПриложение: 200 × число пользователей; лимит пользователя не публикуется1 часКод 4 (приложение), 17 (пользователь)
Facebook Pages (BUC)4800 × число вовлечённых пользователей страницы24 часа80001 (токен страницы/system user); 32 (токен пользователя/приложения)
Instagram Platform (BUC)4800 × число показов (impressions)24 часа80002
Публикации Instagram100 публикаций через API на аккаунт; карусель — одна публикацияСкользящие 24 часаПроверка через content_publishing_limit
Сообщения InstagramSend API: текст 100/с, аудио/видео 10/с; Conversations API 2/с — на профессиональный аккаунт1 секунданет
Lead Ads (BUC)4800 × число созданных лидов24 часа80005
Marketing API (BUC)Ads Management: 300 + 40 × активные объявления (Standard Access)1 час80004
TikTok API v2Отдельно на каждый endpoint; user/info, video/list, video/query — 600Скользящая минутаHTTP 429, rate_limit_exceeded
Публикации TikTokvideo/init — 6/мин на токен; status/fetch — 30/мин; обычно ~15 постов в день на автораМинута / 24 часаspam_risk_too_many_posts
Telegram Bot API~1 сообщение/с в один чат; 20 сообщений/мин в группу; рассылка ~30 сообщений/сСекунда / минутаHTTP 429 + retry_after
Telegram MTProtoЦифры не публикуютсянет420 FLOOD_WAIT_X
LinkedInСуточные лимиты приложения и участника; цифры в Developer PortalСутки (сброс в 00:00 UTC)HTTP 429

естьнетТаблицу можно прокрутить вбок

Что означают ошибки Facebook API 4, 17, 32, 613 и 800xx?

Что означают ошибки Facebook API 4, 17, 32, 613 и 800xx? — Таблица возможностей по платформам
КодЗначениеЧто делать
4Лимит на уровне приложенияСледите за X-App-Usage, приостановите фоновые запросы
17Лимит на уровне пользователяЗамедлите очередь по этому токену
32Лимит Pages API (с токеном пользователя или приложения)Используйте токен страницы и следите за BUC-заголовком
613Пользовательский лимит; подкод 1996 — резкое изменение трафикаРаспределяйте запросы равномерно во времени
80001 / 80002BUC: Pages / InstagramЖдите estimated_time_to_regain_access по этому объекту
80004 / 80000BUC: Ads Management / Ads InsightsЗапрашивайте отчёты реже и крупными периодами
80005 / 80006BUC: LeadGen / MessengerОпирайтесь на вебхуки, уберите опрос

Источник: документация Meta Graph API Rate Limiting и Error Handling.

Заголовки Meta: X-App-Usage и X-Business-Use-Case-Usage

Meta предупреждает заранее. В X-App-Usage — call_count, total_cputime и total_time: проценты использованной квоты приложения. X-Business-Use-Case-Usage — JSON с ключами по ID бизнес-объекта: у каждого элемента type (pages, instagram, ads_management, ...), те же три процента и estimated_time_to_regain_access — через сколько минут ограничение снимется.

Когда значение доходит до 100, запросы могут ограничиваться. Практическое правило: с 75–80% замедляйте фоновые задачи, с 95% — останавливайте. Если к запросу применимы оба типа лимитов, действует BUC. Несколько ID в одном запросе считаются отдельными вызовами.

Старый заголовок Marketing API X-Ad-Account-Usage в документации относится к старым версиям (v3.3 и ранее); в актуальных версиях ориентируйтесь на BUC-заголовок.

Чтение BUC-заголовка (чистый aiohttp)

SDK Socialift не отдаёт заголовки в объекте ошибки, поэтому для упреждающего контроля квоты ответ Graph API можно проверять так.

buc_usage.py
import json
import aiohttp

async def graph_get(session: aiohttp.ClientSession, url: str, params: dict) -> dict:
    async with session.get(url, params=params) as r:
        usage = json.loads(r.headers.get("X-Business-Use-Case-Usage") or "{}")
        for object_id, items in usage.items():
            for u in items:
                peak = max(u.get("call_count", 0), u.get("total_cputime", 0), u.get("total_time", 0))
                if peak >= 80:
                    await slow_down(object_id, u.get("type"),
                                    minutes=u.get("estimated_time_to_regain_access", 0))
        return await r.json()

slow_down — ваша функция: ставит на паузу очередь этой страницы или Instagram-аккаунта.

Лимиты Instagram API: 100 публикаций и скорость сообщений

Вызовы Instagram Platform считаются по BUC: 4800 × число показов аккаунта за 24 часа. У небольшого аккаунта и квота небольшая — поэтому статистику кешируйте, а не запрашивайте каждую минуту.

Для публикаций есть отдельный лимит: аккаунт может опубликовать через API до 100 постов за скользящие 24 часа, карусель считается одной публикацией. Текущее состояние показывает GET /<IG_ID>/content_publishing_limit. В SDK публикация — ig.publish(...) и ig.publish_carousel(...).

Секундные лимиты Direct: сообщения с текстом, ссылками, реакциями и стикерами — 100 вызовов/с на профессиональный аккаунт, аудио и видео — 10/с, Conversations API — 2/с. Вместо частого чтения списка диалогов опирайтесь на вебхук messages.

TikTok API rate limit: лимиты endpoint'ов и дневной лимит публикаций

TikTok считает лимит отдельно для каждого endpoint в скользящем окне длиной в минуту. Значение по умолчанию в документации: /v2/user/info/, /v2/video/query/ и /v2/video/list/ — 600. При превышении приходит HTTP 429 и rate_limit_exceeded. Если нужно больше, TikTok предлагает обратиться через страницу поддержки.

У Content Posting API свои лимиты: /v2/post/publish/video/init/ — 6 запросов в минуту на user access token, creator_info — 20, status/fetch — 30. Кроме того, для Direct Post есть дневной лимит на автора (в документации — обычно около 15 постов в день, общий для всех API-клиентов); при достижении возвращается spam_risk_too_many_posts — повтором это не решить, переносите на завтра.

Клиент без аудита может публиковать от имени не более 5 пользователей за 24 часа и только с видимостью SELF_ONLY. В SDK tt.creator_info(token) получает настройки автора перед публикацией, а tt.wait_publish(...) ждёт статус.

Лимиты Telegram Bot API: 429, retry_after и рассылки

В FAQ Telegram Bot API: не отправляйте больше одного сообщения в секунду в один чат (короткие всплески допускаются, но в итоге начнутся ошибки 429); в группе бот не может отправлять больше 20 сообщений в минуту; массовая рассылка — около 30 сообщений в секунду.

При превышении ответ содержит ok: false, error_code: 429 и parameters.retry_after — сколько секунд ждать. Повторять раньше бессмысленно. Рассылку на большую аудиторию ставьте в очередь и отправляйте медленнее 30 сообщений в секунду.

Если в BotFather включить платные рассылки (paid broadcasts), бот может отправлять до 1000 сообщений в секунду: каждое сообщение сверх бесплатных 30 в секунду стоит 0.1 Telegram Stars. Для этого нужно не менее 100 000 Stars на балансе бота и не менее 100 000 активных пользователей в месяц.

Telegram-аккаунт (MTProto) цифры лимитов не публикует: при превышении приходит 420 FLOOD и FLOOD_WAIT_X (ждать X секунд). TelegramAccount в SDK превращает это в RateLimitError с retry_after, но сам не ждёт — решение за вами.

Где смотреть лимиты LinkedIn API?

У LinkedIn два суточных лимита: лимит приложения (сколько вызовов всё приложение делает за день) и лимит участника (сколько один участник через это приложение). Они сбрасываются ежедневно в 00:00 UTC, при превышении возвращается 429.

Стандартные лимиты в документации не публикуются: их видно в Developer Portal на вкладке Analytics приложения (только для endpoint'ов, вызванных в этот день хотя бы раз). При превышении 75% лимита приложения администраторам приходит письмо, но с задержкой 1–2 часа.

В development tier Community Management API лимит очень мал: 500 вызовов на приложение и 100 на участника за 24 часа. Для продакшена нужен standard tier.

Интеграция, устойчивая к лимитам: 6 шагов

  1. Вебхуки вместо опроса

    Комментарии, сообщения, лиды и статусы публикаций получайте вебхуками (Meta, TikTok, Telegram setWebhook). Опрос впустую тратит квоту.

  2. Очередь на токен и аккаунт

    Лимиты считаются по токену, странице или аккаунту — дайте каждому свою очередь и ограничение параллелизма.

  3. Кешируйте

    Профили, списки страниц, статистику храните с TTL; в запросе просите только нужные поля.

  4. Экспоненциальный backoff с jitter

    При временной ошибке задержка удваивается и получает случайную добавку — чтобы воркеры не возвращались одновременно.

  5. Уважайте время платформы

    Telegram retry_after, Meta estimated_time_to_regain_access, MTProto FLOOD_WAIT важнее формулы backoff.

  6. Отделяйте неповторяемые ошибки

    Дневной лимит публикаций, нехватка разрешений (PermissionError) или недействительный токен (AuthError) — не возвращайте в очередь, сохраните статус и уведомите.

Socialift SDK: RetryPolicy и RateLimitError

По умолчанию SDK делает всего 3 попытки. В фоновом воркере удобнее уменьшить число попыток внутри SDK и отдать решение об ожидании очереди.

publish_worker.py
import os
from socialift import ApiError, Instagram, RateLimitError, RetryPolicy

policy = RetryPolicy(attempts=2, backoff_base=1.0, backoff_max=20.0, jitter=True)

async def publish_job(job: dict) -> None:
    async with Instagram.via_facebook(app_secret=os.environ["META_APP_SECRET"],
                                      retry=policy) as ig:
        try:
            await ig.publish(job["page_token"], ig_user_id=job["ig_user_id"],
                             image_url=job["image_url"], caption=job["caption"])
        except RateLimitError as exc:
            await requeue(job, delay=exc.retry_after or 15 * 60)
        except ApiError as exc:
            if exc.code in (80001, 80002):  # BUC — окно 24 часа
                await requeue(job, delay=60 * 60)
            else:
                raise

RetryPolicy по умолчанию: 3 попытки, задержка min(0.5 × 2^(n−1), 30) секунд со случайным множителем 0.5–1.5 (jitter). Повтор срабатывает на RateLimitError, HTTP 429/500/502/503/504 и сетевые ошибки; если известен retry_after, SDK ждёт именно столько.

SDK превращает коды Meta 4, 17, 32, 613 и HTTP 429 в RateLimitError. Коды BUC (80001, 80002, ...) в этот список не входят — проверяйте их по ApiError.code.

← Назад в блог

Частые вопросы

Какой лимит у Instagram API?

Вызовы Instagram Platform считаются по BUC: 4800 × число показов аккаунта за 24 часа. Для публикаций отдельный лимит: до 100 постов через API за скользящие 24 часа, карусель считается одной публикацией.

Что значат ошибки Facebook API 4, 17, 32 и 613?

4 — лимит приложения, 17 — лимит пользователя, 32 — лимит Pages API при токене пользователя или приложения, 613 — пользовательский лимит (подкод 1996 — резкое изменение трафика). Все они временные: снизьте интенсивность и следите за процентами в заголовках.

Сколько сообщений в секунду может отправлять Telegram-бот?

По официальному FAQ — не больше одного в секунду в один чат, 20 в минуту в группу и около 30 в секунду при рассылке. С платными рассылками — до 1000 в секунду, каждое сообщение сверх бесплатных 30 стоит 0.1 Stars.

Какие лимиты у TikTok API?

Скользящее минутное окно на каждый endpoint: для user/info, video/list и video/query по умолчанию 600. Инициализация публикации (video/init) — 6 в минуту на токен. При превышении — HTTP 429 и rate_limit_exceeded.

Где посмотреть лимиты LinkedIn API?

Стандартные лимиты в документации не публикуются. В Developer Portal на вкладке Analytics приложения видны суточные лимиты и расход по endpoint'ам. Сброс — ежедневно в 00:00 UTC.

Можно ли сразу повторить запрос после 429?

Нет. Если платформа сообщила время ожидания (retry_after, estimated_time_to_regain_access), ждите его. Если нет — используйте экспоненциальный backoff с jitter. В часовом или суточном окне быстрые повторы только сжигают квоту.

Источники

  1. Meta — Graph API Rate Limiting
  2. Meta — Instagram Content Publishing
  3. TikTok — API v2 Rate Limits
  4. TikTok — Content Sharing Guidelines
  5. Telegram — Bots FAQ
  6. LinkedIn — API Rate Limiting

Связанные страницы