Для разработчиков

API, MCP и вебхуки

Создавайте посты, ставьте их в план и получайте события о публикации из своих сервисов, n8n, Make или ИИ-агентов. API и MCP входят во все тарифы, включая Light.

Старт

Быстрый старт

1. Кабинет → Компания → Интеграции → «API-ключи» → «Создать ключ». Ключ lbr_live_… показывается один раз, LABRICA хранит только его отпечаток.

2. Отправьте пост. Время — обязательно с часовым поясом:

curl https://app.labrica.pro/api/v1/posts \
  -H "Authorization: Bearer lbr_live_…" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: novinka-2026-10-20" \
  -d '{
    "text": "Новая коллекция уже в магазине. **Скидка 10%** до воскресенья",
    "channels": ["telegram", "vk", "max"],
    "scheduledAt": "2026-10-20T19:00:00+03:00"
  }'

Ответ содержит пост, его статус и ссылку на кабинет. Если пост не пройдёт на какой-то площадке, придёт 422 VALIDATION_FAILED со списком причин в details.issues.

Доступ

Авторизация и права

Адрес API: https://app.labrica.pro/api/v1. Заголовок: Authorization: Bearer lbr_live_…. Ключи выдаёт владелец пространства, до 10 ключей. Ключ перестаёт работать при отзыве и смене пароля.

  • read — посты, план, статистика, голос бренда
  • write — черновики, правки, файлы, ссылки
  • publish — постановка в план и публикация
  • ai — генерация LABI, тратит токены тарифа

Лимиты на ключ: 120 запросов в минуту, 30 публикаций в час, 20 ИИ-запросов в минуту. Повтор POST с тем же Idempotency-Key (или requestId) в течение суток вернёт прежний ответ с заголовком Idempotent-Replay.

API v1

Методы

МетодПутьПравоЧто делает
GET/mereadАккаунт, компания, тариф, токены, площадки
GET/channelsreadПодключённые площадки и ограничения
GET/channels/:platform/rulesreadПравила площадки
GET/postsreadПосты: status, platform, from, to, limit, cursor
POST/postswrite (+publish со временем)Черновик или пост с scheduledAt
POST/posts/validatereadПроверка под площадки без сохранения
GET/posts/:idreadПост целиком
PATCH/posts/:idwriteИзменить текст, площадки, файлы, время
DELETE/posts/:idwriteУдалить невышедший пост
POST/posts/:id/publishpublishОпубликовать сейчас
POST/mediawriteФайл по https-ссылке или base64 → mediaId
GET/calendarreadКонтент-план: from, to (до 62 дней)
GET/analyticsreadСтатистика: from, to, platform
GET/brandreadГолос бренда
POST/ai/postaiLABI пишет пост (1 токен)
POST/ai/imageaiКартинка (5 токенов)
GET/ai/tasks/:idreadСтатус генерации
GET/ai/ideasreadИдеи для постов
POST/linkswriteКороткая ссылка с UTM
GET POST DELETE/webhooksread / writeВебхуки, /:id/test, /:id/enable
Ошибки

Ошибки

Формат: {"error": "текст по-русски", "code": "КОД", "details": {…}}. Текст можно показывать человеку: в нём сказано, что исправить.

КодКогда
401 UNAUTHORIZEDНет ключа или он отозван
402 PLAN_REQUIREDНет активного тарифа: доступно только чтение
403 PLAN_NO_AIИИ не входит в тариф Light
402 TOKENS_EXHAUSTEDЗакончились токены LABI
403 SCOPE_REQUIREDУ ключа нет нужного права
422 VALIDATION_FAILEDПост не пройдёт на площадке: в details.issues — площадка, код и что исправить
422 SCHEDULE_TIMEZONE / SCHEDULE_IN_PASTВремя без часового пояса или уже прошло
422 MANUAL_ONLYYouTube и TikTok по расписанию не публикуются
409 IDEMPOTENCY_CONFLICTТот же Idempotency-Key с другим запросом
429 RATE_LIMITEDПревышен лимит, смотрите Retry-After
MCP

MCP-сервер для ИИ-агентов

Адрес: https://mcp.labrica.pro/mcp (Streamable HTTP). Для ChatGPT — https://mcp.labrica.pro/mcp/chatgpt. Вход — OAuth 2.1 с PKCE и динамической регистрацией клиента; для скриптов подходит тот же API-ключ в заголовке Authorization.

Claude Code: claude mcp add --transport http labrica https://mcp.labrica.pro/mcp. Пошагово — на страницах Claude, ChatGPT и MCP.

ИнструментЧто делает
labrica_get_workspaceКомпания, тариф, остаток токенов, подключённые площадки и часовой пояс
labrica_get_brand_voiceГолос бренда: тон, аудитория, правила, запрещённые слова, удачные посты
labrica_list_channelsПодключённые площадки и их ограничения
labrica_get_channel_rulesПравила площадки: лимит текста, подпись к фото, карусель, ветки
labrica_validate_postПроверить пост под площадки без сохранения
labrica_create_postСоздать черновик или пост со временем публикации
labrica_update_postИзменить невышедший пост
labrica_schedule_postПоставить в план, перенести или снять с плана
labrica_publish_nowОпубликовать сразу — только по прямой просьбе
labrica_delete_postУдалить невышедший пост
labrica_list_postsПосты по статусу, площадке и датам
labrica_get_postПост целиком со статусом по каждой площадке
labrica_get_calendarКонтент-план на период, пустые дни
labrica_get_analyticsПодписчики, просмотры, лучшие посты
labrica_upload_mediaЗагрузить картинку или видео до 5 МБ
labrica_generate_postLABI пишет варианты поста в голосе бренда (1 токен)
labrica_generate_imageКартинка к посту (5 токенов)
labrica_get_taskСтатус долгой генерации
labrica_get_ideasИдеи для постов из Студии
labrica_create_linkКороткая ссылка с UTM-метками
Вебхуки

Вебхуки

Создать: POST /api/v1/webhooks с {"url": "https://…", "events": [...]}. В ответе — секрет whsec_…, он показывается один раз. Проверка: POST /api/v1/webhooks/:id/test.

LABRICA отправляет POST с JSON {id, event, createdAt, data} и заголовками X-Labrica-Event, X-Labrica-Delivery, X-Labrica-Timestamp, X-Labrica-Signature. Ответ 2xx — доставлено. Иначе повторы через 1 мин, 5 мин, 30 мин, 2 ч и 12 ч; после 50 неудач подряд вебхук отключается, владельцу приходит письмо.

СобытиеКогда
post.createdПост создан через API или агента
post.scheduledПост поставлен в план
post.publishedПост вышел на площадке: ссылка и id на площадке
post.failedПост не вышел: площадка и причина
channel.disconnectedДоступ к площадке пропал, нужно переподключить

Проверка подписи (Node.js):

import {createHmac, timingSafeEqual} from 'node:crypto';

// rawBody — тело запроса как строка, до JSON.parse
function isFromLabrica(headers, rawBody, secret) {
  const timestamp = headers['x-labrica-timestamp'];
  const expected = 'sha256=' + createHmac('sha256', secret).update(`${timestamp}.${rawBody}`).digest('hex');
  const got = String(headers['x-labrica-signature'] || '');
  const fresh = Math.abs(Date.now() / 1000 - Number(timestamp)) < 300;
  return fresh && got.length === expected.length && timingSafeEqual(Buffer.from(got), Buffer.from(expected));
}
Ограничения

Что важно знать

  • Посты по расписанию публикует сервер: в Telegram, ВКонтакте, Одноклассники, МАКС, Instagram*, Threads*, Facebook*, X. YouTube и TikTok — только из окна публикации в кабинете (422 MANUAL_ONLY).
  • Файлы через /media — до 5 МБ, тип определяется по содержимому. Ссылки — только https на публичные адреса.
  • Если в компании включено согласование, пост со временем получает статус pending_approval и выходит после одобрения в кабинете.
  • Без активного тарифа API работает только на чтение.

*Instagram, Facebook и Threads принадлежат Meta Inc. — организации, признанной экстремистской на территории Российской Федерации.

AI-студия для SMM-команды

Получите API-ключ за минуту

Идеи, тексты в голосе бренда, картинки и видео, контент-план и автопубликация во все соцсети — в одном окне. Регистрация занимает минуту.

  • Бренд-скан сайта и соцсетей
  • Посты, карусели и видео
  • Автопостинг в Telegram, VK, MAX и другие сети
  • Аналитика и UTM-ссылки