{"name":"Пачка API","vendor":"Пачка","industry":"communications","summary":"REST API корпоративного мессенджера Пачка: отправка и редактирование сообщений, чаты и каналы, треды, участники, сотрудники, реакции, напоминания, поиск, загрузка файлов, боты и вебхуки. Работает от имени пользователя (персональный токен) или бота (токен бота). У API есть официальная OpenAPI-спецификация, SDK для нескольких языков, CLI и документация в формате llms.txt.","docsUrl":"https://dev.pachca.com/","coverage":{"included":[],"excluded":[]},"scenarios":[{"id":"otpravit-uvedomlenie-v-kanal-ot-bota","title":"Отправить уведомление в канал от бота","summary":"Новые заказы, ошибки сервера, отчёты — в рабочий канал команды.","steps":["Создай бота в разделе «Автоматизации» и возьми его токен; передавай в заголовке Authorization: Bearer <token>. Добавь бота в нужный канал (или используй открытый канал).","Узнай ID канала: GET /chats — у каждого чата есть id.","Отправь сообщение: POST /messages с message.entity_id — ID канала и message.content — текстом. Можно добавить message.buttons (до 8 кнопок в строке) и подменить имя и аватар отправителя через display_name и display_avatar_url.","Ответ приходит в объекте data с id сообщения. Чтобы обновить сообщение (например, статус процесса), вызови PUT /messages/{id}.","Лимит — примерно 4 сообщения в секунду в один чат. При 429 ответ приходит текстом, а не JSON, с заголовком Retry-After — жди не меньше указанного."],"code":"curl -X POST https://api.pachca.com/api/shared/v1/messages \\\n  -H \"Authorization: Bearer $PACHCA_TOKEN\" \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n        \"message\": {\n          \"entity_id\": 334,\n          \"content\": \"Новый заказ №1042 на 15 000 ₽\",\n          \"display_name\": \"Магазин\",\n          \"buttons\": [[{\"text\": \"Открыть заказ\", \"url\": \"https://example.ru/admin/orders/1042\"}]]\n        }\n      }'","language":"bash","methods":["POST /messages","PUT /messages/{id}","GET /chats"]},{"id":"napisat-sotrudniku-v-lichnye","title":"Написать сотруднику в личные сообщения","summary":"Персональное уведомление: назначена задача, пришёл ответ клиента, нужно подтверждение.","steps":["Найди сотрудника: GET /users с query — именем, фамилией или email. Приостановленные сотрудники отмечены полем suspended.","Отправь сообщение: POST /messages с message.entity_type = user и message.entity_id — ID сотрудника.","Упомянуть коллегу в тексте можно через @nickname или <@user_id>."],"code":"curl -G https://api.pachca.com/api/shared/v1/users \\\n  -H \"Authorization: Bearer $PACHCA_TOKEN\" \\\n  --data-urlencode 'query=ivan@example.ru'\n\ncurl -X POST https://api.pachca.com/api/shared/v1/messages \\\n  -H \"Authorization: Bearer $PACHCA_TOKEN\" -H 'Content-Type: application/json' \\\n  -d '{\"message\": {\"entity_type\": \"user\", \"entity_id\": 12345, \"content\": \"Тебе назначена задача: проверить заказ №1042\"}}'","language":"bash","methods":["POST /messages","GET /users"]},{"id":"sozdat-kanal-i-dobavit-uchastnikov","title":"Создать канал и добавить участников","summary":"Под новый проект, клиента или инцидент — отдельный канал с нужными людьми.","steps":["Создай чат: POST /chats с chat.name и chat.member_ids. Для канала передай chat.channel = true, для открытого доступа — chat.public = true. Владельцем станет владелец токена.","Добавь участников позже: POST /chats/{id}/members с member_ids. Чтобы не появлялось системное сообщение о добавлении, передай silent = true.","ID сотрудников бери из GET /users."],"code":"curl -X POST https://api.pachca.com/api/shared/v1/chats \\\n  -H \"Authorization: Bearer $PACHCA_TOKEN\" -H 'Content-Type: application/json' \\\n  -d '{\"chat\": {\"name\": \"Инцидент 24.10: оплата не проходит\", \"member_ids\": [12345, 12346], \"channel\": false}}'","language":"bash","methods":["POST /chats","POST /chats/{id}/members","GET /users"]},{"id":"postavit-napominanie-sotrudniku","title":"Поставить напоминание сотруднику","summary":"Создавать напоминания из своей системы: перезвонить клиенту, подготовить отчёт.","steps":["Создай напоминание: POST /tasks с task.kind (тип напоминания), task.content, task.due_at в ISO-8601 и task.performer_ids — ответственными. Время без смещения считается UTC — передавай часовой пояс явно.","Важность задаёт task.priority: 1 — обычная, 2 — важно, 3 — очень важно. Привязать напоминание к чату можно через task.chat_id.","Для напоминания на весь день передай task.all_day = true."],"code":"curl -X POST https://api.pachca.com/api/shared/v1/tasks \\\n  -H \"Authorization: Bearer $PACHCA_TOKEN\" -H 'Content-Type: application/json' \\\n  -d '{\"task\": {\"kind\": \"call\", \"content\": \"Перезвонить Ивану Петрову по заказу №1042\", \"due_at\": \"2026-10-25T11:00:00+03:00\", \"priority\": 2, \"performer_ids\": [12345]}}'","language":"bash","methods":["POST /tasks"]},{"id":"otvechat-na-soobscheniya-cherez-vebhuk","title":"Отвечать на сообщения через вебхук бота","summary":"Бот слушает канал и реагирует: подтверждает получение, отвечает в треде.","steps":["В настройках бота включи исходящий вебхук и укажи адрес своего обработчика. Пачка присылает события POST-запросом.","Проверяй подпись: заголовок Pachca-Signature — HMAC-SHA256 от тела запроса с ключом Signing secret бота, в hex. Поле webhook_timestamp должно отличаться от текущего времени не больше чем на минуту.","Отметь сообщение реакцией: POST /messages/{id}/reactions с code — символом эмодзи (записи вида :+1: отклоняются).","Ответь в треде: POST /messages с message.entity_type = thread и entity_id треда (тред создаётся через POST /threads) или ответом в ленте через message.parent_message_id."],"code":"import crypto from \"node:crypto\";\n\n// Express: app.post(\"/pachca/webhook\", express.raw({ type: \"*/*\" }), handler)\nfunction isValid(rawBody, headers, secret) {\n  const signature = crypto.createHmac(\"sha256\", secret).update(rawBody).digest(\"hex\");\n  if (signature !== headers[\"pachca-signature\"]) return false;\n  const { webhook_timestamp } = JSON.parse(rawBody);\n  return Math.abs(Date.now() / 1000 - webhook_timestamp) < 60;\n}","language":"javascript","methods":["POST /messages","POST /messages/{id}/reactions","POST /threads"]}],"baseUrls":[{"label":"Боевой","url":"https://api.pachca.com/api/shared/v1"}],"auth":{"type":"bearer","description":"Токен передаётся в заголовке `Authorization: Bearer <token>`. Два типа токенов:\n\n- **Персональный** — действует от имени пользователя и видит те же чаты, что он в интерфейсе. Выпускается в разделе «Автоматизации» > «API» (бессрочный, показывается один раз) или выдаётся при входе через CLI `pachca auth login` (живёт час и продлевается автоматически).\n- **Токен бота** — действует от имени бота: все открытые каналы плюс закрытые чаты и треды, куда бот добавлен.\n\nПочти каждый метод требует определённого скоупа токена; скоупы не расширяют круг доступных данных. Владелец пространства может ограничить, кто создаёт токены.","example":"curl \"https://api.pachca.com/api/shared/v1/messages\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"message\": {\n    \"entity_id\": 334,\n    \"content\": \"Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)\"\n  }\n}'"},"methods":[{"id":"POST /messages","title":"Новое сообщение","httpMethod":"POST","path":"/messages","description":"Отправляет сообщение в беседу или канал, личное сообщение сотруднику или комментарий в тред.","params":[{"name":"message.entity_type","in":"body","type":"string","required":false,"description":"discussion (беседа или канал, по умолчанию), thread (тред), user (пользователь)"},{"name":"message.entity_id","in":"body","type":"integer","required":true,"description":"ID беседы/канала, треда или сотрудника"},{"name":"message.content","in":"body","type":"string","required":true,"description":"Текст; упоминания @nickname или <@user_id>"},{"name":"message.files","in":"body","type":"array","required":false,"description":"Прикрепляемые файлы"},{"name":"message.buttons","in":"body","type":"array","required":false,"description":"Строки кнопок: до 100 кнопок, до 8 в строке"},{"name":"message.parent_message_id","in":"body","type":"integer","required":false,"description":"Ответ на сообщение в ленте чата (не в треде)"},{"name":"message.display_avatar_url","in":"body","type":"string","required":false,"description":"Аватар отправителя для этого сообщения (только токен бота)"},{"name":"message.display_name","in":"body","type":"string","required":false,"description":"Имя отправителя для этого сообщения (только токен бота)"},{"name":"message.skip_invite_mentions","in":"body","type":"boolean","required":false,"description":"Не добавлять упомянутых в тред"},{"name":"link_preview","in":"body","type":"boolean","required":false,"description":"Показывать предпросмотр первой ссылки"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"GET /messages","title":"Список сообщений чата","httpMethod":"GET","path":"/messages","description":"Сообщения приходят от новых к старым.","params":[{"name":"chat_id","in":"query","type":"integer","required":true,"description":"ID чата (беседа, канал, диалог или чат треда)"},{"name":"sort","in":"query","type":"string","required":false,"description":"Поле сортировки"},{"name":"order","in":"query","type":"string","required":false,"description":"Направление сортировки"},{"name":"limit","in":"query","type":"integer","required":false,"description":"Количество записей за запрос"},{"name":"cursor","in":"query","type":"string","required":false,"description":"Курсор из meta.paginate.next_page или meta.paginate.prev_page"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"PUT /messages/{id}","title":"Редактирование сообщения","httpMethod":"PUT","path":"/messages/{id}","description":"Меняет текст, файлы и кнопки отправленного сообщения; в интерфейсе появится пометка о правке.","params":[{"name":"id","in":"path","type":"integer","required":true,"description":"ID сообщения"},{"name":"message.content","in":"body","type":"string","required":false,"description":"Текст сообщения"},{"name":"message.files","in":"body","type":"array","required":false,"description":"Файлы"},{"name":"message.buttons","in":"body","type":"array","required":false,"description":"Кнопки"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"POST /messages/{id}/reactions","title":"Добавить реакцию","httpMethod":"POST","path":"/messages/{id}/reactions","description":"","params":[{"name":"id","in":"path","type":"integer","required":true,"description":"ID сообщения"},{"name":"code","in":"body","type":"string","required":true,"description":"Символ эмодзи; записи вроде +1 или :+1: отклоняются"},{"name":"name","in":"body","type":"string","required":false,"description":"Имя кастомного эмодзи"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"POST /chats","title":"Новый чат","httpMethod":"POST","path":"/chats","description":"Создаёт беседу или канал; владелец токена становится владельцем чата.","params":[{"name":"chat.name","in":"body","type":"string","required":true,"description":"Название"},{"name":"chat.member_ids","in":"body","type":"array","required":false,"description":"ID пользователей-участников"},{"name":"chat.group_tag_ids","in":"body","type":"array","required":false,"description":"ID тегов-участников"},{"name":"chat.channel","in":"body","type":"boolean","required":false,"description":"Создать канал"},{"name":"chat.public","in":"body","type":"boolean","required":false,"description":"Открытый доступ"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"GET /chats","title":"Список чатов","httpMethod":"GET","path":"/chats","description":"По умолчанию — беседы, каналы и личные переписки владельца токена; с `availability=public` — все открытые.","params":[{"name":"availability","in":"query","type":"string","required":false,"description":"Выборка чатов по доступности"},{"name":"archived","in":"query","type":"boolean","required":false,"description":"Добавить архивные чаты"},{"name":"personal","in":"query","type":"boolean","required":false,"description":"Только личные или только групповые"},{"name":"last_message_at_after","in":"query","type":"string","required":false,"description":"Последнее сообщение позже даты (ISO-8601)"},{"name":"last_message_at_before","in":"query","type":"string","required":false,"description":"Последнее сообщение раньше даты (ISO-8601)"},{"name":"sort","in":"query","type":"string","required":false,"description":"Поле сортировки"},{"name":"order","in":"query","type":"string","required":false,"description":"Направление сортировки"},{"name":"limit","in":"query","type":"integer","required":false,"description":"Количество записей"},{"name":"cursor","in":"query","type":"string","required":false,"description":"Курсор пагинации"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"POST /chats/{id}/members","title":"Добавить участников","httpMethod":"POST","path":"/chats/{id}/members","description":"Добавляет сотрудников и ботов в беседу, канал или тред.","params":[{"name":"id","in":"path","type":"integer","required":true,"description":"ID чата"},{"name":"member_ids","in":"body","type":"array","required":true,"description":"ID пользователей"},{"name":"silent","in":"body","type":"boolean","required":false,"description":"Не создавать системное сообщение о добавлении"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"GET /users","title":"Список сотрудников","httpMethod":"GET","path":"/users","description":"Все сотрудники пространства, кроме удалённых; приостановленные отмечены полем `suspended`.","params":[{"name":"query","in":"query","type":"string","required":false,"description":"Поиск по имени, фамилии, email и др."},{"name":"limit","in":"query","type":"integer","required":false,"description":"Количество записей"},{"name":"cursor","in":"query","type":"string","required":false,"description":"Курсор пагинации"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"GET /profile","title":"Свой профиль","httpMethod":"GET","path":"/profile","description":"Карточка владельца токена (для токена бота — карточка бота). Параметров нет.","params":[],"requestExample":"","responseExample":"","docsUrl":""},{"id":"GET /search/messages","title":"Поиск сообщений","httpMethod":"GET","path":"/search/messages","description":"Ищет по тексту сообщений и именам файлов только в чатах владельца токена.","params":[{"name":"query","in":"query","type":"string","required":false,"description":"Текст запроса"},{"name":"chat_ids","in":"query","type":"array","required":false,"description":"Фильтр по чатам"},{"name":"user_ids","in":"query","type":"array","required":false,"description":"Фильтр по авторам"},{"name":"created_from","in":"query","type":"string","required":false,"description":"Дата создания от"},{"name":"created_to","in":"query","type":"string","required":false,"description":"Дата создания до"},{"name":"active","in":"query","type":"boolean","required":false,"description":"Фильтр по активности чата"},{"name":"limit","in":"query","type":"integer","required":false,"description":"Количество результатов"},{"name":"cursor","in":"query","type":"string","required":false,"description":"Курсор из meta.paginate.next_page"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"POST /tasks","title":"Новое напоминание","httpMethod":"POST","path":"/tasks","description":"","params":[{"name":"task.kind","in":"body","type":"string","required":true,"description":"Тип напоминания"},{"name":"task.content","in":"body","type":"string","required":false,"description":"Описание"},{"name":"task.due_at","in":"body","type":"string","required":false,"description":"Срок (ISO-8601); время без смещения считается UTC"},{"name":"task.priority","in":"body","type":"integer","required":false,"description":"1, 2 (важно) или 3 (очень важно)"},{"name":"task.performer_ids","in":"body","type":"array","required":false,"description":"Ответственные"},{"name":"task.chat_id","in":"body","type":"integer","required":false,"description":"Привязка к чату"},{"name":"task.all_day","in":"body","type":"boolean","required":false,"description":"На весь день"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"POST /threads","title":"Новый самостоятельный тред","httpMethod":"POST","path":"/threads","description":"Создаёт тред, не привязанный к сообщению.","params":[],"requestExample":"","responseExample":"{\"data\": {\"id\": 265142, \"chat_id\": 2637266155, \"message_id\": null, \"message_chat_id\": null, \"updated_at\": \"2023-02-01T19:20:47.204Z\"}}","docsUrl":""},{"id":"POST /uploads","title":"Параметры загрузки файла","httpMethod":"POST","path":"/uploads","description":"Первый шаг загрузки: возвращает адрес хранилища и подписанные поля формы. Полученный ключ файла затем передают в `message.files`.","params":[],"requestExample":"","responseExample":"","docsUrl":""}],"codeExamples":[{"title":"Проверка подписи вебхука на Node.js","language":"javascript","code":"const signature = crypto.createHmac(\"sha256\", WEBHOOK_SECRET).update(rawBody).digest(\"hex\");\nif (signature !== request.headers['pachca-signature']) {\n    throw \"Invalid signature\"\n}"}],"errors":[{"code":"400","description":"Неприемлемый запрос, часто нет обязательного параметра"},{"code":"401","description":"Недействительный токен доступа"},{"code":"402","description":"Работа пространства приостановлена: израсходован лимит сообщений тарифа"},{"code":"403","description":"У токена нет прав на запрос"},{"code":"404","description":"Ресурс не существует"},{"code":"409","description":"Объект с такими данными уже существует"},{"code":"410","description":"Ресурс больше не доступен"},{"code":"422","description":"Правила сервиса не позволяют обработать запрос"},{"code":"429","description":"Слишком много запросов"}],"limits":"- Входящие вебхуки — ~10 запросов в секунду на идентификатор вебхука.\n- Отправка сообщений (`POST /messages`) — ~4 запроса в секунду на каждый `entity_id` и не больше 30 запросов за 5 секунд по всем адресатам.\n- Чтение сообщений — ~10 запросов в секунду на токен.\n- Остальные методы — ~50 запросов в секунду на токен.\n- `GET /webhooks/events` — ~5 запросов за 2 секунды.\n- `GET /company/chats` и `GET /company/bots` — ~30 запросов в минуту.\n- Сообщения в один чат — 7 500 за скользящие 24 часа на пару «отправитель и чат».\n- Кнопки — до 100 на сообщение, до 8 в строке.","gotchas":["Ответы на создание оборачиваются в объект `data`; пагинация — курсорная, курсор в `meta.paginate.next_page`.","Лимиты частоты возвращают `429` с текстом `text/plain`, а не JSON, и заголовком `Retry-After` — ждать нужно не меньше указанного.","Превышение суточного предела сообщений в один чат приостанавливает отправку на час, и каждая попытка во время паузы удваивает её (до 24 часов).","При частых `429` без паузы токен может быть заблокирован на час (порог около 22 000 отправок в час).","`403` может прийти в двух видах: `OAuthError` с `insufficient_scope` (у токена нет скоупа) или `ApiError` (запрет бизнес-логики).","Исходящие вебхуки подписываются HMAC-SHA256 от тела запроса в заголовке `Pachca-Signature` (ключ — Signing secret бота); поле `webhook_timestamp` стоит проверять на расхождение не больше минуты. IP Пачки: `37.200.70.177`.","Документация доступна для LLM: `https://dev.pachca.com/llms.txt` и `llms-full.txt`."],"slug":"pachca","version":2,"updatedAt":"2026-10-24T17:05:34.695Z","sources":[{"title":"OpenAPI-спецификация (GitHub)","url":"https://github.com/pachca/openapi/blob/main/packages/spec/openapi.yaml","kind":"research","addedAt":"2026-10-12T11:08:25.928Z"},{"title":"Авторизация","url":"https://dev.pachca.com/api/authorization","kind":"research","addedAt":"2026-10-12T11:08:25.928Z"},{"title":"Лимиты","url":"https://dev.pachca.com/api/limits","kind":"research","addedAt":"2026-10-12T11:08:25.928Z"},{"title":"Ошибки","url":"https://dev.pachca.com/api/errors","kind":"research","addedAt":"2026-10-12T11:08:25.928Z"},{"title":"Новое сообщение","url":"https://dev.pachca.com/api/messages/create","kind":"research","addedAt":"2026-10-12T11:08:25.928Z"},{"title":"Обработка вебхуков","url":"https://dev.pachca.com/guides/webhook/handler","kind":"research","addedAt":"2026-10-12T11:08:25.928Z"},{"title":"llms.txt","url":"https://dev.pachca.com/llms.txt","kind":"research","addedAt":"2026-10-12T11:08:25.928Z"},{"title":"Вставленный текст","url":"","kind":"import","addedAt":"2026-10-12T11:08:25.928Z"},{"title":"scenarios-pachca.md","url":"","kind":"import","addedAt":"2026-10-24T17:05:25.725Z"}],"logoUrl":null}