📚 VIPortalBot API — Полное руководство

Этот раздел описывает все публичные эндпоинты, требования к авторизации, лимиты и примеры интеграции для разработчиков и партнёров PlannerAI.

Авторизация

Доступ осуществляется по Bearer-токену, который выдаёт бот @VIPortalBot в разделе «Интеграции и API».

headers = {
    "Authorization": "Bearer ВАШ_API_ТОКЕН",
    "Accept": "application/json"
}

Основные эндпоинты

GET /api/v1/stats/usage

Статистика использования API: количество запросов, последние обращения, текущие лимиты.

GET /api/v1/channels

Список подключённых Telegram-каналов пользователя (название, username, статус, дата подключения).

GET /api/v1/drafts

Получить черновики: текст, медиа, дата создания, планируемая публикация.

POST /api/v1/drafts

Создать черновик (Enterprise). Передавайте текст и, при необходимости, ссылки на медиа.

DELETE /api/v1/drafts/{draft_id}

Удалить черновик (Enterprise).

GET /api/v1/posts/published

Опубликованные посты: статус, канал, медиа, дата публикации.

POST /api/v1/posts/publish

Публикация поста (Enterprise). Требует текст, канал и список медиа. Возвращает message_id первой записи.

Лимиты и ошибки

Стандартные ограничения

  • 60 запросов в минуту
  • 5000 запросов в сутки
  • Сброс счётчиков в 00:00 UTC

Стандартные ответы

  • 401 Unauthorized: неверный токен
  • 403 Forbidden: недостаточно прав (scope)
  • 402 Payment Required: действие доступно только Enterprise
  • 429 Too Many Requests: превышен лимит

Примеры запросов

cURL

curl -X GET "https://api.plannerai.online/api/v1/drafts" \
  -H "Authorization: Bearer ВАШ_API_ТОКЕН" \
  -H "Accept: application/json"

Python (requests)

import requests

BASE_URL = "https://api.plannerai.online"
TOKEN = "ВАШ_API_ТОКЕН"

response = requests.get(
    f"{BASE_URL}/api/v1/posts/published",
    headers={
        "Authorization": f"Bearer {TOKEN}",
        "Accept": "application/json"
    }
)

response.raise_for_status()
print(response.json())

JavaScript (fetch)

fetch("https://api.plannerai.online/api/v1/channels", {
    method: "GET",
    headers: {
        "Authorization": "Bearer ВАШ_API_ТОКЕН",
        "Accept": "application/json"
    }
})
  .then((res) => res.json())
  .then(console.log)
  .catch(console.error);

Ресурсы