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.
Методы
| Метод | Путь | Право | Что делает |
|---|---|---|---|
GET | /me | read | Аккаунт, компания, тариф, токены, площадки |
GET | /channels | read | Подключённые площадки и ограничения |
GET | /channels/:platform/rules | read | Правила площадки |
GET | /posts | read | Посты: status, platform, from, to, limit, cursor |
POST | /posts | write (+publish со временем) | Черновик или пост с scheduledAt |
POST | /posts/validate | read | Проверка под площадки без сохранения |
GET | /posts/:id | read | Пост целиком |
PATCH | /posts/:id | write | Изменить текст, площадки, файлы, время |
DELETE | /posts/:id | write | Удалить невышедший пост |
POST | /posts/:id/publish | publish | Опубликовать сейчас |
POST | /media | write | Файл по https-ссылке или base64 → mediaId |
GET | /calendar | read | Контент-план: from, to (до 62 дней) |
GET | /analytics | read | Статистика: from, to, platform |
GET | /brand | read | Голос бренда |
POST | /ai/post | ai | LABI пишет пост (1 токен) |
POST | /ai/image | ai | Картинка (5 токенов) |
GET | /ai/tasks/:id | read | Статус генерации |
GET | /ai/ideas | read | Идеи для постов |
POST | /links | write | Короткая ссылка с UTM |
GET POST DELETE | /webhooks | read / 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_ONLY | YouTube и TikTok по расписанию не публикуются |
| 409 IDEMPOTENCY_CONFLICT | Тот же Idempotency-Key с другим запросом |
| 429 RATE_LIMITED | Превышен лимит, смотрите Retry-After |
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_post | LABI пишет варианты поста в голосе бренда (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. — организации, признанной экстремистской на территории Российской Федерации.
Получите API-ключ за минуту
Идеи, тексты в голосе бренда, картинки и видео, контент-план и автопубликация во все соцсети — в одном окне. Регистрация занимает минуту.
- Бренд-скан сайта и соцсетей
- Посты, карусели и видео
- Автопостинг в Telegram, VK, MAX и другие сети
- Аналитика и UTM-ссылки