Интеграция Instagram API
Socialift — Python SDK для Instagram API. Он поддерживает оба способа подключения: Instagram Login (без страницы Facebook) и через страницу Facebook. OAuth и обновление токена, диалоги Direct, публикация фото, Reels и каруселей, комментарии, статистика и проверка подписи вебхуков — в одном SDK; appsecret_proof, повторы и токены страниц обрабатываются автоматически.
Обновлено:
Что такое Instagram API и зачем он нужен
Instagram API — интерфейс Meta, через который приложение публикует посты, модерирует комментарии, отвечает в Direct и получает статистику от имени профессионального аккаунта Instagram (Business или Creator). Личные аккаунты не поддерживаются. Страница Facebook нужна только при подключении через Facebook Login; вариант с Instagram Login работает без страницы.
На практике компании используют Instagram API для трёх задач: автопубликация контента, перенос переписки с клиентом в CRM или службу поддержки, и сбор данных по рекламе и заявкам.
Подключиться можно двумя способами. В Instagram Login пользователь входит через Instagram, запросы идут на graph.instagram.com, страница Facebook не нужна. В Facebook Login нужны приложение Meta, OAuth пользователя, список страниц, токен страницы и ID привязанного Instagram-аккаунта. В SDK первый вариант — Instagram(app_id, app_secret), второй — fb.pages() + Instagram.via_facebook(...).
Что поддерживается на стороне Instagram
Всё перечисленное доступно в SDK сразу — глубокое знание Graph API не требуется.
OAuth и токены
Ссылка входа, обмен кода на токен (exchange_code сразу возвращает 60-дневный токен), продление токена Instagram Login через refresh_token. В варианте через Facebook токены страниц приходят из fb.pages(), доступ отзывается через fb.revoke().
Диалоги Direct
Список диалогов и сообщений. Для каждого собеседника — полный профиль: имя, число подписчиков, подписан ли он на бизнес.
Посты и комментарии
Публикация фото, видео и Reels (publish), карусели из 2–10 фото (publish_carousel), чтение постов; ответ на комментарии, скрытие и удаление. Файл передаётся открытой HTTPS-ссылкой.
Инсайты и демография
Метрики аккаунта (insights, период до 30 дней), статистика постов (media_insights) и демография подписчиков (demographics: возраст/пол, город, страна). Часть метрик Meta не отдаёт аккаунтам, у которых меньше 100 подписчиков.
Lead Ads и реклама
Лид-формы из рекламы в Instagram читаются через страницу Facebook: fb.lead_forms, fb.leads, fb.lead. Вебхук leadgen приходит на ваш endpoint — вы сами забираете лид, приводите его через leads.normalize() и пишете в CRM. Ads.boost_post превращает пост Instagram в рекламу в статусе PAUSED.
Вебхуки
Проверка подписи X-Hub-Signature-256 (verify_request), разбор событий (parse_events) и ключ дедупликации для повторных доставок (dedupe_key).
Первый запрос — от OAuth до Instagram-аккаунта
При входе через Facebook Login страницы пользователя и связанные с ними Instagram-аккаунты возвращаются одним вызовом.
import asyncio
from socialift import Facebook
async def main(code: str):
# FACEBOOK_APP_ID, FACEBOOK_APP_SECRET, SOCIALIFT_LICENSE_KEY
async with Facebook.from_env() as fb:
token = await fb.exchange_code(code, redirect_uri="https://ваш-домен/cb")
for page in await fb.pages(token.access_token):
print(page.name, "→ instagram:", page.instagram_username)
asyncio.run(main(code="...")) # ?code= from the OAuth callbackЗдесь три вызова Graph API (код → токен, токен → страницы, страница → IG-аккаунт) собраны в один интерфейс. Подпись appsecret_proof добавляется автоматически.
В варианте Instagram Login (без страницы) тот же поток работает через Instagram.from_env() (INSTAGRAM_APP_ID, INSTAGRAM_APP_SECRET) и ig.exchange_code(...).
Чтение диалогов Direct
Conversations API отдаёт об участнике только ID и username. conversations() дополняет каждого собеседника данными User Profile API — имя, число подписчиков, статус подписки; запросы идут параллельно, до 8 одновременно.
import asyncio, os
from socialift import Instagram
async def main(page_token: str):
async with Instagram.via_facebook(app_secret=os.environ["FACEBOOK_APP_SECRET"]) as ig:
chats = await ig.conversations(page_token, page_id="1111", ig_user_id="2222")
for chat in chats["data"]:
c = chat["contact"]
if c:
print(c.get("name"), c.get("follower_count"), "подписан:", c.get("is_user_follow_business"))
asyncio.run(main("PAGE_TOKEN"))Поле is_user_follow_business важно для отдела продаж: подписан ли написавший на ваш аккаунт — это определяет приоритет ответа.
Как опубликовать историю (Story) через API
История отличается от обычного поста ровно одним: в контейнер добавляется media_type=STORIES, а публикуется она тем же media_publish. Подписи нет — текст caption в истории не показывается. Требования Meta: фото JPEG до 8 МБ, рекомендуемое соотношение 9:16; видео MOV или MP4, 3–60 секунд, до 100 МБ.
import asyncio, os
from socialift import Instagram
async def main(page_token: str):
async with Instagram.via_facebook(app_secret=os.environ["FACEBOOK_APP_SECRET"]) as ig:
story = await ig.publish_story(page_token, ig_user_id="2222",
image_url="https://cdn.ваш-домен/story.jpg")
print(story["media_id"])
live = await ig.stories(page_token, ig_user_id="2222", limit=25)
print(len(live), "историй сейчас активно")
asyncio.run(main("PAGE_TOKEN"))Разрешения: для Instagram Login — instagram_business_content_publish, для Facebook Login — instagram_content_publish и pages_read_engagement. Для видео SDK ждёт готовности контейнера, длительность ожидания задаёт wait_timeout.
Список активных историй (ig.stories) работает только с токеном Facebook Login: Meta помечает этот edge как «Instagram API with Facebook Login only», а в потоке Instagram Login его нет вовсе. Возвращаются только последние 24 часа — архива и «актуального» (highlights) в API нет.
Дневной лимит публикаций распространяется и на истории, потому что они выходят через тот же media_publish. Документация Meta здесь сама себе противоречит: на общей странице одно число, на страницах media_publish и content_publishing_limit — другое. Не угадывайте: остаток квоты отдаёт GET /{ig-user-id}/content_publishing_limit.
Подключение Instagram — четыре шага
Подготовьте аккаунт Instagram
Переведите аккаунт в тип Business или Creator. Привязка к странице Facebook обязательна только для Facebook Login; Instagram Login (
Instagram(app_id, app_secret)) работает без страницы.Создайте приложение Facebook
Создайте приложение в Meta for Developers и запрашивайте только те разрешения, которые используете. Для Instagram Login: instagram_business_basic и по задаче instagram_business_content_publish, instagram_business_manage_comments, instagram_business_manage_messages, instagram_business_manage_insights. Для Facebook Login: pages_show_list, pages_read_engagement, instagram_basic и по задаче instagram_content_publish, instagram_manage_comments, instagram_manage_messages, instagram_manage_insights (для лидов — leads_retrieval). Если приложение обслуживает чужие аккаунты, для Advanced Access нужны App Review и Business Verification.
Получите токен Socialift
Войдите через Google или email, в разделе «Tokenlar» (токены) кабинета нажмите «Yangi token» (новый токен) и скопируйте ключ, начинающийся с slk_. Первый месяц бесплатно.
Подключите SDK
pip install socialift, положите ключ в переменную окружения SOCIALIFT_LICENSE_KEY и отправьте первый запрос.
Возможности Instagram, Facebook, LinkedIn, TikTok и Telegram
Все платформы работают в одном SDK и под единой моделью ошибок.
| Возможность | TikTok | Telegram | |||
|---|---|---|---|---|---|
| Подключение — OAuth, в Telegram код или токен бота | есть | есть | есть | есть | есть |
| Данные профиля | есть | есть | есть | есть | есть |
| Посты — чтение и публикация | есть | есть | есть | есть | есть |
| Удаление поста | нет | есть | есть | нет | есть |
| История (Story) — 24 часа | есть | есть | нет | нет | есть |
| Комментарии — ответ и скрытие | есть | есть | нет | есть | нет |
| Удаление комментария | есть | нет | нет | есть | нет |
| Чат и сообщения | есть | нет | нет | нет | есть |
| Статистика | есть | нет | нет | есть | есть |
| Демография подписчиков | есть | нет | нет | нет | нет |
| Управление группами и каналами | нет | нет | нет | нет | есть |
| Реклама и таргетинг | есть | есть | нет | нет | нет |
| Lead Ads — формы и заявки | есть | есть | нет | нет | нет |
| Вебхуки — подпись, события, дедуп | есть | есть | нет | есть | есть |
естьнетТаблицу можно прокрутить вбок
Примечания и ограничения
Socialift не поддерживает переписку и лид-формы LinkedIn (доступ к LinkedIn Lead Sync API выдаётся по отдельной заявке после проверки LinkedIn). Комментарии и дневные метрики TikTok требуют Business-аккаунта; Telegram не использует OAuth — подключение по коду или токену бота, вебхуки — для бота. Строка с историями требует уточнения: в Telegram истории живут на стороне аккаунта (MTProto) и доступны только аккаунту с Telegram Premium либо каналу с достаточным числом «бустов» — Bot API публиковать истории не умеет; LinkedIn Stories полностью отключены в 2021 году; Content Posting API TikTok даёт только видео- и фотопосты, эндпоинта для историй в нём нет.
Перед выходом в прод
Список ошибок, которые чаще всего встречаются в интеграциях с Instagram.
- Проверьте, что серверные запросы несут appsecret_proof: если в настройках приложения включён «Require App Secret», без него Meta отклонит запрос (SDK добавляет подпись сам, если передан app_secret).
- Запросы Instagram (кроме сообщений Direct) подпадают под лимиты Business Use Case: следите за заголовком X-Business-Use-Case-Usage и при RateLimitError повторяйте с экспоненциальной задержкой.
- Считайте подпись вебхука по сырому (raw) телу запроса — после повторной сериализации JSON подпись не совпадёт.
- Одно событие может прийти несколько раз: Meta не даёт ID события, поэтому стройте ключ из содержимого (mid, leadgen_id, comment_id — в SDK
dedupe_key) и храните его в уникальном столбце. - Токен Instagram Login живёт 60 дней: регулярно продлевайте через
refresh_tokenтокен старше 24 часов, пока он не истёк. Токен страницы из долгоживущего пользовательского токена бессрочный, но аннулируется в ряде случаев (например, при отзыве доступа). - Если пользователь отозвал доступ, приходит AuthError — покажите это состояние в интерфейсе CRM.
Частые вопросы
Можно ли подключиться к Instagram API с личного аккаунта?
Нет. Instagram API работает только с профессиональными аккаунтами (Business или Creator). Привязка к странице Facebook нужна только для Facebook Login; при Instagram Login страница не требуется.
Можно ли читать и отправлять сообщения Instagram Direct через API?
Да. Для Instagram Login нужны instagram_business_basic и instagram_business_manage_messages, для Facebook Login — instagram_basic, instagram_manage_messages и pages_show_list. App Review требуется только для чужих аккаунтов (Advanced Access). Диалог начинает только пользователь; Socialift возвращает диалоги с профилем собеседника.
Instagram API бесплатный?
Meta не берёт отдельную плату за Graph API, но ограничивает количество запросов. Socialift работает по лицензионному ключу: первый месяц бесплатно, и в это время открыты все возможности SDK — публикация, Direct, статистика, реклама и Lead Ads. Затем токен продлевается 30-дневными периодами с баланса, цена указана в кабинете, а возможности зависят от плана токена — точный список показывает «Tekshirish va muhitlar» (проверка и окружения) в кабинете. Playground в кабинете работает независимо от плана.
Можно ли публиковать истории (Stories) Instagram через API?
Да. Контейнер создаётся с media_type=STORIES и публикуется через media_publish; в SDK это один вызов — ig.publish_story(token, ig_user_id=..., image_url=...). Подпись не принимается: текста caption в истории не видно. Требования Meta — фото JPEG до 8 МБ, видео MOV или MP4 длительностью 3–60 секунд и до 100 МБ, рекомендуемое соотношение 9:16. История исчезает через 24 часа, а список активных историй (ig.stories) доступен только с токеном Facebook Login.
Какие ограничения есть у Instagram API?
Основные ограничения: 24-часовое окно переписки, лимиты частоты запросов, App Review (Advanced Access) для чужих аккаунтов и работа только с профессиональными аккаунтами (Business или Creator). Эти ограничения установлены Meta, и ни один SDK их не снимает.
Socialift — официальный партнёр Meta?
Нет. Socialift — независимый слой интеграции поверх публичного Graph API. Мы интегрируемся с Instagram, но не имеем статуса официального партнёра Meta.
Источники
Связанные страницы
Начните интеграцию Instagram сегодня
Войдите через Google или email, получите токен за минуту и отправьте первый запрос в Graph API.
Получить бесплатный токен →