Контейнеры
Управление контейнерами через REST API: создание, обновление конфигурации, масштабирование, пауза, режим спасения, логи и выполнение команд. Все методы требуют токен аутентификации.
POST /v1/project/:projectId/container
Создаёт новый контейнер в указанном проекте с заданной конфигурацией: образом, ресурсами (CPU, память), портами, переменными окружения, конфигами, томами и стратегией обновления (Recreate или RollingUpdate, по умолчанию Recreate).
Параметры:
| Параметр | Место | Тип | Обязательный | Описание |
|---|---|---|---|---|
projectId |
Path | UUID | Да | ID проекта |
Body:
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
name |
string | Да | Имя контейнера (3–60 символов, латиница в нижнем регистре, цифры и дефис, начинается с буквы) |
image |
string | Да | Docker-образ контейнера |
replicas |
number | Нет | Количество реплик (по умолчанию 1) |
cpu |
number | Да | Количество CPU ядер (минимум 1) |
cpuFraction |
number | Нет | Доля CPU в процентах (10, 20, 50 или 100, по умолчанию 20) |
memory |
number | Да | Объём памяти в байтах (минимум 64MB) |
ports |
string[] | Нет | Массив портов контейнера |
init |
array | Нет | Массив init-контейнеров |
initRoot |
boolean | Нет | Запуск init-контейнеров от root |
variables |
array | Нет | Массив переменных окружения |
configs |
array | Нет | Массив конфигураций |
volumes |
array | Нет | Массив томов |
uid |
number | Нет | UID пользователя в контейнере |
gid |
number | Нет | GID группы в контейнере |
entrypoint |
string[] | Нет | Entrypoint контейнера |
cmd |
string[] | Нет | Команда запуска контейнера |
strategy |
string | Нет | Стратегия обновления (Recreate или RollingUpdate, по умолчанию Recreate) |
Пример запроса:
{
"name": "my-app",
"image": "nginx:latest",
"replicas": 2,
"cpu": 1,
"cpuFraction": 20,
"memory": 536870912,
"ports": ["80/TCP", "443/TCP"],
"variables": [
{
"name": "DATABASE_URL",
"value": "postgres://localhost:5432/db"
}
],
"strategy": "Recreate"
}
Структура variables[]:
| Поле | Тип | Обязательный | Описание |
|---|---|---|---|
name |
string | Да | Имя переменной |
value |
string | Да | Значение переменной |
Структура configs[]:
| Поле | Тип | Обязательный | Описание |
|---|---|---|---|
name |
string | Да | Имя конфига |
mountPath |
string | Да | Путь монтирования |
Структура volumes[]:
| Поле | Тип | Обязательный | Описание |
|---|---|---|---|
name |
string | Да | Имя тома |
mountPath |
string | Да | Путь монтирования |
subPath |
string | Нет | Подпуть внутри тома |
Ответ:
{
"id": "660e8400-e29b-41d4-a716-446655440010",
"name": "my-app",
"image": "nginx:latest",
"replicas": 2,
"cpu": 1,
"cpuFraction": 20,
"memory": 536870912,
"ports": ["80/TCP", "443/TCP"],
"variables": [
{
"name": "DATABASE_URL",
"value": "postgres://localhost:5432/db"
}
],
"configs": [
{
"name": "n8n-postgresql.conf",
"mountPath": "/etc/postgresql/postgresql.conf"
}
],
"volumes": [
{
"name": "n8n-data",
"mountPath": "/var/lib/postgresql/data",
"subPath": ""
}
],
"strategy": "Recreate",
"status": "creating",
"paused": false,
"rescueMode": false,
"createdAt": "2024-01-15T10:30:00+00:00",
"updatedAt": "2024-01-15T10:30:00+00:00"
}
Ошибки:
404 Not Found— Проект не найден400 Bad Request— Превышен лимит на количество контейнеров, CPU, память или реплик проекта400 Bad Request— Превышен максимальный CPU или память на один контейнер400 Bad Request— Невалидные параметры
DELETE /v1/container/:containerId
Удаляет контейнер по его UUID. При успешном удалении метод возвращает пустой ответ без тела — результат в виде объекта Container не выдаётся, а последующие запросы к этому идентификатору завершаются ошибкой «не найден».
Параметры:
| Параметр | Место | Тип | Обязательный | Описание |
|---|---|---|---|---|
containerId |
Path | UUID | Да | ID контейнера |
Ответ: 204 No Content — пустой ответ при успешном удалении.
Ошибки:
404 Not Found— Контейнер не найден
GET /v1/project/:projectId/containers
Возвращает список всех контейнеров указанного проекта. Каждый элемент массива — полный объект Container с текущей конфигурацией, статусом, флагами паузы и режима спасения. Метод только читает данные и не изменяет состояние контейнеров.
Параметры:
| Параметр | Место | Тип | Обязательный | Описание |
|---|---|---|---|---|
projectId |
Path | UUID | Да | ID проекта |
Ответ:
[
{
"id": "660e8400-e29b-41d4-a716-446655440010",
"name": "my-app",
"image": "nginx:latest",
"replicas": 2,
"cpu": 1,
"cpuFraction": 20,
"memory": 536870912,
"ports": ["80/TCP", "443/TCP"],
"variables": [
{
"name": "DATABASE_URL",
"value": "postgres://localhost:5432/db"
}
],
"configs": [
{
"name": "n8n-postgresql.conf",
"mountPath": "/etc/postgresql/postgresql.conf"
}
],
"volumes": [
{
"name": "n8n-data",
"mountPath": "/var/lib/postgresql/data",
"subPath": ""
}
],
"strategy": "Recreate",
"status": "ready",
"paused": false,
"rescueMode": false,
"createdAt": "2024-01-15T10:30:00+00:00",
"updatedAt": "2024-01-15T12:45:00+00:00"
},
{
"id": "660e8400-e29b-41d4-a716-446655440030",
"name": "my-db",
"image": "postgres:16",
"replicas": 1,
"cpu": 1,
"cpuFraction": 50,
"memory": 1073741824,
"ports": ["5432/TCP"],
"strategy": "RollingUpdate",
"status": "ready",
"paused": false,
"rescueMode": false,
"createdAt": "2024-02-20T09:00:00+00:00",
"updatedAt": "2024-02-21T15:30:00+00:00"
}
]
Ошибки:
404 Not Found— Проект не найден
GET /v1/container/:containerId
Возвращает контейнер по его UUID. Ответ содержит полный объект Container с актуальной конфигурацией и текущим статусом. Подходит для отслеживания результата асинхронных операций — создания, обновления, масштабирования, паузы и режима спасения.
Параметры:
| Параметр | Место | Тип | Обязательный | Описание |
|---|---|---|---|---|
containerId |
Path | UUID | Да | ID контейнера |
Ответ:
{
"id": "660e8400-e29b-41d4-a716-446655440010",
"name": "my-app",
"image": "nginx:latest",
"replicas": 2,
"cpu": 1,
"cpuFraction": 20,
"memory": 536870912,
"ports": ["80/TCP", "443/TCP"],
"variables": [
{
"name": "DATABASE_URL",
"value": "postgres://localhost:5432/db"
}
],
"configs": [
{
"name": "n8n-postgresql.conf",
"mountPath": "/etc/postgresql/postgresql.conf"
}
],
"volumes": [
{
"name": "n8n-data",
"mountPath": "/var/lib/postgresql/data",
"subPath": ""
}
],
"strategy": "Recreate",
"status": "ready",
"paused": false,
"rescueMode": false,
"createdAt": "2024-01-15T10:30:00+00:00",
"updatedAt": "2024-01-15T12:45:00+00:00"
}
Ошибки:
404 Not Found— Контейнер не найден
POST /v1/container/:containerId/reload
Перезапускает контейнер без изменения его конфигурации. После вызова контейнер переходит в статус updating, а по завершении перезапуска возвращается в рабочее состояние. Позволяет перезапустить приложение, не пересоздавая контейнер с новыми параметрами.
Параметры:
| Параметр | Место | Тип | Обязательный | Описание |
|---|---|---|---|---|
containerId |
Path | UUID | Да | ID контейнера |
Ответ:
{
"id": "660e8400-e29b-41d4-a716-446655440010",
"name": "my-app",
"image": "nginx:latest",
"replicas": 2,
"cpu": 1,
"cpuFraction": 20,
"memory": 536870912,
"ports": ["80/TCP", "443/TCP"],
"variables": [
{
"name": "DATABASE_URL",
"value": "postgres://localhost:5432/db"
}
],
"configs": [
{
"name": "n8n-postgresql.conf",
"mountPath": "/etc/postgresql/postgresql.conf"
}
],
"volumes": [
{
"name": "n8n-data",
"mountPath": "/var/lib/postgresql/data",
"subPath": ""
}
],
"strategy": "Recreate",
"status": "updating",
"paused": false,
"rescueMode": false,
"createdAt": "2024-01-15T10:30:00+00:00",
"updatedAt": "2024-01-15T13:00:00+00:00"
}
Ошибки:
404 Not Found— Контейнер не найден
POST /v1/container/:containerId/scale
Изменяет количество реплик контейнера на новое значение из тела запроса. В ответе возвращается объект Container с уже обновлённым полем replicas и статусом updating — доведение реплик до целевого количества происходит асинхронно.
Параметры:
| Параметр | Место | Тип | Обязательный | Описание |
|---|---|---|---|---|
containerId |
Path | UUID | Да | ID контейнера |
Body:
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
replicas |
number | Да | Новое количество реплик |
Пример запроса:
{
"replicas": 5
}
Ответ:
{
"id": "660e8400-e29b-41d4-a716-446655440010",
"name": "my-app",
"image": "nginx:latest",
"replicas": 5,
"cpu": 1,
"cpuFraction": 20,
"memory": 536870912,
"ports": ["80/TCP", "443/TCP"],
"variables": [
{
"name": "DATABASE_URL",
"value": "postgres://localhost:5432/db"
}
],
"configs": [
{
"name": "n8n-postgresql.conf",
"mountPath": "/etc/postgresql/postgresql.conf"
}
],
"volumes": [
{
"name": "n8n-data",
"mountPath": "/var/lib/postgresql/data",
"subPath": ""
}
],
"strategy": "Recreate",
"status": "updating",
"paused": false,
"rescueMode": false,
"createdAt": "2024-01-15T10:30:00+00:00",
"updatedAt": "2024-01-15T13:15:00+00:00"
}
Ошибки:
404 Not Found— Контейнер не найден400 Bad Request— Превышен максимальный лимит реплик400 Bad Request— Превышен лимит CPU или памяти проекта
PUT /v1/container/:containerId
Обновляет конфигурацию существующего контейнера — принимает те же параметры, что и создание. После вызова контейнер переходит в статус updating, а порядок применения изменений определяется стратегией обновления (Recreate или RollingUpdate).
Параметры:
| Параметр | Место | Тип | Обязательный | Описание |
|---|---|---|---|---|
containerId |
Path | UUID | Да | ID контейнера |
Пример запроса:
{
"image": "nginx:1.25",
"replicas": 3,
"cpu": 2,
"memory": 1073741824
}
Ответ:
{
"id": "660e8400-e29b-41d4-a716-446655440010",
"name": "my-app",
"image": "nginx:1.25",
"replicas": 3,
"cpu": 2,
"cpuFraction": 20,
"memory": 1073741824,
"ports": ["80/TCP", "443/TCP"],
"variables": [
{
"name": "DATABASE_URL",
"value": "postgres://localhost:5432/db"
}
],
"configs": [
{
"name": "n8n-postgresql.conf",
"mountPath": "/etc/postgresql/postgresql.conf"
}
],
"volumes": [
{
"name": "n8n-data",
"mountPath": "/var/lib/postgresql/data",
"subPath": ""
}
],
"strategy": "Recreate",
"status": "updating",
"paused": false,
"rescueMode": false,
"createdAt": "2024-01-15T10:30:00+00:00",
"updatedAt": "2024-01-15T13:30:00+00:00"
}
Ошибки:
404 Not Found— Контейнер не найден400 Bad Request— Превышены лимиты проекта или максимальные значения CPU, памяти, реплик400 Bad Request— Невалидные параметры
PATCH /v1/container/:containerId/image
Заменяет только Docker-образ контейнера, не затрагивая остальные параметры конфигурации. В ответе возвращается объект Container с новым значением поля image и статусом updating — переход реплик на новый образ происходит асинхронно. Подходит для точечного обновления версии образа без полной переконфигурации.
Параметры:
| Параметр | Место | Тип | Обязательный | Описание |
|---|---|---|---|---|
containerId |
Path | UUID | Да | ID контейнера |
Body:
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
image |
string | Да | Новый Docker-образ |
Пример запроса:
{
"image": "nginx:1.26"
}
Ответ:
{
"id": "660e8400-e29b-41d4-a716-446655440010",
"name": "my-app",
"image": "nginx:1.26",
"replicas": 2,
"cpu": 1,
"cpuFraction": 20,
"memory": 536870912,
"ports": ["80/TCP", "443/TCP"],
"variables": [
{
"name": "DATABASE_URL",
"value": "postgres://localhost:5432/db"
}
],
"configs": [
{
"name": "n8n-postgresql.conf",
"mountPath": "/etc/postgresql/postgresql.conf"
}
],
"volumes": [
{
"name": "n8n-data",
"mountPath": "/var/lib/postgresql/data",
"subPath": ""
}
],
"strategy": "Recreate",
"status": "updating",
"paused": false,
"rescueMode": false,
"createdAt": "2024-01-15T10:30:00+00:00",
"updatedAt": "2024-01-15T13:45:00+00:00"
}
Ошибки:
404 Not Found— Контейнер не найден
POST /v1/container/:containerId/pause/enable
Приостанавливает работу контейнера. В ответе возвращается объект Container со статусом paused, флагом paused: true и заполненным полем pausedAt с датой приостановки. Возобновить работу можно методом pause/disable — конфигурация при этом сохраняется.
Параметры:
| Параметр | Место | Тип | Обязательный | Описание |
|---|---|---|---|---|
containerId |
Path | UUID | Да | ID контейнера |
Ответ:
{
"id": "660e8400-e29b-41d4-a716-446655440010",
"name": "my-app",
"image": "nginx:latest",
"replicas": 2,
"cpu": 1,
"cpuFraction": 20,
"memory": 536870912,
"ports": ["80/TCP", "443/TCP"],
"variables": [
{
"name": "DATABASE_URL",
"value": "postgres://localhost:5432/db"
}
],
"configs": [
{
"name": "n8n-postgresql.conf",
"mountPath": "/etc/postgresql/postgresql.conf"
}
],
"volumes": [
{
"name": "n8n-data",
"mountPath": "/var/lib/postgresql/data",
"subPath": ""
}
],
"strategy": "Recreate",
"status": "paused",
"paused": true,
"rescueMode": false,
"createdAt": "2024-01-15T10:30:00+00:00",
"updatedAt": "2024-01-15T14:00:00+00:00",
"pausedAt": "2024-01-15T14:00:00+00:00"
}
Ошибки:
404 Not Found— Контейнер не найден
POST /v1/container/:containerId/pause/disable
Возобновляет работу приостановленного контейнера. Контейнер возвращается в статус ready, флаг паузы сбрасывается, а поле pausedAt очищается в null. Работает в паре с pause/enable и не изменяет конфигурацию контейнера.
Параметры:
| Параметр | Место | Тип | Обязательный | Описание |
|---|---|---|---|---|
containerId |
Path | UUID | Да | ID контейнера |
Ответ:
{
"id": "660e8400-e29b-41d4-a716-446655440010",
"name": "my-app",
"image": "nginx:latest",
"replicas": 2,
"cpu": 1,
"cpuFraction": 20,
"memory": 536870912,
"ports": ["80/TCP", "443/TCP"],
"variables": [
{
"name": "DATABASE_URL",
"value": "postgres://localhost:5432/db"
}
],
"configs": [
{
"name": "n8n-postgresql.conf",
"mountPath": "/etc/postgresql/postgresql.conf"
}
],
"volumes": [
{
"name": "n8n-data",
"mountPath": "/var/lib/postgresql/data",
"subPath": ""
}
],
"strategy": "Recreate",
"status": "ready",
"paused": false,
"rescueMode": false,
"createdAt": "2024-01-15T10:30:00+00:00",
"updatedAt": "2024-01-15T14:30:00+00:00",
"pausedAt": null
}
Ошибки:
404 Not Found— Контейнер не найден
POST /v1/container/:containerId/rescue-mode/enable
Включает режим спасения для контейнера. Контейнер переводится в статус updating, а поле rescueMode принимает значение true. Возврат к обычному режиму выполняется методом rescue-mode/disable.
Параметры:
| Параметр | Место | Тип | Обязательный | Описание |
|---|---|---|---|---|
containerId |
Path | UUID | Да | ID контейнера |
Ответ:
{
"id": "660e8400-e29b-41d4-a716-446655440010",
"name": "my-app",
"image": "nginx:latest",
"replicas": 2,
"cpu": 1,
"cpuFraction": 20,
"memory": 536870912,
"ports": ["80/TCP", "443/TCP"],
"variables": [
{
"name": "DATABASE_URL",
"value": "postgres://localhost:5432/db"
}
],
"configs": [
{
"name": "n8n-postgresql.conf",
"mountPath": "/etc/postgresql/postgresql.conf"
}
],
"volumes": [
{
"name": "n8n-data",
"mountPath": "/var/lib/postgresql/data",
"subPath": ""
}
],
"strategy": "Recreate",
"status": "updating",
"paused": false,
"rescueMode": true,
"createdAt": "2024-01-15T10:30:00+00:00",
"updatedAt": "2024-01-15T15:00:00+00:00"
}
Ошибки:
404 Not Found— Контейнер не найден
POST /v1/container/:containerId/rescue-mode/disable
Выключает режим спасения контейнера. Контейнер переводится в статус updating, а поле rescueMode возвращается к значению false. Работает в паре с rescue-mode/enable.
Параметры:
| Параметр | Место | Тип | Обязательный | Описание |
|---|---|---|---|---|
containerId |
Path | UUID | Да | ID контейнера |
Ответ:
{
"id": "660e8400-e29b-41d4-a716-446655440010",
"name": "my-app",
"image": "nginx:latest",
"replicas": 2,
"cpu": 1,
"cpuFraction": 20,
"memory": 536870912,
"ports": ["80/TCP", "443/TCP"],
"variables": [
{
"name": "DATABASE_URL",
"value": "postgres://localhost:5432/db"
}
],
"configs": [
{
"name": "n8n-postgresql.conf",
"mountPath": "/etc/postgresql/postgresql.conf"
}
],
"volumes": [
{
"name": "n8n-data",
"mountPath": "/var/lib/postgresql/data",
"subPath": ""
}
],
"strategy": "Recreate",
"status": "updating",
"paused": false,
"rescueMode": false,
"createdAt": "2024-01-15T10:30:00+00:00",
"updatedAt": "2024-01-15T15:30:00+00:00"
}
Ошибки:
404 Not Found— Контейнер не найден
GET /v1/container/:containerId/stats
Возвращает статистику использования ресурсов контейнера: потребление CPU в millicores, занятую память, сетевой трафик в обе стороны, количество реплик и перезапусков, а также текущий статус. Наряду с фактическим потреблением (cpuUsage, memoryUsage) в ответе присутствуют заданные лимиты (cpu, cpuFraction, memory).
Параметры:
| Параметр | Место | Тип | Обязательный | Описание |
|---|---|---|---|---|
containerId |
Path | UUID | Да | ID контейнера |
Ответ:
{
"id": "660e8400-e29b-41d4-a716-446655440010",
"cpu": 1,
"cpuFraction": 20,
"cpuUsage": 150,
"memory": 536870912,
"memoryUsage": 268435456,
"networkReceive": 1048576,
"networkTransmit": 524288,
"replicas": 2,
"restartCount": 0,
"status": "ready"
}
Ошибки:
404 Not Found— Контейнер не найден
GET /v1/container/:containerId/replicas
Возвращает список реплик контейнера с их текущим состоянием. Для каждой реплики доступны потребление CPU и памяти, сетевой трафик, использование файловой системы, IP-адрес, количество перезапусков и статус, а при ошибке — её текст, причина и время возникновения.
Параметры:
| Параметр | Место | Тип | Обязательный | Описание |
|---|---|---|---|---|
containerId |
Path | UUID | Да | ID контейнера |
Ответ:
[
{
"id": "d0fdbfff-0beb-407c-8589-74a689be6539",
"cpuUsage": 0.0004,
"memoryUsage": 93749248,
"memoryAllocate": 182640640,
"networkTransmit": 112,
"networkReceive": 167,
"fsUsage": 0,
"status": "ready",
"ip": "10.160.21.125",
"isError": false,
"errorMsg": null,
"errorReason": null,
"errorAt": null,
"restartCount": 2,
"createdAt": "2026-08-13T09:12:53+00:00",
"updatedAt": "2026-08-26T10:50:44+00:00"
}
]
Ошибки:
404 Not Found— Контейнер не найден
GET /v1/container/:containerId/logs
Возвращает логи контейнера. Поддерживает потоковую передачу через SSE при follow=true: в разовом режиме отдаются последние строки (по умолчанию 100), а в потоковом новые записи доставляются с заданным интервалом до истечения timeoutSeconds. Логи можно фильтровать по конкретной реплике, а также запрашивать записи init-команд и предыдущего экземпляра контейнера.
Параметры:
| Параметр | Место | Тип | Обязательный | Описание |
|---|---|---|---|---|
containerId |
Path | UUID | Да | ID контейнера |
follow |
Query | boolean | Нет | Потоковая передача логов через SSE (по умолчанию false) |
replicaId |
Query | string | Нет | Фильтр логов по конкретной реплике (UUID) |
tail |
Query | number | Нет | Количество строк с конца (от 1 до 1000, по умолчанию 100) |
init |
Query | boolean | Нет | Показать логи init-команд (по умолчанию false) |
previous |
Query | boolean | Нет | Показать логи предыдущего экземпляра контейнера (по умолчанию false) |
interval |
Query | number | Нет | Интервал обновления в мс для follow режима (от 5000 до 30000, по умолчанию 5000) |
timeoutSeconds |
Query | number | Нет | Максимальная длительность стрима в секундах (от 60 до 3600, по умолчанию 300) |
Ответ — разовое получение (follow=false):
[
{
"time": "2024-01-15T10:30:00+00:00",
"name": "my-app-abc123",
"containerId": "660e8400-e29b-41d4-a716-446655440010",
"projectId": "660e8400-e29b-41d4-a716-446655440001",
"projectName": "my-project",
"replicaId": "770e8400-e29b-41d4-a716-446655440020",
"message": "Application started successfully"
}
]
Ответ (SSE) — потоковая передача (follow=true):
data: [{"time":"2024-01-15T10:30:00+00:00","name":"my-app-abc123","containerId":"660e8400-e29b-41d4-a716-446655440010","projectId":"660e8400-e29b-41d4-a716-446655440001","projectName":"my-project","replicaId":"770e8400-e29b-41d4-a716-446655440020","message":"Application started successfully"}
data: {"time":"2024-01-15T10:30:05+00:00","name":"my-app-abc123","containerId":"660e8400-e29b-41d4-a716-446655440010","projectId":"660e8400-e29b-41d4-a716-446655440001","projectName":"my-project","replicaId":"770e8400-e29b-41d4-a716-446655440020","message":"Processing request..."}
Ошибки:
404 Not Found— Контейнер не найден400 Bad Request— Невалидные параметры (tail или interval вне диапазона)
POST /v1/container/:containerId/exec
Выполняет команду в контейнере и возвращает её результат: стандартный вывод, стандартный поток ошибок и код завершения. Команда выполняется через shell sh -c, без TTY и с ограничением по времени 60 секунд — при превышении возвращается ошибка таймаута. Если replicaId не указан, команда выполняется на первой реплике контейнера.
Параметры:
| Параметр | Место | Тип | Обязательный | Описание |
|---|---|---|---|---|
containerId |
Path | UUID | Да | ID контейнера |
Body:
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
cmd |
string | Да | Команда для выполнения в контейнере (выполняется через shell sh -c) |
replicaId |
string | Нет | UUID реплики для выполнения (если не указан, используется первая) |
Пример запроса:
{
"cmd": "ls -la /tmp",
"replicaId": "d0fdbfff-0beb-407c-8589-74a689be6539"
}
Ответ:
{
"stdout": "total 8\ndrwxrwxrwt 2 root root 4096 Jan 15 10:00 .\ndrwxr-xr-x 1 root root 4096 Jan 15 09:00 ..\n",
"stderr": "",
"exitCode": 0
}
Ошибки:
404 Not Found— Контейнер или реплика не найдены408 Request Timeout— Превышено время выполнения команды (60 секунд)400 Bad Request— Невалидные параметры