REST API · v1

Справочник API

API Avenlith построен по принципам REST: принимает JSON, возвращает JSON, использует стандартные коды HTTP и аутентификацию по bearer-токену.

Базовый URLhttps://api.avenlith.com/v1

Серверы

Список серверов

GET/servers

Возвращает все серверы проекта токена, начиная с новых.

Параметры

  • regionstringqueryнеобязательный

    Фильтр по коду региона, например `ist1`.

  • labelstringqueryнеобязательный

    Фильтр по метке, например `role=web`.

  • per_pageintegerqueryнеобязательный

    Элементов на страницу, 1–200. По умолчанию 50.

  • cursorstringqueryнеобязательный

    Курсор из `meta.next_cursor` предыдущей страницы.

Запрос

Shell
curl -X GET https://api.avenlith.com/v1/servers \
  -H "Authorization: Bearer $AVENLITH_TOKEN"

Ответ

JSON
{
  "data": [{
      "id": "srv_8f2k1",
      "name": "web-01",
      "status": "running",
      "plan": "vps-pro",
      "region": "ist1",
      "image": "ubuntu-26.04",
      "ipv4": "203.0.113.24",
      "ipv6": "2a0f:9400:7a00::1",
      "shield": "standard",
      "labels": { "role": "web" },
      "created_at": "2026-09-18T09:12:44Z"
    }],
  "meta": { "per_page": 50, "next_cursor": null }
}

Создать сервер

POST/servers

Создаёт облачный сервер. Ответ приходит сразу со статусом provisioning; обычно через 40 секунд сервер переходит в running.

Параметры

  • namestringbodyобязательный

    Имя хоста, 1–63 символа.

  • planstringbodyобязательный

    Код тарифа, например `vps-pro`.

  • regionstringbodyобязательный

    Код региона.

  • imagestringbodyобязательный

    Код образа или ID снапшота.

  • ssh_keysstring[]bodyнеобязательный

    ID SSH-ключей для установки.

  • shieldstringbodyнеобязательный

    `standard` (по умолчанию), `advanced` или `enterprise`.

  • labelsobjectbodyнеобязательный

    Метки ключ/значение для фильтрации и файрволов.

Запрос

Shell
curl -X POST https://api.avenlith.com/v1/servers \
  -H "Authorization: Bearer $AVENLITH_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "name": "web-01", "plan": "vps-pro", "region": "ist1", "image": "ubuntu-26.04", "ssh_keys": ["key_31xa"], "shield": "advanced", "labels": { "role": "web" } }'

Ответ

JSON
{
  "id": "srv_8f2k1",
  "name": "web-01",
  "status": "provisioning",
  "plan": "vps-pro",
  "region": "ist1",
  "image": "ubuntu-26.04",
  "ipv4": "203.0.113.24",
  "ipv6": "2a0f:9400:7a00::1",
  "shield": "standard",
  "labels": { "role": "web" },
  "created_at": "2026-09-18T09:12:44Z"
}

Получить сервер

GET/servers/{id}

Возвращает один сервер.

Параметры

  • idstringpathобязательный

    ID сервера, например `srv_8f2k1`.

Запрос

Shell
curl -X GET https://api.avenlith.com/v1/servers/{id} \
  -H "Authorization: Bearer $AVENLITH_TOKEN"

Ответ

JSON
{
  "id": "srv_8f2k1",
  "name": "web-01",
  "status": "running",
  "plan": "vps-pro",
  "region": "ist1",
  "image": "ubuntu-26.04",
  "ipv4": "203.0.113.24",
  "ipv6": "2a0f:9400:7a00::1",
  "shield": "standard",
  "labels": { "role": "web" },
  "created_at": "2026-09-18T09:12:44Z"
}

Перезагрузить сервер

POST/servers/{id}/actions/reboot

Отправляет ACPI-перезагрузку. Для сервера, который не отвечает, используйте "hard": true.

Параметры

  • idstringpathобязательный

    ID сервера, например `srv_8f2k1`.

  • hardbooleanbodyнеобязательный

    Перезагрузка по питанию вместо штатной.

Запрос

Shell
curl -X POST https://api.avenlith.com/v1/servers/{id}/actions/reboot \
  -H "Authorization: Bearer $AVENLITH_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "hard": false }'

Ответ

JSON
{ "action_id": "act_2Lw9", "status": "in_progress" }

Удалить сервер

DELETE/servers/{id}

Безвозвратно удаляет сервер и его диски. Снапшоты и бэкапы сохраняются.

Параметры

  • idstringpathобязательный

    ID сервера, например `srv_8f2k1`.

Запрос

Shell
curl -X DELETE https://api.avenlith.com/v1/servers/{id} \
  -H "Authorization: Bearer $AVENLITH_TOKEN"

Ответ

JSON
{ "deleted": true }

Сеть

Список частных сетей

GET/networks

Возвращает частные сети и подключённые серверы.

Параметры

  • per_pageintegerqueryнеобязательный

    Элементов на страницу, 1–200. По умолчанию 50.

  • cursorstringqueryнеобязательный

    Курсор из `meta.next_cursor` предыдущей страницы.

Запрос

Shell
curl -X GET https://api.avenlith.com/v1/networks \
  -H "Authorization: Bearer $AVENLITH_TOKEN"

Ответ

JSON
{
  "data": [
    { "id": "net_5d1q", "name": "app-net", "region": "ist1", "cidr": "10.20.0.0/24", "servers": ["srv_8f2k1", "srv_9a7c3"] }
  ],
  "meta": { "per_page": 50, "next_cursor": null }
}

Назначить плавающий IP

POST/floating-ips/{ip}/assign

Переносит плавающий IP на другой сервер того же региона. Трафик переключается менее чем за секунду.

Параметры

  • ipstringpathобязательный

    Плавающий IP-адрес.

  • server_idstringbodyобязательный

    ID целевого сервера.

Запрос

Shell
curl -X POST https://api.avenlith.com/v1/floating-ips/{ip}/assign \
  -H "Authorization: Bearer $AVENLITH_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "server_id": "srv_9a7c3" }'

Ответ

JSON
{ "ip": "203.0.113.50", "server_id": "srv_9a7c3", "region": "ist1" }

Shield

Список атак

GET/shield/attacks

Возвращает отражённые атаки на проект с векторами и пиковыми значениями.

Параметры

  • sincestringqueryнеобязательный

    Дата ISO 8601 или относительное значение, например `7d`.

  • targetstringqueryнеобязательный

    Фильтр по атакованному IP.

  • per_pageintegerqueryнеобязательный

    Элементов на страницу, 1–200. По умолчанию 50.

Запрос

Shell
curl -X GET https://api.avenlith.com/v1/shield/attacks \
  -H "Authorization: Bearer $AVENLITH_TOKEN"

Ответ

JSON
{
  "data": [
    {
      "id": "atk_9Qx2",
      "target": "203.0.113.24",
      "vectors": ["udp_amplification", "syn_flood"],
      "peak_bps": 412000000000,
      "peak_pps": 38200000,
      "started_at": "2026-09-18T21:04:11Z",
      "ended_at": "2026-09-18T21:31:40Z"
    }
  ],
  "meta": { "per_page": 50, "next_cursor": null }
}

Создать правило фильтрации

POST/shield/rules

Применяет профиль фильтрации к диапазону портов IP-адреса.

Параметры

  • targetstringbodyобязательный

    Защищаемый IP-адрес.

  • protocolstringbodyобязательный

    `tcp` или `udp`.

  • portsstringbodyобязательный

    Порт или диапазон, например `27015-27030`.

  • profilestringbodyобязательный

    Код профиля, см. Профили фильтрации.

Запрос

Shell
curl -X POST https://api.avenlith.com/v1/shield/rules \
  -H "Authorization: Bearer $AVENLITH_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "target": "203.0.113.24", "protocol": "udp", "ports": "27015-27030", "profile": "game-source" }'

Ответ

JSON
{ "id": "rule_7Fk2", "target": "203.0.113.24", "protocol": "udp", "ports": "27015-27030", "profile": "game-source", "active": true }

Аккаунт и оплата

Список SSH-ключей

GET/ssh-keys

Возвращает SSH-ключи, доступные для новых серверов.

Запрос

Shell
curl -X GET https://api.avenlith.com/v1/ssh-keys \
  -H "Authorization: Bearer $AVENLITH_TOKEN"

Ответ

JSON
{
  "data": [
    { "id": "key_31xa", "name": "laptop", "fingerprint": "SHA256:Qm4b…9Zs", "created_at": "2026-05-02T08:00:00Z" }
  ]
}

Добавить SSH-ключ

POST/ssh-keys

Загружает публичный ключ. Принимаются Ed25519 и RSA (от 3072 бит).

Параметры

  • namestringbodyобязательный

    Отображаемое имя.

  • public_keystringbodyобязательный

    Публичный ключ в формате OpenSSH.

Запрос

Shell
curl -X POST https://api.avenlith.com/v1/ssh-keys \
  -H "Authorization: Bearer $AVENLITH_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "name": "laptop", "public_key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI… you@company.com" }'

Ответ

JSON
{ "id": "key_31xa", "name": "laptop", "fingerprint": "SHA256:Qm4b…9Zs" }

Список счетов

GET/invoices

Возвращает счета с суммами и ссылкой на PDF.

Параметры

  • statusstringqueryнеобязательный

    `open`, `paid` или `overdue`.

  • per_pageintegerqueryнеобязательный

    Элементов на страницу, 1–200. По умолчанию 50.

  • cursorstringqueryнеобязательный

    Курсор из `meta.next_cursor` предыдущей страницы.

Запрос

Shell
curl -X GET https://api.avenlith.com/v1/invoices \
  -H "Authorization: Bearer $AVENLITH_TOKEN"

Ответ

JSON
{
  "data": [
    { "id": "inv_2026_0913", "status": "paid", "currency": "EUR", "total": 812.40, "issued_at": "2026-09-01", "pdf_url": "https://console.avenlith.com/invoices/inv_2026_0913.pdf" }
  ],
  "meta": { "per_page": 50, "next_cursor": null }
}