Перейти к содержимому
Socialift
Платформа

Интеграция 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 не требуется.

01

OAuth и токены

Ссылка входа, обмен кода на токен (exchange_code сразу возвращает 60-дневный токен), продление токена Instagram Login через refresh_token. В варианте через Facebook токены страниц приходят из fb.pages(), доступ отзывается через fb.revoke().

02

Диалоги Direct

Список диалогов и сообщений. Для каждого собеседника — полный профиль: имя, число подписчиков, подписан ли он на бизнес.

03

Посты и комментарии

Публикация фото, видео и Reels (publish), карусели из 2–10 фото (publish_carousel), чтение постов; ответ на комментарии, скрытие и удаление. Файл передаётся открытой HTTPS-ссылкой.

04

Инсайты и демография

Метрики аккаунта (insights, период до 30 дней), статистика постов (media_insights) и демография подписчиков (demographics: возраст/пол, город, страна). Часть метрик Meta не отдаёт аккаунтам, у которых меньше 100 подписчиков.

05

Lead Ads и реклама

Лид-формы из рекламы в Instagram читаются через страницу Facebook: fb.lead_forms, fb.leads, fb.lead. Вебхук leadgen приходит на ваш endpoint — вы сами забираете лид, приводите его через leads.normalize() и пишете в CRM. Ads.boost_post превращает пост Instagram в рекламу в статусе PAUSED.

06

Вебхуки

Проверка подписи X-Hub-Signature-256 (verify_request), разбор событий (parse_events) и ключ дедупликации для повторных доставок (dedupe_key).

Первый запрос — от OAuth до Instagram-аккаунта

При входе через Facebook Login страницы пользователя и связанные с ними Instagram-аккаунты возвращаются одним вызовом.

quickstart.py
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 одновременно.

conversations.py
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 МБ.

story.py
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 — четыре шага

  1. Подготовьте аккаунт Instagram

    Переведите аккаунт в тип Business или Creator. Привязка к странице Facebook обязательна только для Facebook Login; Instagram Login (Instagram(app_id, app_secret)) работает без страницы.

  2. Создайте приложение 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.

  3. Получите токен Socialift

    Войдите через Google или email, в разделе «Tokenlar» (токены) кабинета нажмите «Yangi token» (новый токен) и скопируйте ключ, начинающийся с slk_. Первый месяц бесплатно.

  4. Подключите SDK

    pip install socialift, положите ключ в переменную окружения SOCIALIFT_LICENSE_KEY и отправьте первый запрос.

Возможности Instagram, Facebook, LinkedIn, TikTok и Telegram

Все платформы работают в одном SDK и под единой моделью ошибок.

Возможности Instagram, Facebook, LinkedIn, TikTok и Telegram — Таблица возможностей по платформам
ВозможностьInstagramFacebookLinkedInTikTokTelegram
Подключение — 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.

Источники

  1. Meta: Overview of the Instagram API
  2. Meta: Instagram API with Instagram Login
  3. Meta: Conversations API
  4. Meta: Refresh a long-lived Instagram token
  5. Meta: Instagram insights
  6. Meta: Content publishing (контейнер истории)
  7. Meta: IG User Stories edge
  8. Meta: Graph API rate limiting

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

Начните интеграцию Instagram сегодня

Войдите через Google или email, получите токен за минуту и отправьте первый запрос в Graph API.

Получить бесплатный токен →