API ИИ-агента

REST API для работы с вашим ИИ-агентом из своих систем: сайта, CRM, сервисов автоматизации. Читайте переписку из Telegram, WhatsApp, VK и Instagram, получайте ответ агента на любой вопрос, разбирайте очередь модерации, отправляйте сообщения в знакомые агенту чаты и управляйте его промтами и настройками.

Обновлено: · v1

Что умеет API

API повторяет то, что владелец агента делает в личном кабинете, — но из вашей программы. Каждый токен привязан к одному агенту и работает только в пределах выданных прав. Типичные сценарии:

  • CRM и аналитика. Забирайте ленту переписки и историю чатов: кто написал, что ответил агент, где он промолчал и почему.
  • Ответы на своём сайте. Ваш сервер передаёт вопрос посетителя в метод ask и показывает ответ агента — с тем же промтом, правилами и поиском по сайту, что в мессенджерах.
  • Своя модерация. Если авто-отправка выключена, разбирайте очередь подготовленных ответов из своей системы: отправить, поправить или отклонить.
  • Уведомления клиентам. Пишите в уже существующий чат с клиентом от имени подключённого аккаунта: статус заказа, напоминание о записи.
  • Автоматизация. Запускайте и останавливайте агента, меняйте промты и настройки из n8n, Make или своих скриптов.

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

  1. Откройте агента в личном кабинете и перейдите на вкладку API.
  2. Выпустите токен: дайте ему название, выберите срок и права. Скопируйте токен сразу — он показывается один раз.
  3. Проверьте токен запросом ниже. В ответе будут название токена, его права и агент.
export USVEREE_TOKEN="usv_agt_…"           # токен из вкладки «API»
export AGENT_ID="1a2b3c4d-…"               # ID агента из той же вкладки

curl -s -H "Authorization: Bearer $USVEREE_TOKEN" https://usveree.ru/api/v1/me
curl -s -H "Authorization: Bearer $USVEREE_TOKEN" https://usveree.ru/api/v1/agents/$AGENT_ID

Токен доступа

  • Токены выпускает и отзывает только владелец агента — на вкладке «API» страницы агента. Менеджеры команды этой вкладки не видят.
  • Токен выглядит как usv_agt_ и 43 символа. В базе хранится только его хеш, поэтому восстановить потерянный токен нельзя — выпустите новый.
  • Токен работает только с тем агентом, для которого выпущен, и действует от имени владельца.
  • Срок действия — 30 дней, 90 дней, год или бессрочно. У одного агента может быть до 10 активных токенов: заведите отдельный на каждую интеграцию, чтобы отзывать их по отдельности.
  • Токен перестаёт работать сразу, если его отозвали, истёк срок, владелец заблокирован или агент сменил владельца.
  • На вкладке «API» видно, когда и с какого адреса токен использовался последний раз, а также журнал вызовов: изменения, ответы агента, отправки и все ошибки.

Авторизация и адрес

ПараметрЗначение
Base URLhttps://usveree.ru/api/v1
ЗаголовокAuthorization: Bearer <токен> (или X-API-Key: <токен>)
ФорматJSON в UTF-8; для POST и PATCH — Content-Type: application/json
ВремяISO-8601 в UTC, например 2026-10-25T10:02:11.000Z
Идентификатор запросаЗаголовок ответа X-Request-Id — укажите его, если пишете в поддержку

Права токена

Права выбираются при выпуске и потом не меняются: нужны другие — выпустите новый токен. Давайте интеграции только то, что ей нужно.

ПравоОписание
readЧтениеАгент и его статус, каналы, чаты, переписка, статистика.
askОтвет агентаАгент отвечает на присланный текст по своему промту и инструментам. В мессенджеры ничего не уходит, расход ИИ списывается как обычно.
moderateМодерацияОчередь подготовленных ответов: отправить (можно с правкой) или отклонить.
sendОтправкаОтправка сообщения в уже известный агенту чат от имени подключённого аккаунта.
manageУправлениеЗапуск, остановка и перезапуск агента, промты и настройки.

Лимиты

ОграничениеЗначение
Чтение, модерация, управление60 запросов в минуту на токен
Ответ агента (ask)10 в минуту на токен, не больше 2 одновременно
Отправка сообщений10 в минуту на токен и 300 в сутки на агента
Длина сообщения и вопроса4 000 символов
История в ask20 реплик
Текст промта20 000 символов
Ожидание ответа askдо 170 секунд — ставьте таймаут 180 секунд
Активных токенов у агента10
Запросы с неверным токеном5 за 15 минут, затем адрес блокируется на 15 минут

В каждом ответе есть заголовки X-RateLimit-Limit и X-RateLimit-Remaining — сколько запросов осталось в текущей минуте. При превышении сервер отвечает 429 RATE_LIMITED с заголовком Retry-After (секунды до повтора).

Ошибки

Ошибка приходит с HTTP-статусом и телом {"error": "КОД"}. Иногда есть уточнения: detail — причина от мессенджера или срок паузы, field — неверное поле, scope — недостающее право, retryAfter — секунды до повтора.

{ "error": "SCOPE_DENIED", "scope": "send" }
КодHTTPЧто означает
INVALID_BODY400Тело запроса не JSON или поле неверное.
INVALID_FIELD400Неверное значение поля (поле field).
UNKNOWN_FIELD400Неизвестное поле (поле field).
INVALID_MESSENGER400Неизвестный мессенджер.
ACCOUNT_CHANGED_DM400Ответ подготовлен при прежнем аккаунте: в личку его отправить нельзя.
ACCOUNT_CHANGED_PERSONAL400Ответ подготовлен при прежнем аккаунте: в личный чат его отправить нельзя.
UNAUTHORIZED401Нет заголовка с токеном.
INVALID_TOKEN401Токен не найден или больше не действует (владелец заблокирован или сменился).
TOKEN_EXPIRED401Срок действия токена истёк.
TOKEN_REVOKED401Токен отозван владельцем.
NO_BALANCE402На балансе нет средств для работы ИИ.
INSUFFICIENT_BALANCE402Недостаточно средств для запуска агента.
AGENT_MISMATCH403Токен выпущен для другого агента.
SCOPE_DENIED403У токена нет права на этот метод (поле scope).
NOT_FOUND404Объект не найден.
CHAT_NOT_FOUND404Чат неизвестен агенту: писать можно только в чаты из списка чатов или переписки.
REPLY_NOT_FOUND404Ответа нет в очереди.
REPLY_ALREADY_DECIDED409Ответ уже отправлен или отклонён.
AI_NOT_CONNECTED409У агента не подключён ИИ.
AGENT_OUTDATED409Агент запущен старой версией — перезапустите его (stop, затем start).
INSTANCE_BUSY409Агент уже запускается.
INSTANCE_LIMIT_REACHED409Достигнут лимит одновременно работающих агентов.
CHAT_NOT_JOINED412Аккаунт не состоит в этой группе.
TARGET_OFF423Отправка этому адресату выключена (защита от бана).
ACCOUNT_PAUSED423Мессенджер ограничил аккаунт — отправка на паузе до срока в detail.
COMMENT_TOO_FREQUENT429Комментарии под постами нельзя публиковать так часто — подождите detail секунд.
TOO_MANY_ATTEMPTS429Слишком много неудачных попыток авторизации с этого адреса.
RATE_LIMITED429Превышен минутный лимит запросов — повторите через Retry-After секунд.
DAILY_LIMIT429Исчерпан суточный лимит отправки сообщений через API.
INTERNAL_ERROR500Внутренняя ошибка. Сообщите requestId в поддержку.
SEND_FAILED502Мессенджер не принял сообщение (причина в detail).
START_FAILED502Агент не запустился.
COMMENTS_GLOBALLY_DISABLED503Публикация комментариев временно остановлена сервисом.
INSTANCE_NOT_RUNNING503Агент не запущен — запустите его (POST /instance).
AGENT_UNAVAILABLE503Агент запускается или не отвечает — повторите позже.
CHANNEL_UNAVAILABLE503Мессенджер не подключён или аккаунт не вошёл.
NOT_AVAILABLE503API временно недоступен.

Пагинация и новые сообщения

  • Лента (/conversations) отдаёт записи от новых к старым. Чтобы получить следующую страницу, передайте nextCursor из ответа в параметр before. nextCursor: null — дальше записей нет.
  • История чата (/messages) отдаёт сообщения в хронологическом порядке. Для более старых передайте nextBefore в before.
  • Новые сообщения. Вебхуков пока нет: раз в минуту-две запрашивайте первую страницу ленты и обрабатывайте записи, пока не встретите id, который уже видели.

Справочник методов

Во всех примерах токен и ID агента лежат в переменных окружения USVEREE_TOKEN и AGENT_ID. Путь метода указан относительно Base URL.

Токен и агент

Проверить токен

GET /api/v1/me

Возвращает название, права и срок действия токена и агента, к которому он привязан. Подходит для проверки настройки интеграции: работает с любым правом.

Право: любое

Запрос

curl -s -H "Authorization: Bearer $USVEREE_TOKEN" \
  https://usveree.ru/api/v1/me

Ответ

{
  "token": {
    "id": "6f1c2a9e-4b7d-4f0e-9a51-0c3d2e8b7a10",
    "name": "CRM",
    "prefix": "usv_agt_Ab3x",
    "scopes": ["read", "ask"],
    "createdAt": "2026-10-25T09:12:44.000Z",
    "expiresAt": "2027-01-23T09:12:44.000Z"
  },
  "agent": { "id": "1a2b3c4d-…", "name": "Консультант магазина" }
}

Агент и его каналы

GET /api/v1/agents/{agentId}

Имя агента, состояние экземпляра и подключённые мессенджеры. Статусы каналов берутся из базы, без опроса агента — запрос быстрый.

Право: read

Поля ответа

ПолеТипОписание
instanceStatusstringNOT_RUNNING, STARTING, RUNNING или ERROR
channels[].messengerstringTELEGRAM, WHATSAPP, VK, INSTAGRAM
channels[].statusstringCONNECTED — подключён, NOT_CONNECTED — нет, ERROR — сбой входа
channels[].accountstring | nullАккаунт или сообщество канала, если известно

Запрос

curl -s -H "Authorization: Bearer $USVEREE_TOKEN" \
  https://usveree.ru/api/v1/agents/$AGENT_ID

Ответ

{
  "id": "1a2b3c4d-…",
  "name": "Консультант магазина",
  "status": "ACTIVE",
  "instanceStatus": "RUNNING",
  "channels": [
    { "messenger": "TELEGRAM", "status": "CONNECTED", "account": null, "updatedAt": "2026-10-20T08:00:00.000Z" }
  ]
}

Каналы со сверкой входа

GET /api/v1/agents/{agentId}/channels

Как каналы в предыдущем методе, но запущенный агент дополнительно сверяет, что аккаунт мессенджера действительно вошёл. Медленнее — используйте, когда нужен точный статус.

Право: read

Запрос

curl -s -H "Authorization: Bearer $USVEREE_TOKEN" \
  https://usveree.ru/api/v1/agents/$AGENT_ID/channels

Ответ

{ "channels": [ { "messenger": "VK", "status": "CONNECTED", "account": null, "updatedAt": "…" } ] }

Состояние агента

GET /api/v1/agents/{agentId}/instance

Запущен ли экземпляр агента. Ответы в мессенджерах, «ответ агента» и отправка работают только в состоянии RUNNING.

Право: read

Запрос

curl -s -H "Authorization: Bearer $USVEREE_TOKEN" \
  https://usveree.ru/api/v1/agents/$AGENT_ID/instance

Ответ

{ "status": "RUNNING", "error": null }

Запустить, остановить или перезапустить

POST /api/v1/agents/{agentId}/instance

Время работы агента оплачивается по тарифу личного кабинета: запуск проверяет баланс владельца. Агент поднимается 1–3 минуты — опрашивайте состояние, пока не увидите RUNNING.

Право: manage

Тело запроса (JSON)

ПолеТипОписание
actionstringstart, stop, restart

Запрос

curl -s -X POST -H "Authorization: Bearer $USVEREE_TOKEN" -H "Content-Type: application/json" \
  -d '{"action":"start"}' https://usveree.ru/api/v1/agents/$AGENT_ID/instance

Ответ

{ "status": "STARTING" }

Возможные ошибки: INSUFFICIENT_BALANCE, INSTANCE_BUSY, INSTANCE_LIMIT_REACHED, START_FAILED

Статистика

GET /api/v1/agents/{agentId}/stats

Суммарное время работы, число запусков, журнал запусков и остановок, объём переписки за 7 и 30 дней и расход ИИ (токены и списания в копейках).

Право: read

  • messages.out7d и out30d считают только ответы агента — без ручных сообщений и отправленного через API.

Запрос

curl -s -H "Authorization: Bearer $USVEREE_TOKEN" \
  https://usveree.ru/api/v1/agents/$AGENT_ID/stats

Ответ

{
  "instance": { "status": "RUNNING", "totalUptimeSeconds": 864000, "starts": 4 },
  "messages": { "in7d": 312, "out7d": 280, "in30d": 1290, "out30d": 1144, "chats": 87 },
  "events": [ { "kind": "START", "detail": null, "at": "2026-10-20T08:00:00.000Z" } ],
  "ai": {
    "keySource": "SERVICE",
    "tokens": {
      "today": { "prompt": 41000, "completion": 5200, "calls": 38 },
      "d7": { "prompt": 302000, "completion": 39000, "calls": 290 },
      "d30": { "prompt": 1250000, "completion": 160000, "calls": 1180 }
    },
    "costKop": { "today": 210, "d7": 1580, "d30": 6400 }
  }
}

Чаты и переписка

Чаты мессенджера

GET /api/v1/agents/{agentId}/chats

Чаты, которые видит аккаунт, и чаты, известные агенту по истории. chatId отсюда подходит для истории чата и для отправки сообщения.

Право: read

Параметры запроса

ПолеТипОписание
messengerstringОбязательно: TELEGRAM, WHATSAPP, VK или INSTAGRAM

Поля ответа

ПолеТипОписание
chats[].autoReplystringALLOW — агент отвечает, DENY — не отвечает, AUTO — по настройке промта (autoReplyDefault)
chats[].pausedUntilstring | nullЧат на ручном управлении до этого момента
chats[].sendBlockedbooleanОтправка адресату выключена защитой от бана
chats[].availablebooleanАккаунт сейчас видит чат (false — чат только в истории)
liveAvailablebooleanfalse — агент не запущен, список только из истории
  • Запрос опрашивает аккаунт мессенджера и может занять до 30 секунд.

Запрос

curl -s -H "Authorization: Bearer $USVEREE_TOKEN" \
  "https://usveree.ru/api/v1/agents/$AGENT_ID/chats?messenger=TELEGRAM"

Ответ

{
  "chats": [
    {
      "chatId": "512345678",
      "userId": "512345678",
      "title": "Анна",
      "type": "PERSONAL",
      "url": "https://t.me/anna_example",
      "messages": 14,
      "autoReply": "AUTO",
      "autoReplyDefault": true,
      "pausedUntil": null,
      "sendBlocked": false,
      "available": true,
      "leftAt": null
    }
  ],
  "liveAvailable": true
}

Лента переписки

GET /api/v1/agents/{agentId}/conversations

Все сообщения агента по всем чатам, новые сверху, — как вкладка «ПЕРЕПИСКА»: входящие с исходом, ответы агента, ручные сообщения, отправленное через API и комментарии под постами.

Право: read

Параметры запроса

ПолеТипОписание
showstringall (по умолчанию), answered, unanswered, agent, incoming, manual, comments
messengerstringТолько один мессенджер
qstringПоиск по тексту, до 100 символов
beforestringКурсор: nextCursor из предыдущего ответа
limitnumber1–100, по умолчанию 30

Поля ответа

ПолеТипОписание
entries[].kindstringMESSAGE — сообщение, COMMENT — комментарий под постом, TREND — комментарий «Трендов»
entries[].directionstringIN — входящее, OUT — исходящее
entries[].authorstring | nullУ исходящих: AGENT, MANUAL (вручную с аккаунта) или API
entries[].replystring | nullУ входящих: ANSWERED, PENDING (ждёт модерации), SILENT (агент решил промолчать), HANDOVER, OFF_HOURS и другие
entries[].chatIdstring | nullЧат для истории и отправки; у комментариев — null
nextCursorstring | nullПередайте в before, чтобы получить более старые

Запрос

curl -s -H "Authorization: Bearer $USVEREE_TOKEN" \
  "https://usveree.ru/api/v1/agents/$AGENT_ID/conversations?show=unanswered&limit=20"

Ответ

{
  "entries": [
    {
      "id": "0b9e…",
      "kind": "MESSAGE",
      "direction": "IN",
      "at": "2026-10-25T10:02:11.000Z",
      "messenger": "TELEGRAM",
      "chatId": "512345678",
      "chatTitle": "Анна",
      "chatType": "PERSONAL",
      "chatUrl": "https://t.me/anna_example",
      "senderName": "Анна",
      "text": "Здравствуйте! Есть доставка в Казань?",
      "author": null,
      "reply": "PENDING",
      "context": null,
      "deleted": false
    }
  ],
  "nextCursor": "2026-10-25T10:02:11.123456Z|0b9e…"
}

История чата

GET /api/v1/agents/{agentId}/messages

Сообщения одного чата в хронологическом порядке (старые сверху). Служебные сообщения мессенджера не возвращаются.

Право: read

Параметры запроса

ПолеТипОписание
messengerstringОбязательно
chatIdstringОбязательно: chatId из списка чатов или ленты
beforestringISO-время: nextBefore из предыдущего ответа
limitnumber1–50, по умолчанию 20

Запрос

curl -s -H "Authorization: Bearer $USVEREE_TOKEN" \
  "https://usveree.ru/api/v1/agents/$AGENT_ID/messages?messenger=TELEGRAM&chatId=512345678&limit=20"

Ответ

{
  "messages": [
    { "id": "…", "direction": "IN", "author": null, "senderId": "512345678", "senderName": "Анна", "text": "Здравствуйте! Есть доставка в Казань?", "at": "2026-10-25T10:02:11.000Z" },
    { "id": "…", "direction": "OUT", "author": "AGENT", "senderId": null, "senderName": null, "text": "Здравствуйте, Анна! Да, доставляем в Казань за 2–3 дня. Подсказать стоимость?", "at": "2026-10-25T10:02:48.000Z" }
  ],
  "hasMore": true,
  "nextBefore": "2026-10-24T18:40:05.000Z"
}

Ответ агента

Получить ответ агента на текст

POST /api/v1/agents/{agentId}/ask

Агент отвечает тем же способом, что в живом чате: по своему промту, правилам поведения и инструментам (поиск по сайту, каталог). Ничего не отправляется в мессенджеры и не сохраняется в переписку. Работает и при выключенных авто-ответах; нужен запущенный агент. Расход ИИ учитывается и списывается как обычно.

Право: ask

Тело запроса (JSON)

ПолеТипОписание
textstringОбязательно, до 4 000 символов
messengerstringЧей промт применить, по умолчанию TELEGRAM
chatTypestringpersonal (по умолчанию) или group
historyarrayДо 20 предыдущих реплик: {"role": "user" | "assistant", "text": "…"}

Поля ответа

ПолеТипОписание
shouldRespondbooleanОтветил бы агент в живом чате (в группах он может промолчать)
messagestringТекст ответа
reasonstringКраткое объяснение решения
actionstring | nullСработавшее правило поведения: handoff или block_user
deliverTostringchat или dm — куда агент ответил бы
toolCallsarrayВызванные инструменты: tool, status, durationMs
  • Ответ может занять до 170 секунд, если агент обращается к инструментам. Ставьте таймаут клиента не меньше 180 секунд.
  • Историю диалога храните на своей стороне и передавайте в history — сервер её не запоминает.

Запрос

curl -s -X POST -H "Authorization: Bearer $USVEREE_TOKEN" -H "Content-Type: application/json" \
  --max-time 180 \
  -d '{"text":"Сколько стоит доставка в Казань?","history":[{"role":"user","text":"Здравствуйте"}]}' \
  https://usveree.ru/api/v1/agents/$AGENT_ID/ask

Ответ

{
  "shouldRespond": true,
  "message": "Доставка в Казань — 390 ₽, бесплатно от 5 000 ₽.",
  "reason": "вопрос о доставке",
  "action": null,
  "deliverTo": "chat",
  "toolCalls": [ { "tool": "search_site", "status": "OK", "errorCode": null, "durationMs": 820 } ]
}

Возможные ошибки: NO_BALANCE, AI_NOT_CONNECTED, AGENT_OUTDATED, INSTANCE_NOT_RUNNING, AGENT_UNAVAILABLE

Модерация и отправка

Если в настройках агента выключена авто-отправка, ответы копятся в очереди модерации. Через API их можно разбирать из своей системы, а также писать в уже знакомые агенту чаты.

Очередь модерации

GET /api/v1/agents/{agentId}/pending-replies

Ответы, ждущие решения: входящее сообщение и подготовленный агентом ответ.

Право: moderate

Параметры запроса

ПолеТипОписание
messengerstringТолько один мессенджер

Поля ответа

ПолеТипОписание
replies[].kindstringMESSAGE — ответ в чат, COMMENT — комментарий под постом
replies[].suggestedDeliverTostringchat или dm — куда предлагает агент
replies[].reasonstringПочему ответ в очереди: MANUAL, RATE_LIMIT, HANDOVER, COMMENT, PAUSED

Запрос

curl -s -H "Authorization: Bearer $USVEREE_TOKEN" \
  https://usveree.ru/api/v1/agents/$AGENT_ID/pending-replies

Ответ

{
  "replies": [
    {
      "id": "c7d1…",
      "messenger": "TELEGRAM",
      "chatId": "512345678",
      "chatTitle": "Анна",
      "chatType": "PERSONAL",
      "chatUrl": "https://t.me/anna_example",
      "messageUrl": null,
      "sender": { "id": "512345678", "name": "Анна" },
      "incomingText": "Здравствуйте! Есть доставка в Казань?",
      "replyText": "Здравствуйте, Анна! Да, доставляем в Казань за 2–3 дня. Подсказать стоимость?",
      "suggestedDeliverTo": "chat",
      "reason": "MANUAL",
      "kind": "MESSAGE",
      "createdAt": "2026-10-25T10:02:12.000Z",
      "fromPreviousAccount": false
    }
  ]
}

Отправить ответ из очереди

POST /api/v1/agents/{agentId}/pending-replies/{replyId}/send

Отправляет подготовленный ответ — как есть или с правкой. Без deliverTo ответ уходит туда, куда предложил агент.

Право: moderate

Тело запроса (JSON)

ПолеТипОписание
deliverTostringchat или dm (в личку автору)
textstringИсправленный текст, до 4 000 символов

Запрос

curl -s -X POST -H "Authorization: Bearer $USVEREE_TOKEN" -H "Content-Type: application/json" \
  -d '{"text":"Здравствуйте, Анна! Да, доставляем в Казань за 2–3 дня. Подсказать стоимость?"}' \
  https://usveree.ru/api/v1/agents/$AGENT_ID/pending-replies/$REPLY_ID/send

Ответ

{ "sent": true }

Возможные ошибки: REPLY_NOT_FOUND, REPLY_ALREADY_DECIDED, CHAT_NOT_JOINED, TARGET_OFF, ACCOUNT_PAUSED, SEND_FAILED, CHANNEL_UNAVAILABLE

Отклонить ответ из очереди

POST /api/v1/agents/{agentId}/pending-replies/{replyId}/ignore

Ответ не отправляется и уходит из очереди.

Право: moderate

Запрос

curl -s -X POST -H "Authorization: Bearer $USVEREE_TOKEN" \
  https://usveree.ru/api/v1/agents/$AGENT_ID/pending-replies/$REPLY_ID/ignore

Ответ

{ "ok": true }

Возможные ошибки: REPLY_NOT_FOUND, REPLY_ALREADY_DECIDED

Отправить сообщение в чат

POST /api/v1/agents/{agentId}/messages

Сообщение уходит от имени подключённого аккаунта в чат, который агент уже знает: он есть в списке чатов или в переписке. В «ПЕРЕПИСКЕ» оно подписано «API» и попадает в контекст агента как его реплика.

Право: send

Тело запроса (JSON)

ПолеТипОписание
messengerstringОбязательно
chatIdstringОбязательно: chatId из списка чатов или ленты
textstringОбязательно, до 4 000 символов
pauseAibooleantrue — поставить ИИ в этом чате на паузу, как после ручного ответа (длительность — из настроек передачи оператору)
  • Защита от бана действует как для ответов агента: выключенный адресат и пауза мессенджера отправку не пропускают.
  • Отправки через API считаются в лимит «ответов в час» из настроек агента.

Запрос

curl -s -X POST -H "Authorization: Bearer $USVEREE_TOKEN" -H "Content-Type: application/json" \
  -d '{"messenger":"TELEGRAM","chatId":"512345678","text":"Ваш заказ №1024 передан в доставку."}' \
  https://usveree.ru/api/v1/agents/$AGENT_ID/messages

Ответ

{ "sent": true, "messageId": "5e0f…" }

Возможные ошибки: CHAT_NOT_FOUND, DAILY_LIMIT, CHAT_NOT_JOINED, TARGET_OFF, ACCOUNT_PAUSED, SEND_FAILED, CHANNEL_UNAVAILABLE, AGENT_OUTDATED, INSTANCE_NOT_RUNNING

Промты и настройки

Промты

GET /api/v1/agents/{agentId}/prompts

Промты по мессенджеру (ALL — общий для всех) и типу чата: PERSONAL — личные чаты, GROUP — группы, COMMENT — комментарии под постами. «Триггер» описывает, когда агенту реагировать, «Реакция» — как отвечать.

Право: manage

Запрос

curl -s -H "Authorization: Bearer $USVEREE_TOKEN" \
  https://usveree.ru/api/v1/agents/$AGENT_ID/prompts

Ответ

{
  "prompts": [
    {
      "id": "…",
      "messenger": "ALL",
      "scope": "PERSONAL",
      "triggerText": "Отвечай на вопросы о товарах и доставке.",
      "reactionText": "Вежливо, коротко, на «вы». Предлагай оформить заказ.",
      "allowDm": false,
      "autoRespond": true,
      "enabled": true,
      "replyAsQuote": true,
      "updatedAt": "2026-10-20T08:00:00.000Z"
    }
  ]
}

Изменить промт

PATCH /api/v1/agents/{agentId}/prompts

Создаёт или меняет промт одной пары «мессенджер + тип чата». Неуказанные поля остаются прежними. Агент подхватывает изменения сразу.

Право: manage

Тело запроса (JSON)

ПолеТипОписание
scopestringОбязательно: PERSONAL, GROUP или COMMENT
messengerstringALL (по умолчанию) или конкретный мессенджер
triggerTextstringТриггер, до 20 000 символов
reactionTextstringРеакция, до 20 000 символов
autoRespondbooleanОтвечать во всех чатах этого типа, а не только в разрешённых
allowDmbooleanМожно отвечать автору в личку
replyAsQuotebooleanОтвечать цитатой (Telegram, WhatsApp)
enabledbooleanПромт включён

Запрос

curl -s -X PATCH -H "Authorization: Bearer $USVEREE_TOKEN" -H "Content-Type: application/json" \
  -d '{"scope":"PERSONAL","reactionText":"Отвечай коротко и дружелюбно."}' \
  https://usveree.ru/api/v1/agents/$AGENT_ID/prompts

Ответ

{ "prompt": { "id": "…", "messenger": "ALL", "scope": "PERSONAL", "…": "…" } }

Возможные ошибки: UNKNOWN_FIELD, INVALID_FIELD

Настройки агента

GET /api/v1/agents/{agentId}/settings

Авто-отправка, задержка и лимит ответов, расписание, передача оператору, правила поведения и защита от бана.

Право: manage

Запрос

curl -s -H "Authorization: Bearer $USVEREE_TOKEN" \
  https://usveree.ru/api/v1/agents/$AGENT_ID/settings

Ответ

{
  "settings": {
    "autoSend": true,
    "maxRepliesPerHour": 40,
    "replyDelaySeconds": 30,
    "scheduleEnabled": false,
    "scheduleMode": "SILENT",
    "scheduleDays": [1, 2, 3, 4, 5, 6, 7],
    "scheduleStart": "09:00",
    "scheduleEnd": "21:00",
    "scheduleTz": "Europe/Moscow",
    "offHoursPolicy": "IGNORE",
    "handoverEnabled": true,
    "handoverPauseMinutes": 60,
    "ruleHideInternals": true,
    "ruleFactsOnly": true,
    "ruleAbuseBlock": true,
    "ruleBotQuestion": "DEFLECT",
    "ruleHumanHandoff": true,
    "rulePromptGuard": true,
    "ruleStopTopics": true,
    "botDisplayName": "",
    "burstWaitSeconds": 15,
    "memoryEnabled": true,
    "strikeAutoBlock": true,
    "accountGuard": true
  }
}

Изменить настройки

PATCH /api/v1/agents/{agentId}/settings

Передайте только поля, которые меняете. Значение вне допустимого диапазона отклоняется с ошибкой, а не поправляется молча.

Право: manage

Тело запроса (JSON)

ПолеТипОписание
autoSendbooleanОтправлять ответы без модерации
maxRepliesPerHournumber0–1000, 0 — без лимита
replyDelaySecondsnumber0–600
scheduleEnabled / scheduleModeboolean / stringSILENT, STOP
scheduleDaysnumber[]Дни недели 1–7 (1 — понедельник)
scheduleStart / scheduleEndstringHH:MM
scheduleTzstringЧасовой пояс России, например Europe/Moscow
offHoursPolicystringIGNORE, ACCUMULATE
handoverEnabled / handoverPauseMinutesboolean / number1–1440
ruleBotQuestionstringDEFLECT, ADMIT, HANDOFF
botDisplayNamestringДо 64 символов
burstWaitSecondsnumber0–120
rule… / memoryEnabled / strikeAutoBlock / accountGuardbooleanТумблеры правил поведения, памяти и защиты от бана

Запрос

curl -s -X PATCH -H "Authorization: Bearer $USVEREE_TOKEN" -H "Content-Type: application/json" \
  -d '{"autoSend":false,"replyDelaySeconds":20}' \
  https://usveree.ru/api/v1/agents/$AGENT_ID/settings

Ответ

{ "settings": { "autoSend": false, "replyDelaySeconds": 20, "…": "…" } }

Возможные ошибки: UNKNOWN_FIELD, INVALID_FIELD

Как не получить бан мессенджера

Сообщения через API уходят от имени вашего аккаунта, поэтому на них действуют те же защиты, что на ответы агента:

  • Писать можно только в чаты, которые агент уже знает, — рассылки по незнакомым номерам API не делает (CHAT_NOT_FOUND).
  • Если адресат заблокировал аккаунт или выгнал его из группы, отправка ему выключается (TARGET_OFF). Включить её можно на вкладке «ДОСТАВКА».
  • Если мессенджер ограничил аккаунт, отправка встаёт на паузу до срока ограничения (ACCOUNT_PAUSED).
  • Через API можно отправить не больше 300 сообщений в сутки на агента. Отправки считаются и в лимит «ответов в час» из настроек агента.

Безопасность

  • Храните токен только на сервере: в переменных окружения или хранилище секретов. Не вставляйте его в код страницы сайта и в мобильное приложение — с ним можно читать переписку и писать клиентам.
  • API не отдаёт CORS-заголовки, поэтому браузер не выполнит запрос со страницы сайта. Это сделано намеренно: вызывайте API со своего сервера.
  • Выдавайте минимальные права, ограничивайте срок действия и убирайте отозванные токены из настроек интеграций. После 5 запросов с неверным токеном за 15 минут адрес блокируется на 15 минут (TOO_MANY_ATTEMPTS).
  • Если токен мог утечь, отзовите его на вкладке «API» — он перестанет работать сразу.

Версии API

Текущая версия — v1, она входит в адрес. В её рамках могут появляться новые методы и новые поля в ответах: не считайте неизвестное поле ошибкой. Несовместимые изменения выйдут в новой версии, v1 продолжит работать.

Вопросы и ответы

Сколько стоит доступ к API?

Отдельной платы за API нет. Оплачивается то же, что и без него: время работы агента и расход ИИ по тарифу из личного кабинета. Каждый вызов метода ask расходует ИИ так же, как ответ в чате.

Можно ли вызывать API прямо со страницы сайта?

Нет. Токен даёт доступ к переписке и отправке сообщений, поэтому его нельзя отдавать в браузер. API не отдаёт CORS-заголовки: делайте запросы со своего сервера, а посетителю показывайте уже готовый ответ.

Чем метод ask отличается от авто-ответов агента?

Метод ask только возвращает текст ответа: ничего не отправляет в мессенджеры и не сохраняет в переписку. Он работает и при выключенных авто-ответах, а историю диалога вы передаёте сами в поле history.

Почему отправка отвечает CHAT_NOT_FOUND?

Писать через API можно только в чат, который агент уже знает: он есть в списке чатов или в переписке. Так API не превращается в рассылку по незнакомым адресатам, за которую мессенджеры блокируют аккаунты.

Как узнавать о новых сообщениях?

Вебхуков пока нет. Запрашивайте первую страницу ленты переписки раз в минуту-две и обрабатывайте записи, пока не встретите уже обработанный id.

Может ли менеджер команды выпустить токен?

Нет. Токены выпускает и отзывает только владелец агента. Токен действует от имени владельца и перестаёт работать, если агент сменит владельца или владельца заблокируют.

Сколько токенов можно выпустить?

До 10 активных токенов на одного агента. Удобно заводить отдельный токен на каждую интеграцию: тогда его можно отозвать, не трогая остальные.