API и ключи интеграций
Кратко
Раздел REST API в настройках нужен для двух задач: создать и обслуживать API-ключи, а также быстро открыть обучающую документацию. В правой шторке API сразу доступны:
- быстрый старт по получению ключа;
- гид серверной интеграции;
- Embed / Widget документация;
- MCP / AI guide;
- полный справочник API.
Ключ REST API отличается от ключа виджета: REST/MCP используют API-ключ tps_..., виджет на сайте использует отдельный widget key.
Где найти

В админ-панели: Настройки → Интеграции → REST API.
Также доступен прямой маршрут SPA: #settings/api.
Как получить API-ключ
- Откройте Настройки → Интеграции.
- Нажмите карточку REST API.
- В шторке нажмите Создать ключ.
- Выберите минимально нужные scopes.
- Скопируйте ключ сразу: полный ключ показывается только один раз.
Создание ключей доступно администраторам. Доступность и лимиты зависят от тарифа.
Аутентификация
Для серверных интеграций передавайте ключ в заголовке:
X-Api-Key: tps_your_api_key_here
Content-Type: application/json
Для MCP/OpenAPI и GPT Actions используйте тот же ключ как Bearer:
Authorization: Bearer tps_your_api_key_here
Тенант определяется по ключу. Если запрос дополнительно передаёт tenant_id, он должен совпадать с тенантом ключа.
Базовый запрос
curl -X POST https://support.tehprof.kz/api/admin.php \
-H "Content-Type: application/json" \
-H "X-Api-Key: tps_your_api_key_here" \
-d '{"action":"list_tickets"}'
Все основные operator API actions вызываются через POST /api/admin.php с JSON-телом и полем action.
Основные scopes
| Scope | Для чего |
|---|---|
read | чтение данных |
write | изменение данных |
tickets | заявки |
messages | сообщения |
clients | клиенты, контакты, компании |
webhooks | исходящие вебхуки |
Выдавайте ключам только те scopes, которые нужны конкретной интеграции.
Правила сроков через ключ
Раздел настроек sla доступен по ключу: на чтение — список правил в порядке применения, на изменение — весь список целиком. Присылается желаемый вид списка: порядок массива становится порядком применения, правила без номера создаются, ваши правила, которых в списке нет, удаляются. Встроенные правила не удаляются никогда — они уходят вниз как подстраховка. Для нового пользовательского правила без условий обязательно передайте any_ticket: true: это явное подтверждение, что правило должно совпадать со всеми заявками. Изменение требует права write, чтение — read.
Что выбрать
| Сценарий | Документация |
|---|---|
| Управлять заявками из CRM/бота/скрипта | Полная документация API и гид интеграции |
| Выдать пользователю доступ к клиентскому кабинету из своего продукта | Гид серверной интеграции (ctoken) |
| Встроить готовый интерфейс поддержки iframe/JWT | Embed документация |
| Подключить Claude/Cursor/VS Code к Support | MCP / AI guide |
| Поставить форму или кнопку поддержки на сайт | Widget документация, не REST API ключ |
Примеры
Получить список заявок
curl -X POST https://support.tehprof.kz/api/admin.php \
-H "Content-Type: application/json" \
-H "X-Api-Key: tps_your_api_key_here" \
-d '{"action":"list_tickets","status":"new","limit":20}'
Создать заявку
curl -X POST https://support.tehprof.kz/api/admin.php \
-H "Content-Type: application/json" \
-H "X-Api-Key: tps_your_api_key_here" \
-d '{"action":"create_ticket","subject":"Не работает принтер","description":"После обновления не печатает","category":"other","priority":"normal"}'
Создать заявку от имени клиента (карточка человека заполняется сама)
Ключ — это ваше приложение, а не человек. Чтобы в заявке появился клиент — с именем, телефоном
и компанией — присылайте его отдельными полями, а не строчками внутри текста заявки: из текста
мы ничего не вытаскиваем.
curl -X POST https://support.tehprof.kz/api/admin.php \
-H "Content-Type: application/json" \
-H "X-Api-Key: tps_your_api_key_here" \
-d '{"action":"create_ticket",
"subject":"Утечка газа — заявка №78",
"description":"Адрес: Степной. Заявка принята оператором в 15:55.",
"category":"other","priority":"urgent",
"client_name":"Ербол Смагулов",
"client_phone":"87001999919",
"client_email":"erbol@example.kz",
"contact_external_id":"client-78",
"company_name":"ТОО Ромашка",
"company_bin":"123456789012",
"external_ref":"zayavka-78"}'
| Поле | Что делает |
|---|---|
client_name | Имя человека. Оно же станет подписью обращения вместо названия ключа |
client_phone | Телефон. Приводится к международному виду и ложится в список номеров карточки |
client_email | Почта человека |
contact_external_id | Ваш собственный номер клиента. Самый надёжный признак: по нему мы находим ту же карточку при следующих обращениях, даже если человек сменил телефон |
company_name / company_bin / company_external_id | Компания клиента. Не прислали — заявка возьмёт компанию из карточки человека, если она там уже есть. Присылайте вместе с БИН или своим номером компании: по одному названию мы её не опознаём и заведём новую |
external_ref | Ваш номер заявки. Повторная отправка с тем же номером вернёт уже созданную заявку, а не заведёт вторую |
Карточку заводит любой из трёх признаков: ваш номер клиента, телефон или почта. Одного имени
мало — по имени человека не опознать, и карточка создана не будет.
Сведения о клиенте — самостоятельный обмен: если заявку не примут (кончился лимит тарифа,
недопустимая тема), карточка человека и его компания всё равно останутся заведёнными, и повторная
отправка найдёт ту же карточку по тому же номеру клиента.
Добавить сообщение
curl -X POST https://support.tehprof.kz/api/admin.php \
-H "Content-Type: application/json" \
-H "X-Api-Key: tps_your_api_key_here" \
-d '{"action":"add_message","ticket_id":42,"message":"Проверили, проблема в драйвере."}'
Безопасность
- Не публикуйте
tps_...ключ в браузерном JavaScript. - Храните ключ на сервере или в секрет-хранилище.
- Для виджета используйте widget key, а не REST API key.
- При компрометации отзовите ключ и создайте новый.