API Instagram у мобільних застосунках: Graph та Basic Display
Ми налаштовуємо Instagram API в мобільних застосунках. Часто клієнти просять «додайте Instagram», не уточнюючи деталі. А дарма: вибір неправильного API з'їдає тижні розробки. Instagram Graph API (для бізнес-акаунтів) дозволяє публікувати контент, керувати коментарями та дивитися аналітику. Instagram Basic Display API (для особистих акаунтів) — лише читання медіа користувача. Розбираємось на практиці.
Правильний вибір API економить до 40% часу на інтеграцію та знижує ризики відмов в App Review. На основі 20+ проєктів ми гарантуємо робоче рішення.
Який API Instagram обрати для публікації?
Відразу уточніть: потрібно публікувати в Instagram чи тільки показувати фото? Для читання підійде Basic Display. Для публікації — тільки Graph API, і він вимагає бізнес-акаунта, підключеного до Facebook Page. Наш досвід: понад 5 років роботи з Instagram API, 20+ проєктів — ми гарантуємо правильний вибір.
| Функція | Basic Display API | Graph API |
|---|---|---|
| Читання медіа користувача | Так | Так |
| Публікація фото та відео | Ні | Так |
| Керування коментарями | Ні | Так |
| Отримання інсайтів | Ні | Так |
| Підтримка особистих акаунтів | Так | Ні |
| Необхідний тип акаунта | Особистий | Бізнес (Instagram Creator або Business) |
Порівняння показує: Graph API кращий, якщо потрібен контроль над контентом. Basic Display — тільки для «увійти через Instagram». Офіційна документація Instagram рекомендує Graph API для будь-якої взаємодії, що виходить за межі читання.
Instagram Basic Display API: авторизація та читання медіа
Підходить для сценарію «увійти через Instagram і показати свої фото». Авторизація через OAuth:
https://api.instagram.com/oauth/authorize &client_id=YOUR_APP_ID &redirect_uri=yourapp://oauth &scope=user_profile,user_media &response_type=code Отримання медіа:
GET https://graph.instagram.com/me/media &fields=id,caption,media_type,media_url,thumbnail_url,timestamp &access_token=... Пагінація через cursor із поля paging.cursors. Токен живе 60 днів, оновлюється через refresh_access_token. Обмеження: не можна публікувати, коментувати або отримувати followers. Тільки читання свого контенту.
Instagram Graph API: публікація сьогодні
Для публікації потрібен бізнес-акаунт Instagram, підключений до Facebook Page, застосунок у Facebook Developer Console з правами instagram_content_publish. API стабільний вже кілька років.
Як отримати токен доступу в мобільному застосунку?
Instagram Graph API не підтримує пряму авторизацію без Facebook SDK. Стандартний потік:
- Авторизація через Facebook Login SDK (
FBSDKLoginKitна iOS/Android). - Запит permission
instagram_content_publish,instagram_basic. - Отримання User Access Token Facebook.
- Обмін на long-lived token через бекенд.
Facebook SDK на iOS — 6 МБ до бінарника. Альтернатива без SDK — OAuth через ASWebAuthenticationSession / Custom Tab із ручною обробкою. Ми використовуємо SDK у 80% проєктів — це швидше та надійніше. Докладніше про OAuth можна прочитати на Wikipedia.
Публікація фото: двоетапний процес
- Створюємо media container:
POST https://graph.facebook.com/v19.0/{ig-user-id}/media &image_url=https://yourserver.com/photo.jpg &caption=Підпис до посту #тег &access_token=... Відповідь: { "id": "17889615814797203" } — ID контейнера.
- Публікуємо контейнер:
POST https://graph.facebook.com/v19.0/{ig-user-id}/media_publish &creation_id=17889615814797203 &access_token=... Важно: фото має бути доступне за публічним HTTPS URL. Instagram завантажує його на свої сервери. Архітектура: клієнт завантажує фото на S3 → отримує публічний URL → передає на сервер → сервер викликає Graph API. Ми гарантуємо коректну обробку помилок та повторні спроби.
Публікація відео (Reels) та каруселей
Той самий двоетапний потік, але з media_type=REELS та video_url. Після створення контейнера потрібно дочекатися обробки відео — статус перевіряється через GET /{container-id}?fields=status_code. Для каруселі: три кроки — створити item-контейнер для кожного фото, потім carousel-контейнер із children=id1,id2,id3, потім опублікувати.
| Параметр | Значення |
|---|---|
| Максимальна кількість каруселі | 10 елементів |
| Вимоги до медіа | 1080x1080, JPG/PNG |
| Timeout обробки відео | до 10 секунд |
Обмеження та квоти
- 25 публікацій на добу на один акаунт.
- 200 запитів на годину на один access token.
-
media_urlіз Basic Display API живе кілька годин — не кешуємо. - App Review у Facebook для
instagram_content_publish— 5–10 робочих днів.
Webhooks для подій
Graph API підтримує webhooks: новий коментар, нова згадка, зміна статусу публікації. Налаштування через Facebook Developer Console: verify token і callback URL. Потрібен HTTPS endpoint. У цьому розділі ми підключаємо сповіщення в реальному часі — ваш сервер отримує дані без опитувань.
Етапи робіт
- Аналітика: визначаємо потрібні API, permissions, архітектуру.
- Реєстрація Facebook App + налаштування Instagram product.
- Реалізація OAuth-потоку на клієнті та сервері.
- Розробка основного функціоналу (читання, публікація, webhooks).
- Тестування: інтеграційне, навантажувальне.
- Проходження App Review.
- Деплой і документація.
Строки
Базова інтеграція (авторизація + читання медіа) — від 3 днів. З публікацією та webhooks — від 6 днів, плюс час на App Review. Точні строки та вартість розраховуємо індивідуально. Замовте консультацію — оцінимо за 1 робочий день.
Типові помилки при інтеграції
- Забувають оновити токен — помилка 401 після 60 днів.
- Не вказують правильний scope в OAuth — отримують 403.
- Намагаються кешувати media_url довше кількох годин.
- Не проходять App Review — не вистачає скріншотів функціоналу.
Зв'яжіться з нами для консультації. Отримайте індивідуальну пропозицію під ваш проєкт.







