Вы решили автоматизировать публикации в Instagram: подключаете сервис или просите разработчика написать интеграцию. И тут начинаются вопросы, на которые лендинги отвечают одинаково бодрым «поддерживаем всё»: а Stories можно? А музыку в Reels? А PNG с прозрачным фоном? А поправить подпись после публикации?
Ответы есть, но они разбросаны по англоязычной документации Meta и меняются раз в несколько месяцев. Ниже — сводка на 2026 год: что Instagram Content Publishing API реально умеет, точные требования к файлам, как устроена публикация «под капотом», чего нет в принципе и как читать ошибки. Разницу между официальным API и «серыми» сервисами с паролем мы уже разбирали в базовой статье про автопостинг в Instagram — здесь уровень глубже.
Кому API доступен и что нужно подключить
Публиковать через API могут только профессиональные аккаунты — Business или Creator. Личный профиль не подключить никак, это ограничение Meta, а не конкретного сервиса.
Способов авторизации два:
- Instagram Login (появился в 2024 году). Аккаунт подключается напрямую, страница Facebook не нужна. Нужные права:
instagram_business_basicиinstagram_business_content_publish. - Facebook Login. Классический путь через привязку Instagram к странице Facebook. Права:
instagram_basic,instagram_content_publish, плюсpages_show_listиpages_read_engagement.
Для собственной интеграции нужно приложение в Meta for Developers. Пока оно в режиме разработки, публиковать могут только аккаунты с ролью в приложении — для своего магазина или школы этого достаточно, App Review не нужен. Сервису для клиентов проверку Meta придётся пройти: это недели переписки и запись скринкаста.
Токены доступа живут 60 дней, после чего их нужно обновлять. Нормальный сервис делает это сам; если самописная интеграция «внезапно перестала постить» через два месяца — почти наверняка истёк токен.
Как устроена публикация: контейнер, потом публикация
Через API пост не «отправляется» одним запросом. Всегда два шага:
- Создание контейнера. Запрос
POST /{ig-user-id}/mediaс ссылкой на файл, подписью и параметрами. В ответ приходит ID контейнера. - Публикация. Запрос
POST /{ig-user-id}/media_publishс этим ID. Только после него пост появляется в ленте.
Для фото шаги идут подряд, весь процесс укладывается в несколько секунд. Для видео и Reels между ними есть обработка: контейнер получает статус IN_PROGRESS, и публиковать его можно только после FINISHED. Обычно это 30–120 секунд, у длинных Reels дольше. Статусы ERROR и EXPIRED означают, что публиковать нечего: контейнер живёт 24 часа, потом его нужно создавать заново.
Главное практическое следствие: файл нельзя загрузить напрямую. API принимает только публичную ссылку — картинка или видео должны лежать на сервере, куда Instagram придёт по прямому URL. Ссылка «поделиться» из Google Диска не подходит. Исключение одно: для Reels есть resumable upload, когда файл передаётся частями. Именно поэтому любой сервис автопостинга сначала копирует ваши медиа к себе в хранилище и уже оттуда отдаёт Instagram. Спросите, где лежат файлы и сколько хранятся — это нормальный вопрос.
Что можно публиковать и точные требования к файлам
| Формат | Файл | Требования |
|---|---|---|
| Фото в ленту | только JPEG | до 8 МБ, соотношение сторон от 4:5 до 1.91:1, ширина 320–1440 px, цветовое пространство sRGB |
| Reels | MP4 или MOV | кодек H.264 или HEVC, звук AAC, 23–60 fps, от 3 секунд до 15 минут, до 1 ГБ, рекомендуемое 9:16 |
| Карусель | 2–10 элементов | фото и видео можно смешивать; видео в карусели — до 60 секунд |
| Stories | фото или видео | видео до 60 секунд, вертикаль 9:16 |
Два момента, о которые спотыкаются чаще всего. Первый: PNG и HEIC не принимаются — фото с айфона в формате HEIC нужно конвертировать, и это должен делать либо сервис, либо вы. Второй: квадрат 1:1 проходит, а вот вертикальное 2:3 (стандартная пропорция фотокамеры) — нет, его придётся кадрировать до 4:5.
Подпись: до 2200 знаков, до 30 хэштегов, до 20 упоминаний через @. Кроме подписи через API можно передать:
- alt-текст к фото (поле
alt_text) — полезно и для доступности, и для поиска; - геометку через
location_id(это ID страницы места в Facebook, не координаты); - отметки людей на фото с координатами x/y (
user_tags); - соавторов поста (
collaborators, до 3 аккаунтов) — приглашение уйдёт им в приложение, и пост появится в их профиле после подтверждения; - обложку для Reels — либо своей картинкой (
cover_url), либо кадром на нужной секунде (thumb_offset), и флагshare_to_feed, показывать ли ролик в основной ленте.
Если сервис на лендинге пишет «поддерживаем Reels», но обложку выбрать нельзя — это первое, что стоит проверить на пробном периоде. Обложка в профиле решает, кликнут ли по ролику через месяц.
Лимиты: 50 постов и 200 вызовов
50 публикаций за скользящие 24 часа на аккаунт. Именно скользящие: если вы опубликовали 50 постов между 10:00 и 23:00, лимит не «обнулится в полночь», а будет освобождаться по одному по мере того, как каждому посту исполнится 24 часа. Карусель — одна публикация. Stories считаются в тот же лимит. Проверить остаток можно запросом GET /{ig-user-id}/content_publishing_limit — он вернёт quota_usage.
Для одного аккаунта 50 в сутки — потолок, до которого дотягиваются разве что новостные паблики.
Лимит вызовов — около 200 запросов в час на каждого подключённого пользователя. Для публикаций это почти неважно: один пост стоит 2–3 вызова (создать контейнер, проверить статус, опубликовать). А вот для аналитики важно: сервис, который каждые пять минут обновляет статистику по 30 постам, упрётся в этот лимит раньше, чем в лимит публикаций.
Чего через API нет, и никакой сервис это не обойдёт
Честный список на 2026 год. Если сервис обещает что-то из этого «через официальный API» — либо он делает это руками модератора, либо не через официальный API.
- Интерактив в Stories. Опросы, тесты, слайдеры, стикер со ссылкой, стикер с музыкой, упоминания стикером — всего этого нет. Через API Story — это просто картинка или видео. Текст «Свайпай вверх» придётся впечатать в макет.
- Музыка из библиотеки Instagram в Reels. Звук должен быть уже в файле, а значит — с правами на использование.
- Фильтры и эффекты. Обрабатывайте видео до загрузки.
- Редактирование и удаление. Опубликованный через API пост нельзя ни исправить, ни удалить через API — только руками в приложении. Опечатку в подписи проверяйте до публикации, а не после.
- Личные аккаунты. См. выше.
- Само расписание. API публикует «сейчас». Отложенная публикация — это очередь на стороне сервиса. Если сервер сервиса лёг в 19:00, пост в 19:00 не выйдет. Спросите, как устроены повторные попытки и придёт ли вам уведомление.
- Продвижение поста. Реклама — это отдельный Marketing API с другими правами и проверкой.
Что есть, но часто забывают: ответы на комментарии и их скрытие, чтение упоминаний и статистики по постам и аккаунту. На API строится не только публикация, но и модерация с аналитикой — как у сервисов из обзора автоматизации SMM.
Типичные ошибки и что они значат
Сообщения Graph API лаконичны, поэтому вот перевод самых частых:
- «Media type is not supported» — вы отдали PNG, HEIC, WebP или GIF. Конвертируйте в JPEG (фото) или MP4 (видео).
- «The aspect ratio is not supported» — пропорции вне диапазона 4:5–1.91:1. Кадрируйте.
- «Media URL is not accessible» — ссылка не публичная или редиректит. Откройте её в режиме инкогнито: если картинка не грузится сразу, Instagram её тоже не увидит.
- Статус
EXPIRED— между созданием контейнера и публикацией прошло больше 24 часов. Создайте заново. - Статус
ERRORу видео — чаще всего кодек (VP9, WebM), частота кадров выше 60 или битрейт выше 25 Мбит/с. Перекодируйте в H.264, 30 fps. - «Application request limit reached» — упёрлись в 50 постов за сутки или в лимит вызовов. Смотрите
content_publishing_limitи ждите. - «Invalid OAuth access token» — токен истёк или доступ отозван. Переподключите аккаунт.
Пример из практики: цветочный магазин в Ташкенте три недели «терял» каждый второй пост. Причина — фото загружали с айфона в HEIC, а сервис молча ронял их вместо конвертации. Смена сервиса решила проблему за вечер: не потому, что второй сервис «лучше», а потому, что он конвертирует и показывает ошибку словами.
Чек-лист при выборе сервиса автопостинга
Семь вопросов, которые стоит задать до оплаты или проверить на бесплатном тарифе:
- Подключение через OAuth, без пароля от Instagram? Если просят пароль — это не API.
- Конвертирует ли сервис HEIC/PNG в JPEG и кадрирует ли под 4:5 сам?
- Можно ли выбрать обложку Reels и отключить показ в ленте?
- Поддерживаются ли карусели с видео и Stories?
- Есть ли alt-текст, геометка и соавторы?
- Что происходит, если публикация упала: повтор, уведомление, куда оно приходит?
- Видно ли остаток лимита 50 постов и предупреждает ли сервис заранее?
Как не получить блокировку даже на официальном API — какие бывают чекпойнты, что Instagram считает подозрительным и как «прогревать» новый аккаунт — отдельная статья: автопостинг в Instagram без бана.
Repost21 работает с Instagram только через официальный Graph API: фото, видео, Reels с обложкой, карусели и Stories. Медиа конвертируются и хостятся на стороне сервиса, при ошибке публикации приходит уведомление в Telegram-бот, а ассистент Луна помогает с подписью до того, как её нельзя будет исправить. Что именно поддерживается для каждой площадки — в документации, а попробовать можно бесплатно.