Подключение Instagram

castbase публикует через официальный API «Instagram API with Instagram Login». С вашими собственными ключами это бесплатно; если не хотите разбираться с Meta, на платном тарифе есть кнопка «Войти через Instagram» без своих ключей.

Пошаговый мастер

В кабинете: проект → «Каналы» → «Подключить Instagram» (адрес вида /app/projects/<id>/channels/new). Мастер показывает пять шагов со ссылками на страницы Meta:

  1. Переведите аккаунт Instagram в Professional (Business или Creator): Настройки → Тип аккаунта и инструменты. С личным аккаунтом публикация через API невозможна.
  2. Создайте приложение на developers.facebook.com/apps (сценарий Business).
  3. Добавьте продукт «Instagram API with Instagram Login» и право instagram_business_content_publishing.
  4. Добавьте свой аккаунт тестером: Роли приложения → Роли → Instagram Tester; затем примите приглашение в Instagram (Настройки → Сайты и приложения → Приглашения тестеров). Пока приложение в режиме разработки, публиковать можно в аккаунты-тестеры — для своих аккаунтов это именно то, что нужно.
  5. Нажмите «Generate token» в разделе «API setup with Instagram login» и вставьте токен в форму castbase.

Что происходит с токеном

  • Токен шифруется на нашей стороне в момент приёма ключом сервиса публикации: ядро castbase и логи открытого токена не содержат, показать его обратно нельзя.
  • Токен долгоживущий (60 дней). castbase продлевает его сам, когда ему больше суток и до истечения меньше 10 дней. Не получилось продлить — канал получает статус reauth_required, а владельцу проекта уходит письмо (одно на каждый такой переход). Тогда подключите тот же аккаунт заново — новым токеном или «Войти через Instagram».

Переподключение

Новое подключение того же аккаунта заменяет прежний канал — и ждущий переподключения, и рабочий (так меняют токен заранее): появляется канал с новым id, старый отключается, сервис публикации забывает его токен.

  • Запланированные на старый канал посты выходят через новый — пересоздавать их не нужно.
  • Упавшую цель (failed, например с reauth_required) повторите через POST /v1/post-targets/{id}:retry — она уйдёт через новый канал.
  • Канал в статусе reauth_required место в лимите тарифа не занимает: переподключение проходит и на тарифе без свободных мест. Замена рабочего канала требует одного свободного места — до проверки токена новый канал pending и считается в лимит.
  • Если подтверждение пришло от более старого подключения уже после нового, старое отклоняется с причиной duplicate_account.
  • Через MCP и агентов токены не принимаются: подключение канала делается только по ссылке на мастер в кабинете.

Статусы канала

Статус Значение
pending токен принят, идёт проверка («проверяем…», обычно до минуты)
active подключён, в username — имя аккаунта; публиковать можно
reauth_required токен больше не работает — подключите аккаунт заново (status_reason, status_message); место в лимите не занимает
failed подключить не удалось: неверный токен, не Professional-аккаунт и т. п. (status_message объясняет причину)
disabled канал отключён

Причины — в каталоге: Причины статусов канала.

Подключение через API

Токен можно передать и в REST (например, при автоматической настройке). Ответ 202: канал создан в статусе pending, итог читайте через GET /v1/channels/{id} или событие channel.connected / channel.reauth_required в ленте событий.

curl -X POST https://castbase.ru/v1/channels \
  -H "Authorization: Bearer $CASTBASE_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"platform": "instagram", "access_token": "IGAA...", "label": "основной"}'
{
  "id": "01a1ab14-9628-798c-b1d0-77dbd5211c06",
  "platform": "instagram",
  "status": "pending",
  "username": null,
  "label": "основной",
  "kind": "byo",
  "created_at": "2026-11-05T09:00:00+00:00"
}

DELETE /v1/channels/{id} отключает канал (204); токен забывается. Если подключить тот же аккаунт повторно, прежний канал заменяется новым.

Лимит каналов задаёт тариф (Лимиты): сверх него — 402 channels_limit_exceeded.