Особенности Instagram
Три вида постов
Вид поста castbase определяет по медиа, отдельно указывать его не нужно (в ответе он лежит в поле kind):
| Что передали | Вид | Правила |
|---|---|---|
| одна картинка | image — фото |
JPEG, PNG или WebP до 8 МБ |
| от 2 до 20 картинок | carousel — карусель |
элементы публикуются в порядке media[] |
| одно видео | reels — Reels |
MP4 или MOV, 3 секунды — 15 минут, до 300 МБ |
Видео публикуется только как Reels: видео вместе с другими медиа — 422 video_not_reels. Больше 20 элементов в карусели —
422 too_many_items. Кадрирование карусели Instagram берёт по первому элементу (по умолчанию 1:1): подберите одинаковые
пропорции у всех картинок.
Обложка Reels
Передайте картинку с role: "cover" вместе с видео (role: "item" или без роли):
{
"channel_ids": ["01a1ab14-9628-798c-b1d0-77dbd5211c06"],
"caption": "Новая коллекция #reels",
"media": [
{"media_id": "<id видео>", "role": "item"},
{"media_id": "<id картинки>", "role": "cover"}
],
"publish_at": "next_slot",
"options": {"share_to_feed": true, "audio_name": "Оригинальный звук"}
}
Обложка допустима только у Reels и только одна картинка (cover_not_allowed, invalid_cover). Опции Reels:
share_to_feed — показывать ли ролик и в ленте профиля, audio_name — название звука.
Reels лучше снимать вертикально, 9:16.
Подпись
До 2200 символов и до 30 хэштегов; превышение — 422 с кодами too_long и too_many_hashtags ещё до постановки.
Ссылка в профиле
Instagram не делает ссылки в подписях кликабельными. Если нужен призыв перейти на сайт, принято писать
«Ссылка в профиле» и держать актуальную ссылку в шапке аккаунта. castbase не добавляет такой призыв сам: подпись
публикуется ровно так, как вы её передали. Добавляйте CTA в caption на своей стороне (например, строкой в конце:
«Ссылка в профиле»).
Квота публикаций
Instagram разрешает ограниченное число публикаций аккаунта за скользящие 24 часа; точное число отдаёт сам Instagram (в документации Meta фигурируют 50 и 100, поэтому мы не зашиваем его в код, а спрашиваем у площадки перед каждой публикацией). Карусель считается за одну публикацию.
Что делает castbase: если квота исчерпана, цель переходит в deferred с error_code: quota_exhausted, приходит событие
post.deferred, а публикация откладывается до освобождения окна. Блокировку аккаунта вы не получите, а пост выйдет сам.
Если вы планируете много постов на один день, разложите их по времени (next_slot и сетка делают это за вас).
Токены и аккаунты
- Только Professional-аккаунты (Business или Creator).
- Токен действует 60 дней; castbase продлевает его сам. Нужно новый — канал получит статус
reauth_required, в ленте появитсяchannel.reauth_required. - Пока ваше Meta-приложение в режиме разработки, публикация возможна в аккаунты-тестеры приложения; для чужих аккаунтов понадобится App Review у Meta или платное подключение через приложение castbase.
Время отправки
За две минуты до publish_at castbase отправляет пост в Instagram: медиа в это время загружается и обрабатывается
(видео может обрабатываться дольше), а сама публикация происходит в назначенное время. Незавершённый контейнер Instagram
живёт 24 часа, поэтому публикация, которую не удалось выполнить за сутки от publish_at, помечается expired.