Вы можете использовать API Graph для Instagram, чтобы размещать публикации с одним изображением, с одним видео или с одним видео Reels (т. е. публикации с одним медиафайлом) либо публикации, содержащие несколько изображений или видео (кольцевые галереи), в профессиональных аккаунтах Instagram.
C 1 июля 2023 г. все публикации с одним видео, размещенные через API Content Publishing Instagram, будут публиковаться как видео Reels.
В каждом запросе должен быть указан маркер доступа пользователя приложения.
Для публикации требуется сочетание перечисленных ниже разрешений, которое зависит от конечных точек, используемых вашим приложением. Разрешения для каждой конечной точки см. в справке по конечным точкам.
Если приложением будут пользоваться люди, не имеющие роли в нем или в компании, которой оно принадлежит, то все разрешения, используемые в этом приложении, должны быть одобрены в ходе проверки.
Мы создаем cURL медиаобъекта, используемого при попытках публикации, поэтому в момент публикации медиафайлы должны быть размещены на общедоступном сервере.
Если профессиональный аккаунт Instagram подключен к Странице, которая требует авторизации для публикаций на Странице, необходимо сначала пройти ее.
Возможна ситуация, когда для Страницы, на которой пользователь может выполнять задачи, авторизация изначально не требовалась, но затем стала необходима. В этом случае пользователь не сможет публиковать контент в своем профессиональном аккаунте Instagram, пока не пройдет авторизацию. Так как невозможно узнать заранее, требуется ли авторизация для публикации на Странице пользователя приложения, рекомендуется советовать всем пользователям пройти ее.
Дополнительные ограничения см. в справке по каждой конечной точке.
Для аккаунтов Instagram действует ограничение количества публикаций через API: не более 50 публикаций в течение 24 часов. Кольцевые галереи считаются одной публикацией. Это ограничение применяется при публикации контейнеров медиаобъектов через конечную точку POST /{ig-user-id}/media_publish
. Желательно, чтобы ваше приложение также ограничивало количество публикаций, особенно если оно позволяет пользователям планировать их размещение в будущем.
Чтобы проверить состояние ограничения в профессиональном аккаунте Instagram, выполните запрос к конечной точке GET /{ig-user-id}/content_publishing_limit
.
Этот API включает в себя перечисленные ниже конечные точки. Информацию о требованиях для использования каждой из них см. в соответствующей документации.
POST /{ig-user-id}/media
— загрузка медиаобъектов и создание их контейнеров.POST /{ig-user-id}/media_publish
— публикация загруженных медиаобъектов с помощью их контейнеров.GET /{ig-container-id}?fields=status_code
— проверка возможности и состояния публикации контейнера медиаобъекта.GET /{ig-user-id}/content_publishing_limit
— проверка текущего состояния ограничения числа обращений к публикации для пользователя приложения.Публикация с одним изображением, видео, историей или Reels происходит в два этапа:
POST /{ig-user-id}/media
для создания контейнера из изображения или видео, размещенного на вашем общедоступном сервере.POST /{ig-user-id}/media_publish
для публикации контейнера.Этап 1 из 2: Создание контейнера
Предположим, у вас есть изображение
https://www.example.com/images/bronz-fonz.jpg
...которое вы хотите опубликовать с хэштегом #BronzFonz в качестве подписи. Отправьте запрос к конечной точке POST /{ig-user-id}/media
.
POST https://graph.facebook.com/v19.0
/17841400008460056/media
?image_url=https://www.example.com/images/bronz-fonz.jpg
&caption=#BronzFonz
Он возвращает ID для изображения.
{ "id": "17889455560051444" // IG Container ID }
Этап 2 из 2: Публикация контейнера
Используйте конечную точку POST /{ig-user-id}/media_publish
для публикации ID контейнера, возвращенного в предыдущем шаге.
POST https://graph.facebook.com/v19.0
/17841400008460056/media_publish ?creation_id=17889455560051444
{ "id": "17920238422030506" // IG Media ID }
Вы можете публиковать до 10 изображений, видео или сочетания этих двух типов файлов в одной публикации (публикации с кольцевыми галереями) Публикация кольцевых галерей происходит в три этапа:
POST /{ig-user-id}/media
для создания отдельных контейнеров объектов для каждого изображения или видео, которые появятся в кольцевой галерее.POST /{ig-user-id}/media
для создания отдельного контейнера кольцевой галереи для объектов.POST /{ig-user-id}/media_publish
для публикации контейнера кольцевой галереи.При учете ограничения числа обращений публикации кольцевых галерей считаются одной публикацией.
Ограничения
Этап 1 из 3: Создание контейнера объекта
Используйте конечную точку POST /{ig-user-id}/media
, чтобы создать контейнер объекта для изображения или видео, которое появится в кольцевой галерее. В кольцевых галереях может быть до 10 изображений и видео.
POST /{ig-user-id}/media
Следующие параметры являются обязательными. Информацию о дополнительных поддерживаемых параметрах см. в справке по конечной точке POST /{ig-user-id}/media
.
is_carousel_item
— установить как true
. Задает изображение или видео, которое появится в кольцевой галерее.image_url
— (только изображения) Путь к изображению. Мы создаем cURL изображения на основе переданного URL, поэтому он должен указывать на общедоступный сервер.media_type
— (только видео) установить как VIDEO
. Указывает, что медиаобъект — это видео.video_url
— (только видео) путь к видео. Мы создаем cURL видео на основе переданного URL, поэтому он должен указывать на общедоступный сервер.Если операция выполнена успешно, API предоставит ID контейнера объекта, который может быть использован при создании контейнера кольцевой галереи.
Повторите этот процесс для каждого изображения или видео, которое должно появиться в кольцевой галерее.
curl -i -X POST \
"https://graph.facebook.com/v19.0
/90010177253934/media?image_url=https%3A%2F%2Fsol...&is_carousel_item=true&access_token=EAAOc..."
{ "id": "17899506308402767" }
Этап 2 из 3: Создание контейнера кольцевой галереи
Используйте конечную точку POST /{ig-user-id}/media
, чтобы создать контейнер кольцевой галереи.
POST /{ig-user-id}/media
Следующие параметры являются обязательными. Информацию о дополнительных поддерживаемых параметрах см. в справке по конечной точке POST /{ig-user-id}/media
.
media_type
— установить как CAROUSEL
. Указывает контейнер для кольцевой галереи.children
— массив не более чем из 10 ID контейнеров каждого изображения и видео, которые должны появиться в публикуемой кольцевой галерее. В кольцевых галереях может быть до 10 изображений и видео.
curl -i -X POST \
"https://graph.facebook.com/v19.0
/90010177253934/media?caption=Fruit%20candies&media_type=CAROUSEL&children=17899506308402767%2C18193870522147812%2C17853844403701904&access_token=EAAOc..."
{ "id": "18000748627392977" }
Этап 3 из 3: Публикация контейнера кольцевой галереи
Используйте конечную точку POST /{ig-user-id}/media_publish
, чтобы опубликовать контейнер кольцевой галереи (публикация кольцевой галереи). В аккаунтах можно разместить не более 50 публикаций за каждые 24 часа. Публикация кольцевой галереи считается одной публикацией.
POST /{ig-user-id}/media_publish
Следующие параметры являются обязательными.
creation_id
— ID контейнера кольцевой галереи.Если операция выполнена успешно, API предоставит ID IG Media альбома кольцевой галереи.
curl -i -X POST \
"https://graph.facebook.com/v19.0
/90010177253934/media_publish?creation_id=18000748627392977&access_token=EAAOc..."
{ "id": "90010778390276" }
Видео Reels — это видеоролики короткого формата, которые могут появляться на вкладке Reels в приложении Instagram, если они соответствуют определенным спецификациям и выбраны нашим алгоритмом. Чтобы опубликовать видео Reels, выполните те же действия, что и для размещения публикации с одним медиаобъектом, и добавьте параметр media_type=REELS
вместе с указанием пути к видео, используя параметр video_url
.
Reels — это не новый тип медиафайлов, хотя при публикации видео Reels вы и указываете параметр media_type=REELS
. Если вы опубликуете видео Reels, а затем запросите его поле media_type
, будет возвращено значение VIDEO
. Чтобы определить, был ли опубликованный видеоролик обозначен как видео Reels, запросите его поле media_product_type
.
Чтобы узнать, как публиковать видео Reels в Instagram, воспользуйтесь примером кода на GitHub (insta_reels_publishing_api_sample).
Для удобства разработчиков мы опубликовали полный список вызовов API Graph для видео Reels в Instagram на платформе API Postman. Подробнее см. в статье Подборки Postman для видео Reels на Facebook и в Instagram.
Подробнее о Reels см. в документации по видео Reels для разработчиков.
В настоящий момент публиковать истории с помощью Content Publising API могут только бизнес-аккаунты.
Истории — это видеоролики или изображения, которые публикуются как истории в Instagram. Чтобы опубликовать историю, выполните те же действия, что и для размещения публикации с одним медиаобъектом, добавьте параметр media_type=STORIES
и укажите путь к изображению или видео в параметре image_url
или video_url
.
Примечание. Истории — это не новый тип медиафайлов, хотя при публикации истории вы и указываете параметр media_type=STORIES
. Если вы опубликуете историю, а затем запросите ее поле media_type
, будет возвращено значение IMAGE/VIDEO
. Чтобы определить, было ли опубликованное видео или изображение обозначено как история, рекомендуется запросить его поле media_product_type
.
Вы можете добавить пользователей Instagram с открытым профилем в качестве соавторов изображения, кольцевой галереи или видео Reels. Эти пользователи получат приглашения стать соавтором для этого конкретного медиаобъекта. Чтобы отметить пользователей на изображении, выполните действия, перечисленные выше в пункте "Публикации с одним медиаобъектом", но при создании контейнера медиаобъекта укажите в параметре collaborators массив строк с именами пользователей Instagram, которых вы хотите пригласить в качестве соавторов для этого медиаобъекта.
POST graph.facebook.com/17841400008460056/media ?image_url=https://www.example.com/images/bronzed-fonzes.jpg &caption=#BronzedFonzes! &collaborators= [‘username1’,’username2’]
Вы можете использовать Pages Search API . Обязательно добавьте в свой запрос поле 'location' для поиска Страниц, названия которых соответствуют строке поиска. Затем обработайте результаты и определите все Страницы, созданные для физического местоположения. Если при публикации изображения или видео указать ID такой Страницы, к этому медиаобъекту будет добавлена соответствующая геометка.
Чтобы Страницу можно было отметить, ее данные о местоположении должны содержать широту и долготу.
Убедитесь, что в ответе для Страницы, которую вы хотите использовать, указаны широта и долгота. Если при создании контейнера вы попытаетесь указать Страницу без геоданных, возникнет исключение INSTAGRAM_PLATFORM_API__INVALID_LOCATION_ID
.
Как только вы получите ID Страницы, назначьте его параметру location_id
при публикации контейнеров объектов с одним медиафайлом или кольцевой галереи.
Ставить метки товаров Instagram Shopping можно как в публикациях с одним медиафайлом, так и в кольцевых галереях. Подробнее см. в руководстве по работе с метками товаров.
Вы можете отметить на изображении пользователей с общедоступными аккаунтами Instagram, после чего они получат уведомление о том, что их отметили.
Чтобы отметить пользователей на изображении, выполните шаги, приведенные выше в пункте Публикации с одним медиаобъектом, но при создании контейнера медиаобъекта укажите параметр user_tags
и массив объектов с отмеченными пользователями Instagram и их координатами X/Y на изображении.
POST graph.facebook.com/17841400008460056/media ?image_url=https://www.example.com/images/bronzed-fonzes.jpg &caption=#BronzedFonzes! &user_tags= [ { username:'kevinhart4real', x: 0.5, y: 0.8 }, { username:'therock', x: 0.3, y: 0.2 } ]
Будет получен ID контейнера, который затем можно опубликовать с использованием конечной точки Публикация медиаобъектов для IG User.
user_tags
должен быть массив объектов в формате JSON.username
, x
и y
) для каждого пользователя.x
и y
должны быть числами с плавающей запятой (float
) в диапазоне от 0.0
до 1.0
и отсчитываться от левого верхнего угла изображения.Если вы создали контейнер для видео, но конечная точка POST /{ig-user-id}/media_publish
не возвращает ID опубликованного медиафайла, выполните запрос к конечной точке GET /{ig-container-id}?fields=status_code
, чтобы узнать статус публикации. Вы можете получить следующие значения:
EXPIRED
— контейнер не был опубликован в течение 24 часов и больше не действителен;ERROR
— контейнер не удалось опубликовать из-за ошибки;FINISHED
— контейнер с медиаобъектом готов к публикации;IN_PROGRESS
— процесс публикации контейнера ещё идет;PUBLISHED
— медиаобъект опубликован.Мы рекомендуем запрашивать статус публикации раз в минуту в течение максимум пяти минут.