API ИИ-агента
REST API для работы с вашим ИИ-агентом из своих систем: сайта, CRM, сервисов автоматизации. Читайте переписку из Telegram, WhatsApp, VK и Instagram, получайте ответ агента на любой вопрос, разбирайте очередь модерации, отправляйте сообщения в знакомые агенту чаты и управляйте его промтами и настройками.
Обновлено: · v1
Что умеет API
API повторяет то, что владелец агента делает в личном кабинете, — но из вашей программы. Каждый токен привязан к одному агенту и работает только в пределах выданных прав. Типичные сценарии:
- CRM и аналитика. Забирайте ленту переписки и историю чатов: кто написал, что ответил агент, где он промолчал и почему.
- Ответы на своём сайте. Ваш сервер передаёт вопрос посетителя в метод
askи показывает ответ агента — с тем же промтом, правилами и поиском по сайту, что в мессенджерах. - Своя модерация. Если авто-отправка выключена, разбирайте очередь подготовленных ответов из своей системы: отправить, поправить или отклонить.
- Уведомления клиентам. Пишите в уже существующий чат с клиентом от имени подключённого аккаунта: статус заказа, напоминание о записи.
- Автоматизация. Запускайте и останавливайте агента, меняйте промты и настройки из n8n, Make или своих скриптов.
Быстрый старт
- Откройте агента в личном кабинете и перейдите на вкладку API.
- Выпустите токен: дайте ему название, выберите срок и права. Скопируйте токен сразу — он показывается один раз.
- Проверьте токен запросом ниже. В ответе будут название токена, его права и агент.
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 URL | https://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 символов |
История в ask | 20 реплик |
| Текст промта | 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_BODY | 400 | Тело запроса не JSON или поле неверное. |
INVALID_FIELD | 400 | Неверное значение поля (поле field). |
UNKNOWN_FIELD | 400 | Неизвестное поле (поле field). |
INVALID_MESSENGER | 400 | Неизвестный мессенджер. |
ACCOUNT_CHANGED_DM | 400 | Ответ подготовлен при прежнем аккаунте: в личку его отправить нельзя. |
ACCOUNT_CHANGED_PERSONAL | 400 | Ответ подготовлен при прежнем аккаунте: в личный чат его отправить нельзя. |
UNAUTHORIZED | 401 | Нет заголовка с токеном. |
INVALID_TOKEN | 401 | Токен не найден или больше не действует (владелец заблокирован или сменился). |
TOKEN_EXPIRED | 401 | Срок действия токена истёк. |
TOKEN_REVOKED | 401 | Токен отозван владельцем. |
NO_BALANCE | 402 | На балансе нет средств для работы ИИ. |
INSUFFICIENT_BALANCE | 402 | Недостаточно средств для запуска агента. |
AGENT_MISMATCH | 403 | Токен выпущен для другого агента. |
SCOPE_DENIED | 403 | У токена нет права на этот метод (поле scope). |
NOT_FOUND | 404 | Объект не найден. |
CHAT_NOT_FOUND | 404 | Чат неизвестен агенту: писать можно только в чаты из списка чатов или переписки. |
REPLY_NOT_FOUND | 404 | Ответа нет в очереди. |
REPLY_ALREADY_DECIDED | 409 | Ответ уже отправлен или отклонён. |
AI_NOT_CONNECTED | 409 | У агента не подключён ИИ. |
AGENT_OUTDATED | 409 | Агент запущен старой версией — перезапустите его (stop, затем start). |
INSTANCE_BUSY | 409 | Агент уже запускается. |
INSTANCE_LIMIT_REACHED | 409 | Достигнут лимит одновременно работающих агентов. |
CHAT_NOT_JOINED | 412 | Аккаунт не состоит в этой группе. |
TARGET_OFF | 423 | Отправка этому адресату выключена (защита от бана). |
ACCOUNT_PAUSED | 423 | Мессенджер ограничил аккаунт — отправка на паузе до срока в detail. |
COMMENT_TOO_FREQUENT | 429 | Комментарии под постами нельзя публиковать так часто — подождите detail секунд. |
TOO_MANY_ATTEMPTS | 429 | Слишком много неудачных попыток авторизации с этого адреса. |
RATE_LIMITED | 429 | Превышен минутный лимит запросов — повторите через Retry-After секунд. |
DAILY_LIMIT | 429 | Исчерпан суточный лимит отправки сообщений через API. |
INTERNAL_ERROR | 500 | Внутренняя ошибка. Сообщите requestId в поддержку. |
SEND_FAILED | 502 | Мессенджер не принял сообщение (причина в detail). |
START_FAILED | 502 | Агент не запустился. |
COMMENTS_GLOBALLY_DISABLED | 503 | Публикация комментариев временно остановлена сервисом. |
INSTANCE_NOT_RUNNING | 503 | Агент не запущен — запустите его (POST /instance). |
AGENT_UNAVAILABLE | 503 | Агент запускается или не отвечает — повторите позже. |
CHANNEL_UNAVAILABLE | 503 | Мессенджер не подключён или аккаунт не вошёл. |
NOT_AVAILABLE | 503 | API временно недоступен. |
Пагинация и новые сообщения
- Лента (
/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
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
instanceStatus | string | NOT_RUNNING, STARTING, RUNNING или ERROR |
channels[].messenger | string | TELEGRAM, WHATSAPP, VK, INSTAGRAM |
channels[].status | string | CONNECTED — подключён, NOT_CONNECTED — нет, ERROR — сбой входа |
channels[].account | string | 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)
| Поле | Тип | Описание |
|---|---|---|
action | string | start, 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
Параметры запроса
| Поле | Тип | Описание |
|---|---|---|
messenger | string | Обязательно: TELEGRAM, WHATSAPP, VK или INSTAGRAM |
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
chats[].autoReply | string | ALLOW — агент отвечает, DENY — не отвечает, AUTO — по настройке промта (autoReplyDefault) |
chats[].pausedUntil | string | null | Чат на ручном управлении до этого момента |
chats[].sendBlocked | boolean | Отправка адресату выключена защитой от бана |
chats[].available | boolean | Аккаунт сейчас видит чат (false — чат только в истории) |
liveAvailable | boolean | false — агент не запущен, список только из истории |
- Запрос опрашивает аккаунт мессенджера и может занять до 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
Параметры запроса
| Поле | Тип | Описание |
|---|---|---|
show | string | all (по умолчанию), answered, unanswered, agent, incoming, manual, comments |
messenger | string | Только один мессенджер |
q | string | Поиск по тексту, до 100 символов |
before | string | Курсор: nextCursor из предыдущего ответа |
limit | number | 1–100, по умолчанию 30 |
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
entries[].kind | string | MESSAGE — сообщение, COMMENT — комментарий под постом, TREND — комментарий «Трендов» |
entries[].direction | string | IN — входящее, OUT — исходящее |
entries[].author | string | null | У исходящих: AGENT, MANUAL (вручную с аккаунта) или API |
entries[].reply | string | null | У входящих: ANSWERED, PENDING (ждёт модерации), SILENT (агент решил промолчать), HANDOVER, OFF_HOURS и другие |
entries[].chatId | string | null | Чат для истории и отправки; у комментариев — null |
nextCursor | string | 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
Параметры запроса
| Поле | Тип | Описание |
|---|---|---|
messenger | string | Обязательно |
chatId | string | Обязательно: chatId из списка чатов или ленты |
before | string | ISO-время: nextBefore из предыдущего ответа |
limit | number | 1–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)
| Поле | Тип | Описание |
|---|---|---|
text | string | Обязательно, до 4 000 символов |
messenger | string | Чей промт применить, по умолчанию TELEGRAM |
chatType | string | personal (по умолчанию) или group |
history | array | До 20 предыдущих реплик: {"role": "user" | "assistant", "text": "…"} |
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
shouldRespond | boolean | Ответил бы агент в живом чате (в группах он может промолчать) |
message | string | Текст ответа |
reason | string | Краткое объяснение решения |
action | string | null | Сработавшее правило поведения: handoff или block_user |
deliverTo | string | chat или dm — куда агент ответил бы |
toolCalls | array | Вызванные инструменты: 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
Параметры запроса
| Поле | Тип | Описание |
|---|---|---|
messenger | string | Только один мессенджер |
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
replies[].kind | string | MESSAGE — ответ в чат, COMMENT — комментарий под постом |
replies[].suggestedDeliverTo | string | chat или dm — куда предлагает агент |
replies[].reason | string | Почему ответ в очереди: 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)
| Поле | Тип | Описание |
|---|---|---|
deliverTo | string | chat или dm (в личку автору) |
text | string | Исправленный текст, до 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)
| Поле | Тип | Описание |
|---|---|---|
messenger | string | Обязательно |
chatId | string | Обязательно: chatId из списка чатов или ленты |
text | string | Обязательно, до 4 000 символов |
pauseAi | boolean | true — поставить ИИ в этом чате на паузу, как после ручного ответа (длительность — из настроек передачи оператору) |
- Защита от бана действует как для ответов агента: выключенный адресат и пауза мессенджера отправку не пропускают.
- Отправки через 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)
| Поле | Тип | Описание |
|---|---|---|
scope | string | Обязательно: PERSONAL, GROUP или COMMENT |
messenger | string | ALL (по умолчанию) или конкретный мессенджер |
triggerText | string | Триггер, до 20 000 символов |
reactionText | string | Реакция, до 20 000 символов |
autoRespond | boolean | Отвечать во всех чатах этого типа, а не только в разрешённых |
allowDm | boolean | Можно отвечать автору в личку |
replyAsQuote | boolean | Отвечать цитатой (Telegram, WhatsApp) |
enabled | boolean | Промт включён |
Запрос
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)
| Поле | Тип | Описание |
|---|---|---|
autoSend | boolean | Отправлять ответы без модерации |
maxRepliesPerHour | number | 0–1000, 0 — без лимита |
replyDelaySeconds | number | 0–600 |
scheduleEnabled / scheduleMode | boolean / string | SILENT, STOP |
scheduleDays | number[] | Дни недели 1–7 (1 — понедельник) |
scheduleStart / scheduleEnd | string | HH:MM |
scheduleTz | string | Часовой пояс России, например Europe/Moscow |
offHoursPolicy | string | IGNORE, ACCUMULATE |
handoverEnabled / handoverPauseMinutes | boolean / number | 1–1440 |
ruleBotQuestion | string | DEFLECT, ADMIT, HANDOFF |
botDisplayName | string | До 64 символов |
burstWaitSeconds | number | 0–120 |
rule… / memoryEnabled / strikeAutoBlock / accountGuard | boolean | Тумблеры правил поведения, памяти и защиты от бана |
Запрос
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 активных токенов на одного агента. Удобно заводить отдельный токен на каждую интеграцию: тогда его можно отозвать, не трогая остальные.