Тарифы Войти Начать бесплатно

API Reference

HTTP API для интеграции M-TEH в любые приложения. Все эндпоинты принимают и возвращают JSON. Аутентификация через M-TEH Key в заголовке или теле запроса.

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

Каждая интеграция имеет уникальный M-TEH Key вида nxs_.... Передавайте его в поле key тела запроса или в заголовке:

HeaderAuthorization: Bearer nxs_abc123...
M-TEH Key — это ключ интеграции, не провайдера AI. Ключи провайдеров (OpenAI, Claude и т.д.) хранятся на сервере и клиенту не передаются.

POST /api/chat

Основной эндпоинт для отправки сообщений. Используется виджетом и прямыми интеграциями.

Запрос

POST /api/chat{
  "key":         "nxs_abc123...",   // API Key виджета или AI-интеграции
  "session":     "nx-a1b2c3...",   // ID сессии (уникальный per-user)
  "message":     "Ваш вопрос",
  "pipeline_id": 5                  // опционально — ID конкретного пайплайна
}

Ответ

200 OK{
  "reply":   "Ответ ассистента...",
  "session": "nx-a1b2c3...",
  "tokens":  42
}

Ошибки

КодПричина
400Отсутствует обязательное поле (key или message)
401Неверный или неактивный API Key
404Пайплайн с указанным pipeline_id не найден
429Превышен лимит запросов тарифного плана
502Ошибка при запросе к AI-провайдеру

POST /api/webhook/{key}

Запускает пайплайн с триггером типа trigger_webhook по входящему POST-запросу.

POST /api/webhook/nxs_abc123{
  "event":   "new_order",
  "order_id": 12345,
  "amount":   4990
}

Всё тело запроса доступно в переменных контекста как {{field_name}}.

200 OK{
  "status": "ok",
  "reply":  "Заказ принят в обработку"
}

GET /api/sessions/{session_id}

Возвращает историю диалога для указанной сессии.

200 OK{
  "session": "nx-a1b2c3...",
  "messages": [
    {"role": "user",      "content": "Привет", "created_at": "2026-03-25T10:00:00Z"},
    {"role": "assistant", "content": "Здравствуйте!", "created_at": "2026-03-25T10:00:01Z"}
  ]
}

Управление через API (REST)

Для управления интеграциями и пайплайнами из внешних систем используйте Bearer-аутентификацию с токеном пользователя (генерируется в настройках профиля):

МетодПутьОписание
GET/api/v1/integrationsСписок интеграций
POST/api/v1/integrationsСоздать интеграцию
GET/api/v1/pipelinesСписок пайплайнов
POST/api/v1/pipelinesСоздать пайплайн
GET/api/v1/pipelines/{id}/statsСтатистика пайплайна
GET/api/v1/pipelines/{id}/dialogsСписок диалогов

Примеры использования

cURL

Shellcurl -X POST https://your-domain.com/api/chat \
  -H "Content-Type: application/json" \
  -d '{
    "key":     "nxs_abc123...",
    "session": "user-42-session-1",
    "message": "Какова стоимость доставки?"
  }'

JavaScript (fetch)

JSconst res = await fetch('https://your-domain.com/api/chat', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    key:     'nxs_abc123...',
    session: localStorage.getItem('nx_session') || crypto.randomUUID(),
    message: userMessage
  })
});
const { reply, session } = await res.json();
localStorage.setItem('nx_session', session);

Python

Pythonimport requests, uuid

resp = requests.post('https://your-domain.com/api/chat', json={
    'key':     'nxs_abc123...',
    'session': str(uuid.uuid4()),
    'message': 'Помогите с выбором тарифа'
})
print(resp.json()['reply'])

Rate Limits

ТарифЗапросов/минЗапросов/месяц
Free10500
Starter6010 000
Pro300100 000
EnterpriseБез лимитаБез лимита