В данном разделе описываются доступные методы для работы с агентами Аммы.
Через методы API агентов интеграция может создавать своих агентов в аккаунте, получать список агентов, изменять их параметры, а также удалять их из аккаунта. О том, что такое агенты Аммы и как с ними работать в аккаунте, читайте в статье Возможности агентов Аммы.
Интеграция идентифицируется посредством проверки переданного Access Token в заголовке Authorization: Bearer ACCESS_TOKEN.
Для работы с API агентов у интеграции должен быть установлен scope – Амма. Подробнее об ограничениях выдачи этого доступа читайте в статье Разрешения и доступы.
Работа с агентами доступна в аккаунтах, где доступна Амма. Если на аккаунте Амма недоступна, любой метод API агентов вернёт ошибку 402.
Лимиты:
POST /api/v4/amma/agents
Метод позволяет добавлять агентов в аккаунт пакетно.
При создании агента проверяется корректность адреса MCP-сервера. Требования к адресу описаны в статье Возможности агентов Аммы.
Метод доступен только интеграциям.
Метод доступен интеграциям, у которых установлен scope – Амма.
Одна интеграция может создать не более 2 агентов в аккаунте.
В аккаунте может быть не более 10 агентов суммарно по всем интеграциям.
Content-Type: application/json
Метод принимает массив агентов. Обязательные поля – name, description, system_prompt и mcp[url].
| Параметр | Тип данных | Описание |
|---|---|---|
| name | string | Название агента, которое видит пользователь. Длина поля до 255 символов. Обязательный параметр |
| description | string | Описание агента для пользователя. Длина поля до 1024 символов. Обязательный параметр |
| ai_instructions | string | Инструкции для Аммы: когда ей следует передать запрос этому агенту. Длина поля до 1024 символов. Если не заданы, Амма принимает решение по описанию |
| system_prompt | string | Системный промпт агента – его характер и правила работы. Длина поля до 10000 символов. Обязательный параметр |
| avatar | string | Ссылка на изображение агента. Длина поля до 2048 символов |
| model_size | string | Уровень модели агента. Чем сложнее задачи агента, тем выше уровень. Доступные значения – S, M, L. Значение по умолчанию – M |
| mcp | object | Параметры MCP-сервера агента. Обязательный параметр |
| mcp[url] | string | Адрес MCP-сервера. Поддерживается только схема https. Длина поля до 2048 символов. Обязательный параметр |
| mcp[transport] | string | Транспорт MCP. Доступные значения – streamable-http, sse. Значение по умолчанию – streamable-http |
| mcp[headers] | object | Заголовки, которые amoCRM будет отправлять в запросах к MCP-серверу. Имя заголовка – до 128 символов, значение – до 1024 символов |
| is_active | bool | Активен ли агент. Значение по умолчанию – true |
Требования к изображению в avatar: размер до 2 МБ, MIME-тип image/*. Ссылка должна использовать схему https, а её хост – быть публичным, как и адрес MCP-сервера. Изображение загружается в amoCRM, поэтому в ответе возвращается ссылка на файл в amoCRM, а не исходная ссылка.
Если изображение не удалось загрузить — оно недоступно, не является картинкой или превышает лимит размера, — метод вернёт ошибку 400, и агент не будет создан или изменён.
Агенты создаются целиком: если хотя бы один агент из массива не прошёл проверку, ни один агент не будет создан.
Если тело запроса не прошло валидацию, метод вернёт ошибку 400.
[
{
"name": "Помощник по записям",
"description": "Проверяет записи клиентов и подсказывает свободные слоты",
"ai_instructions": "Передавай этому агенту вопросы о записи клиента, расписании и свободных слотах",
"system_prompt": "Ты — ассистент по онлайн-записи. Помогаешь проверить запись клиента и найти свободное время.",
"avatar": "https://cdn.partner.com/agents/booking.png",
"model_size": "M",
"mcp": {
"url": "https://mcp.partner.com/booking",
"transport": "streamable-http",
"headers": {
"X-Partner-Key": "ваш ключ"
}
},
"is_active": true
}
]
Content-Type: application/json
Content-Type: application/json
| Код ответа | Условие |
|---|---|
| 201 | Агенты успешно созданы |
| 400 | Переданы некорректные данные, превышен лимит агентов или не удалось загрузить изображение. Подробности доступны в теле ответа |
| 401 | Неудачная аутентификация |
| 402 | На аккаунте недоступна Амма |
| 403 | У интеграции нет scope Амма |
Метод возвращает коллекцию созданных агентов.
| Параметр | Тип данных | Описание |
|---|---|---|
| id | string | UUID агента |
| name | string | Название агента |
| description | string | Описание агента для пользователя |
| system_prompt | string | Системный промпт агента |
| ai_instructions | string | Инструкции для Аммы |
| avatar | string | Ссылка на изображение агента в amoCRM |
| model_size | string | Уровень модели агента. Возможные значения – S, M, L |
| mcp | object | Параметры MCP-сервера агента |
| mcp[url] | string | Адрес MCP-сервера |
| mcp[transport] | string | Транспорт MCP |
| mcp[has_headers] | bool | Признак того, что для MCP-сервера заданы заголовки. Сами заголовки не возвращаются |
| is_active | bool | Активен ли агент |
| client_uuid | string | UUID интеграции, создавшей агента |
| created_by | int | ID пользователя, от имени которого агент создан |
| created_at | int | Дата создания агента, передаётся в Unix Timestamp |
| updated_at | int | Дата последнего изменения агента, передаётся в Unix Timestamp |
{
"_total_items": 1,
"_embedded": {
"agents": [
{
"id": "b1f2c3d4-0000-4a5b-8c9d-000000000001",
"name": "Помощник по записям",
"description": "Проверяет записи клиентов и подсказывает свободные слоты",
"system_prompt": "Ты — ассистент по онлайн-записи. Помогаешь проверить запись клиента и найти свободное время.",
"ai_instructions": "Передавай этому агенту вопросы о записи клиента, расписании и свободных слотах",
"avatar": "https://drive-b.amocrm.ru/download/aff5603a-28b1-4c17-8e98-16e473b323b3/367b9f38-5f01-4cea-947e-dfab47aea522/avatar.png",
"model_size": "M",
"mcp": {
"url": "https://mcp.partner.com/booking",
"transport": "streamable-http",
"has_headers": true
},
"is_active": true,
"client_uuid": "a0c11111-2222-4333-8444-555566667777",
"created_by": 123456,
"created_at": 1753305600,
"updated_at": 1753305600,
"_links": {
"self": {
"href": "https://example.amocrm.ru/api/v4/amma/agents/b1f2c3d4-0000-4a5b-8c9d-000000000001"
}
}
}
]
}
}
GET /api/v4/amma/agents
Метод позволяет получить список агентов, созданных вашей интеграцией.
Метод доступен только интеграциям.
Метод доступен интеграциям, у которых установлен scope – Амма.
| Параметр | Тип данных | Описание |
|---|---|---|
| page | int | Страница выборки, целое число от 1. Значение по умолчанию – 1 |
| limit | int | Количество агентов в ответе, целое число от 1 до 50. Значение по умолчанию – 50 |
Content-Type: application/json
Content-Type: application/json
| Код ответа | Условие |
|---|---|
| 200 | Запрос выполнен успешно |
| 204 | Выборка пуста: у интеграции нет агентов либо запрошенная страница за пределами выборки |
| 400 | Переданы некорректные значения page или limit |
| 401 | Неудачная аутентификация |
| 402 | На аккаунте недоступна Амма |
| 403 | У интеграции нет scope Амма |
Метод возвращает коллекцию агентов, рассмотрим ниже свойства агента.
| Параметр | Тип данных | Описание |
|---|---|---|
| id | string | UUID агента |
| name | string | Название агента |
| description | string | Описание агента для пользователя |
| avatar | string | Ссылка на изображение агента в amoCRM |
| model_size | string | Уровень модели агента. Возможные значения – S, M, L |
| mcp | object | Параметры MCP-сервера агента |
| mcp[url] | string | Адрес MCP-сервера |
| mcp[transport] | string | Транспорт MCP |
| mcp[has_headers] | bool | Признак того, что для MCP-сервера заданы заголовки. Сами заголовки не возвращаются |
| is_active | bool | Активен ли агент |
| client_uuid | string | UUID интеграции, создавшей агента |
| created_at | int | Дата создания агента, передаётся в Unix Timestamp |
| updated_at | int | Дата последнего изменения агента, передаётся в Unix Timestamp |
Свойства system_prompt, ai_instructions и created_by в списке не возвращаются – получить их можно методом получения агента по ID.
{
"_total_items": 1,
"_page": 1,
"_page_count": 1,
"_links": {
"self": {
"href": "https://example.amocrm.ru/api/v4/amma/agents?page=1&limit=50"
}
},
"_embedded": {
"agents": [
{
"id": "b1f2c3d4-0000-4a5b-8c9d-000000000001",
"name": "Помощник по записям",
"description": "Проверяет записи клиентов и подсказывает свободные слоты",
"avatar": "https://drive-b.amocrm.ru/download/aff5603a-28b1-4c17-8e98-16e473b323b3/367b9f38-5f01-4cea-947e-dfab47aea522/avatar.png",
"model_size": "M",
"mcp": {
"url": "https://mcp.partner.com/booking",
"transport": "streamable-http",
"has_headers": true
},
"is_active": true,
"client_uuid": "a0c11111-2222-4333-8444-555566667777",
"created_at": 1753305600,
"updated_at": 1753305600,
"_links": {
"self": {
"href": "https://example.amocrm.ru/api/v4/amma/agents/b1f2c3d4-0000-4a5b-8c9d-000000000001"
}
}
}
]
}
}
GET /api/v4/amma/agents/{id}
Метод позволяет получить агента по его UUID. В отличие от списка агентов, этот метод дополнительно возвращает системный промпт агента, инструкции для Аммы и ID пользователя, от имени которого агент создан.
Метод доступен только интеграциям.
Метод доступен интеграциям, у которых установлен scope – Амма.
Content-Type: application/json
Content-Type: application/json
| Код ответа | Условие |
|---|---|
| 200 | Запрос выполнен успешно |
| 401 | Неудачная аутентификация |
| 402 | На аккаунте недоступна Амма |
| 403 | У интеграции нет scope Амма |
| 404 | Агент не найден |
Метод возвращает модель агента, рассмотрим ниже её свойства.
| Параметр | Тип данных | Описание |
|---|---|---|
| id | string | UUID агента |
| name | string | Название агента |
| description | string | Описание агента для пользователя |
| system_prompt | string | Системный промпт агента |
| ai_instructions | string | Инструкции для Аммы |
| avatar | string | Ссылка на изображение агента в amoCRM |
| model_size | string | Уровень модели агента. Возможные значения – S, M, L |
| mcp | object | Параметры MCP-сервера агента |
| mcp[url] | string | Адрес MCP-сервера |
| mcp[transport] | string | Транспорт MCP |
| mcp[has_headers] | bool | Признак того, что для MCP-сервера заданы заголовки. Сами заголовки не возвращаются |
| is_active | bool | Активен ли агент |
| client_uuid | string | UUID интеграции, создавшей агента |
| created_by | int | ID пользователя, от имени которого агент создан |
| created_at | int | Дата создания агента, передаётся в Unix Timestamp |
| updated_at | int | Дата последнего изменения агента, передаётся в Unix Timestamp |
{
"id": "b1f2c3d4-0000-4a5b-8c9d-000000000001",
"name": "Помощник по записям",
"description": "Проверяет записи клиентов и подсказывает свободные слоты",
"system_prompt": "Ты — ассистент по онлайн-записи. Помогаешь проверить запись клиента и найти свободное время.",
"ai_instructions": "Передавай этому агенту вопросы о записи клиента, расписании и свободных слотах",
"avatar": "https://drive-b.amocrm.ru/download/aff5603a-28b1-4c17-8e98-16e473b323b3/367b9f38-5f01-4cea-947e-dfab47aea522/avatar.png",
"model_size": "M",
"mcp": {
"url": "https://mcp.partner.com/booking",
"transport": "streamable-http",
"has_headers": true
},
"is_active": true,
"client_uuid": "a0c11111-2222-4333-8444-555566667777",
"created_by": 123456,
"created_at": 1753305600,
"updated_at": 1753305600,
"_links": {
"self": {
"href": "https://example.amocrm.ru/api/v4/amma/agents/b1f2c3d4-0000-4a5b-8c9d-000000000001"
}
}
}
PATCH /api/v4/amma/agents/{id}
Метод позволяет изменить параметры агента. Передавайте только те свойства, которые нужно изменить.
Изменить можно свойства name, description, ai_instructions, system_prompt, avatar, model_size, mcp и is_active.
Свойство mcp заменяется целиком. Если передать mcp без заголовков, ранее заданные заголовки будут удалены.
Новые параметры вступят в силу при следующем подключении агента: если в момент изменения агент уже отвечает пользователю, он закончит работу со старыми параметрами.
Метод доступен только интеграциям.
Метод доступен интеграциям, у которых установлен scope – Амма.
Content-Type: application/json
Обязательные поля отсутствуют, тело запроса должно содержать хотя бы одно изменяемое свойство.
| Параметр | Тип данных | Описание |
|---|---|---|
| name | string | Название агента, которое видит пользователь. Длина поля до 255 символов. Очистить нельзя |
| description | string | Описание агента для пользователя. Длина поля до 1024 символов. Очистить нельзя |
| ai_instructions | string | Инструкции для Аммы: когда ей следует передать запрос этому агенту. Длина поля до 1024 символов. Чтобы очистить, передайте пустую строку |
| system_prompt | string | Системный промпт агента – его характер и правила работы. Длина поля до 10000 символов. Очистить нельзя |
| avatar | string | Ссылка на изображение агента. Длина поля до 2048 символов. Чтобы очистить, передайте пустую строку |
| model_size | string | Уровень модели агента. Доступные значения – S, M, L |
| mcp | object | Параметры MCP-сервера агента. Заменяется целиком |
| mcp[url] | string | Адрес MCP-сервера. Поддерживается только схема https. Длина поля до 2048 символов. Обязательный параметр при передаче mcp |
| mcp[transport] | string | Транспорт MCP. Доступные значения – streamable-http, sse. Значение по умолчанию – streamable-http |
| mcp[headers] | object | Заголовки, которые amoCRM будет отправлять в запросах к MCP-серверу. Имя заголовка – до 128 символов, значение – до 1024 символов |
| is_active | bool | Активен ли агент |
Требования к изображению в avatar: размер до 2 МБ, MIME-тип image/*. Ссылка должна использовать схему https, а её хост – быть публичным, как и адрес MCP-сервера. Изображение загружается в amoCRM, поэтому в ответе возвращается ссылка на файл в amoCRM, а не исходная ссылка.
Если изображение не удалось загрузить — оно недоступно, не является картинкой или превышает лимит размера, — метод вернёт ошибку 400, и агент не будет изменён.
{
"model_size": "L",
"system_prompt": "Обновлённый системный промпт агента.",
"is_active": false
}
Content-Type: application/json
Content-Type: application/json
| Код ответа | Условие |
|---|---|
| 200 | Агент успешно изменён |
| 400 | Переданы некорректные данные или не удалось загрузить изображение. Подробности доступны в теле ответа |
| 401 | Неудачная аутентификация |
| 402 | На аккаунте недоступна Амма |
| 403 | У интеграции нет scope Амма |
| 404 | Агент не найден |
Метод возвращает модель изменённого агента, рассмотрим ниже её свойства.
| Параметр | Тип данных | Описание |
|---|---|---|
| id | string | UUID агента |
| name | string | Название агента |
| description | string | Описание агента для пользователя |
| system_prompt | string | Системный промпт агента |
| ai_instructions | string | Инструкции для Аммы |
| avatar | string | Ссылка на изображение агента в amoCRM |
| model_size | string | Уровень модели агента. Возможные значения – S, M, L |
| mcp | object | Параметры MCP-сервера агента |
| mcp[url] | string | Адрес MCP-сервера |
| mcp[transport] | string | Транспорт MCP |
| mcp[has_headers] | bool | Признак того, что для MCP-сервера заданы заголовки. Сами заголовки не возвращаются |
| is_active | bool | Активен ли агент |
| client_uuid | string | UUID интеграции, создавшей агента |
| created_by | int | ID пользователя, от имени которого агент создан |
| created_at | int | Дата создания агента, передаётся в Unix Timestamp |
| updated_at | int | Дата последнего изменения агента, передаётся в Unix Timestamp |
{
"id": "b1f2c3d4-0000-4a5b-8c9d-000000000001",
"name": "Помощник по записям",
"description": "Проверяет записи клиентов и подсказывает свободные слоты",
"system_prompt": "Обновлённый системный промпт агента.",
"ai_instructions": "Передавай этому агенту вопросы о записи клиента, расписании и свободных слотах",
"avatar": "https://drive-b.amocrm.ru/download/aff5603a-28b1-4c17-8e98-16e473b323b3/367b9f38-5f01-4cea-947e-dfab47aea522/avatar.png",
"model_size": "L",
"mcp": {
"url": "https://mcp.partner.com/booking",
"transport": "streamable-http",
"has_headers": true
},
"is_active": false,
"client_uuid": "a0c11111-2222-4333-8444-555566667777",
"created_by": 123456,
"created_at": 1753305600,
"updated_at": 1753309200,
"_links": {
"self": {
"href": "https://example.amocrm.ru/api/v4/amma/agents/b1f2c3d4-0000-4a5b-8c9d-000000000001"
}
}
}
DELETE /api/v4/amma/agents/{id}
Метод позволяет удалить агента. Удалять агента может только интеграция, которая его создала.
Массовое удаление агентов не поддерживается – агенты удаляются по одному.
Метод доступен только интеграциям.
Метод доступен интеграциям, у которых установлен scope – Амма.
Content-Type: application/json
| Код ответа | Условие |
|---|---|
| 204 | Агент успешно удалён |
| 401 | Неудачная аутентификация |
| 402 | На аккаунте недоступна Амма |
| 403 | У интеграции нет scope Амма |
| 404 | Агент не найден |
Метод не возвращает тело
{
"title": "Forbidden",
"type": "https://httpstatus.es/403",
"status": 403,
"detail": "Integration is missing the 'amma' scope"
}
Если ошибка относится к конкретным свойствам агента, в ответе дополнительно возвращается массив validation-errors.
| Параметр | Тип данных | Описание |
|---|---|---|
| validation-errors | array | Массив ошибок валидации |
| validation-errors[0] | object | Ошибки одного агента из переданного массива |
| validation-errors[0][request_id] | int | Порядковый номер агента в переданном массиве. При редактировании всегда 0 |
| validation-errors[0][errors] | array | Массив некорректных свойств агента |
| validation-errors[0][errors][0][code] | string | Код ошибки. Возможные значения – NotBlank, Url, Choice, Invalid |
| validation-errors[0][errors][0][path] | string | Путь к свойству, например name или mcp.url |
| validation-errors[0][errors][0][detail] | string | Описание ошибки |
Коды ошибок:
| Код | Условие |
|---|---|
| NotBlank | Обязательное свойство не передано или передано пустым |
| Url | Адрес некорректен или использует схему, отличную от https |
| Choice | Значение не входит в список допустимых |
| Invalid | Остальные ошибки: превышена длина, неизвестное свойство, неверный тип |
Часть ошибок возвращается без массива validation-errors — с описанием в свойстве detail. Так возвращаются ошибки формы запроса (тело не является массивом, некорректный JSON, некорректные page и limit) и превышение отдельных лимитов.
{
"validation-errors": [
{
"request_id": 0,
"errors": [
{
"code": "NotBlank",
"path": "name",
"detail": "This value should not be blank."
},
{
"code": "Url",
"path": "mcp.url",
"detail": "This value is not a valid URL."
}
]
}
],
"title": "Bad Request",
"type": "https://httpstatus.es/400",
"status": 400,
"detail": "Request validation failed"
}