Trumps API

Тот же API, которым живёт кабинет: проекты, стратегия, план, посты, каналы, публикации, статистика. Никакого отдельного «внешнего» API с урезанным набором — всё, что умеет кабинет, умеет и ключ.

База: https://rebma.dvorkin.tech/api/v1. Все ответы — JSON, кодировка UTF-8, время — RFC 3339 в UTC.

Аутентификация

Ключ создаётся в кабинете: Аккаунт → API-ключи → Новый ключ. Секрет вида trk_… показывается один раз при создании; в базе хранится только хеш. Ключ действует в рамках рабочего пространства, где создан, и наследует его тариф.

curl -H "Authorization: Bearer trk_ВАШ_КЛЮЧ" https://rebma.dvorkin.tech/api/v1/projects

Ключ не подходит для управления учёткой: вход, смена пароля, команда, биллинг и сами ключи доступны только из кабинета (ответ 403 key_forbidden).

Права ключа

ПравоЧто открывает
readВсе GET: проекты, стратегия, план, посты, каналы, статистика, очередь.
writeСоздание и правка: посты, слоты плана, концепция, настройки проекта, загрузка исходников.
publishПостановка в очередь и отправка на площадки: ручки с /publish и /schedule.

Нужное право указано у каждой ручки в справочнике ниже (x-scope в спеке). Нехватка права — 403 scope.

Лимиты

Token bucket: ведро на ключ и ведро на пространство, пополняются равномерно в течение минуты. У ручек с генерацией (план, стратег, тексты) и рендером — отдельное, маленькое ведро на ключ.

ТарифНа ключ, в минутуНа пространствоГенерация и рендерЗапись
Free20402только чтение
Starter601206да
Pro и выше12060012да

Заголовки ответа: X-RateLimit-Limit, X-RateLimit-Remaining. При превышении — 429 rate_limited и Retry-After в секундах: подождите столько и повторите, ведро пополнится.

Ошибки

Любая ошибка — JSON одной формы:

{"error": {"code": "scope", "message": "Ключу не хватает права «write»."}}
HTTPcodeКогда
400bad_request, bad_id, …Тело или параметр не разобрались; в message сказано, что именно.
401unauthorized, bad_keyНет ключа, ключ отозван или истёк.
403scope, plan, key_forbiddenНе хватает права, тариф не позволяет, ручка закрыта для ключей.
404not_foundОбъект не найден в вашем пространстве.
429rate_limitedЛимит; см. Retry-After.
500internalНаша ошибка; повторите позже, мы её уже видим в логах.

Примеры

Проекты и их каналы

curl -H "Authorization: Bearer $KEY" https://rebma.dvorkin.tech/api/v1/projects
curl -H "Authorization: Bearer $KEY" https://rebma.dvorkin.tech/api/v1/projects/$PROJECT/channels

Контент-план проекта

# слоты плана с каналами, временем и статусом по каждому
curl -H "Authorization: Bearer $KEY" "https://rebma.dvorkin.tech/api/v1/projects/$PROJECT/plan"

# построить план на 2 недели из концепции (право write; тяжёлая ручка)
curl -X POST -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  -d '{"weeks": 2, "replace": false, "useFeedback": true}' \
  https://rebma.dvorkin.tech/api/v1/projects/$PROJECT/plan/generate

Пост в несколько каналов по расписанию

# создать пост (право write). connectionIds — id каналов из /projects/{id}/channels.
# scheduleLocal — локальное время аудитории каждого канала; scheduleAt — один момент для всех (RFC 3339)
curl -X POST -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  -d '{"projectId": "'$PROJECT'", "body": "Текст поста", "connectionIds": ["…", "…"], "scheduleLocal": "2026-09-20T18:00"}' \
  https://rebma.dvorkin.tech/api/v1/posts

# поставить в очередь / отправить (право publish)
curl -X POST -H "Authorization: Bearer $KEY" https://rebma.dvorkin.tech/api/v1/posts/$POST/publish

Статистика

curl -H "Authorization: Bearer $KEY" "https://rebma.dvorkin.tech/api/v1/stats?projectId=$PROJECT&from=2026-09-01&to=2026-09-30"

Для агентов и нейросетей

Машиночитаемая спека: https://rebma.dvorkin.tech/api/v1/openapi.json (OpenAPI 3.0). В ней все ручки, их методы, параметры пути, требуемое право (x-scope) и признак тяжёлой операции (x-heavy). Отдайте её агенту как описание инструментов; ключ с правами read и write покрывает работу со стратегией, планом и текстами, publish добавляйте только тому, кому доверяете отправлять наружу.

Описания, параметры, схемы тел запросов с примерами и ключи ответов в спеке собраны генератором из кода обработчиков при каждой сборке, так что расхождений с развёрнутым API нет по построению.

Справочник ручек

Собирается из спеки при открытии страницы; описания, параметры, тела и ответы — из кода обработчиков, поэтому список всегда совпадает с тем, что развёрнуто. Раскройте метод — внизу плейграунд: подставьте ключ и выполните запрос прямо отсюда.

хранится только в этом браузере
Загружаем спеку…