Cabi.Chat API
Cabi.Chat API — единый API для всего графа. Всё, что вы делаете в Cabi.Chat, веб-приложение делает через этот API: проекты, статьи, скрепки, кампании, оракулы, входящие. Cabi.Chat — первый клиент графа, но не единственно возможный link. Ваши скрипты, ваш сайт, ваши собственные оракулы и ваш ИИ-ассистент — тоже клиенты, на тех же условиях. Ассистент подключается через MCP: Подключите ИИ-ассистента к Cabi.Chat (MCP)
Две половины
- Граф:
/graph/...читает граф так, как его может видеть вызывающий,/my/...создаёт, редактирует, упорядочивает и запускает ваши карточки. Cabi.Chat API — эндпоинты графа - Аккаунт: вы, ваши токены, план и баланс, входящие, домены и трафик. Cabi.Chat API — эндпоинты аккаунта
Кто вызывает
Отправляйте Authorization: Bearer <token>. До чего дотягивается вызов, зависит от того, от чьего имени говорит токен.
- Персональный токен доступа: действует как вы, для ваших скриптов и инструментов. Cabi.Chat API — Персональные токены доступа
- Сессия браузера и Mini App: человек, вошедший через Telegram. API-пайплайн: вход в Cabi.Chat через Telegram
- Доступ для настройки: оракул, который с вашего согласия настроил вашу страницу: Cabi.Chat API — Персональные токены доступа
- Токен агенды: оракул или приложение на вашем хостинге действует как его агенда, а не как вы: Cabi.Chat API — приложения
- Без токена: только публичное чтение, как анонимный посетитель. Telegram-группы — карточки Ecosystem, поэтому анонимный вызывающий не видит ни одной.
Соглашения
- Базовый URL:
https://api.cabi.chat/v0, JSON на входе и на выходе;/v1отдаёт те же маршруты как алиас. - Спецификация:
https://api.cabi.chat/api-docs/openapi.json. Сгенерируйте по ней клиент. - Nonce: у каждой карточки есть nonce, 64-битное число. Он передаётся строкой; храните его как строку, потому что числа в JavaScript теряют последние цифры. Там, где в пути стоит
{ident}, вместо nonce подходит и@handle; там, где стоит{nonce}, передавайте nonce. - Язык:
?lang=ruилиAccept-Language. Карточка возвращает все языки, на которых она хранится, вi18n. - Ошибки: JSON
{"error": "..."}, в котором сказано, что исправить. 400: запрос нужно исправить. 401: токен неверный или отозван. 404: карточка, до которой вы не можете дотянуться; API не подтверждает, что скрытая карточка существует. 500{"error": "internal error"}: повторите позже. - Постраничный вывод: списки принимают
limitиoffset. Содержимое скрепки или рубрики листается черезcontained_limitиcontained_offset, а ответ даётcontained_next_offset. Поиск иsendsкампании листаются черезpage, с 1. - Время: у карточек — RFC 3339 в UTC; у строк отчётов (отправки, результаты) —
YYYY-MM-DD HH:MM:SS.mmmв UTC. - Слоты карточек: поле, которое принимает карточки (
tg_groups,not_tg_groups,oracles,posts), принимает и скрепки, аPATCHзаменяет весь список. - Создание идёт с
Idempotency-Key. Cabi.Chat API — Создание карточек: идемпотентность и лимиты - Права: каждый вызов следует политикам карточек, ровно так же, как в приложении. Граф Cabi.Chat — политики карточек
Первый вызов
curl -H "Authorization: Bearer $CABI_PAT" https://api.cabi.chat/v0/my/self
curl -H "Authorization: Bearer $CABI_PAT" https://api.cabi.chat/v0/my/projects
Первый отвечает, кто вы (200 с вашим профилем), второй показывает ваши проекты. Ваш первый проект через API: API-пайплайн: создание и редактирование страницы проекта