---
slug: "selectel"
name: "Selectel API"
vendor: "Selectel"
industry: "cloud"
docsUrl: "https://docs.selectel.ru/api/"
version: 2
updatedAt: "2026-10-24"
---

# Selectel API

Отрасль: Облака и хостинг. Актуально на 2026-10-24.

Набор API облачного провайдера Selectel: аутентификация и IAM, облачные проекты и ресурсы (Resell API), биллинг, DNS-хостинг, выделенные серверы, Managed Kubernetes, облачные базы данных, объектное хранилище, Container Registry, сертификаты, секреты, аудит-логи и др. Сами облачные серверы, диски и сети создаются через OpenStack API. У каждого продукта свой базовый адрес, для части сервисов он зависит от пула (региона).

## Сценарии

### Получить IAM-токен сервисного пользователя

Первый шаг автоматизации Selectel: токен для API проектов, DNS и облачных ресурсов.

1. Создай сервисного пользователя в панели управления с нужными ролями — для рабочих интеграций документация рекомендует именно их.
2. Получи токен: POST /identity/v3/auth/tokens на cloud.api.selcloud.ru с методом password — имя сервисного пользователя, ID аккаунта как domain и пароль. scope = domain даёт токен аккаунта, scope = project — токен проекта.
3. Токен приходит в заголовке ответа X-Subject-Token с кодом 201 и живёт 24 часа. Передавай его в заголовке X-Auth-Token.

```bash
TOKEN=$(curl -si -X POST https://cloud.api.selcloud.ru/identity/v3/auth/tokens \
  -H 'Content-Type: application/json' \
  -d '{"auth": {
        "identity": {"methods": ["password"], "password": {"user": {
          "name": "<сервисный пользователь>", "domain": {"name": "<ID аккаунта>"}, "password": "<пароль>"}}},
        "scope": {"domain": {"name": "<ID аккаунта>"}}}}' \
  | grep -i '^x-subject-token' | cut -d' ' -f2 | tr -d '\r')
```

### Управлять DNS-записями домена

Автоматически добавлять поддомены для клиентов, менять записи при переезде, подтверждать домен TXT-записью.

1. Получи зоны: GET /domains/v2/zones с токеном проекта — найди id своей зоны. Новую зону создаёт POST /domains/v2/zones (имя с точкой в конце).
2. Добавь запись: POST /domains/v2/zones/{zone_id}/rrset с name (полное имя с точкой в конце), type, ttl (60–604800) и records — списком content.
3. Найти существующую запись — GET /domains/v2/zones/{zone_id}/rrset с name или search; изменить — PATCH /domains/v2/zones/{zone_id}/rrset/{rrset_id} с ttl и новым records (ответ 204); удалить — DELETE по тому же адресу.

```bash
curl -X POST "https://api.selectel.ru/domains/v2/zones/<zone_id>/rrset" \
  -H "X-Auth-Token: $TOKEN" -H 'Content-Type: application/json' \
  -d '{"name": "shop.example.ru.", "type": "A", "ttl": 300, "records": [{"content": "203.0.113.10"}]}'
```

### Следить за балансом и прогнозом расходов

Не допустить отключения серверов из-за нулевого баланса.

1. Запроси балансы: GET /v3/balances — в data.billings для каждого вида биллинга итоговая сумма final_sum и долг debt_sum.
2. Запроси прогноз: GET /v2/billing/prediction — на сколько часов хватит остатка по облаку, хранилищу и другим услугам.
3. Для этих методов подходит статический токен (заголовок X-Token) или IAM-токен аккаунта. Проверяй по расписанию и шли себе предупреждение, когда прогноз меньше пары суток.

```bash
curl https://api.selectel.ru/v3/balances -H "X-Token: $SELECTEL_STATIC_TOKEN"
curl https://api.selectel.ru/v2/billing/prediction -H "X-Token: $SELECTEL_STATIC_TOKEN"
```

### Создать облачный проект и выделить публичные IP

Отдельный проект под клиента или окружение — с квотами и внешними адресами.

1. Создай проект: POST /vpc/resell/v2/projects с project.name. Список проектов — GET /vpc/resell/v2/projects, проект с квотами — GET /vpc/resell/v2/projects/{project_id}.
2. Выдели публичные IP: POST /vpc/resell/v2/floatingips/projects/{project_id} с floatingips — количеством (quantity) и регионом (region).
3. Сами серверы, диски и сети в проекте создаются через OpenStack API с токеном проекта.

```bash
PROJECT=$(curl -s -X POST https://api.selectel.ru/vpc/resell/v2/projects \
  -H "X-Auth-Token: $TOKEN" -H 'Content-Type: application/json' \
  -d '{"project": {"name": "client-1042"}}' | jq -r .project.id)

curl -X POST "https://api.selectel.ru/vpc/resell/v2/floatingips/projects/$PROJECT" \
  -H "X-Auth-Token: $TOKEN" -H 'Content-Type: application/json' \
  -d '{"floatingips": [{"quantity": 1, "region": "ru-9"}]}'
```

## Базовые URL

- Боевой: `https://api.selectel.ru`
- Identity (токены): `https://cloud.api.selcloud.ru`
- Адреса по сервисам: `https://api.selectel.ru/vpc/resell/v2`

## Авторизация

Тип: Другое

- IAM-токен аккаунта (`iam_token_account_scoped`) или проекта (`iam_token_project_scoped`) — заголовок `X-Auth-Token`, живёт 24 часа. Получается запросом `POST https://cloud.api.selcloud.ru/identity/v3/auth/tokens` (метод `password`: имя сервисного пользователя, ID аккаунта как домен, пароль; `scope` — `domain` или `project`). Токен возвращается в заголовке ответа `X-Subject-Token`, код `201`.
- Статический токен (`static_token`) — заголовок `X-Token`, без срока действия, только для пользователей панели; не работает с OpenStack API. Нужен для отчётов биллинга, тикетов, учёта IP.

Для рабочих интеграций документация рекомендует сервисных пользователей.

## Методы

### POST /identity/v3/auth/tokens — Получение IAM-токена

Вызывается на `https://cloud.api.selcloud.ru`.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `Content-Type` | header | string | да | application/json |
| `auth.identity.methods` | body | array | да | ["password"] |
| `auth.identity.password.user.name` | body | string | да | Имя сервисного пользователя |
| `auth.identity.password.user.domain.name` | body | string | да | ID аккаунта |
| `auth.identity.password.user.password` | body | string | да | Пароль |
| `auth.scope` | body | object | да | domain (токен аккаунта) или project с именем проекта |

### GET /v3/balances — Балансы аккаунта

В ответе `data.settings` (`mode`, `currency`), `data.billings[]` (`billing_type`, `final_sum`, `debt_sum`, `balances[]`), `data.debt_status`.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `X-Token` | header | string | да | Статический токен или IAM-токен аккаунта (X-Auth-Token) |

### GET /v2/billing/prediction — Прогноз баланса

Сколько часов хватит остатка: `data.primary`, `data.storage`, `data.vmware`, `data.vpc`.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `X-Token` | header | string | да | Статический токен или IAM-токен аккаунта |

### GET /vpc/resell/v2/projects — Список проектов

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `X-Auth-Token` | header | string | да | IAM-токен аккаунта |
| `all` | query | boolean | нет | Все проекты аккаунта (нужна роль iam.admin) |

### POST /vpc/resell/v2/projects — Создание проекта

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `project.name` | body | string | да | Имя, 1–64 символа |
| `project.description` | body | string | нет | Описание, до 255 символов |
| `project.skip_quotas_init` | body | boolean | нет | Не инициализировать квоты |

### GET /vpc/resell/v2/projects/{project_id} — Проект и его квоты

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `project_id` | path | string | да | ID проекта |
| `exclude_quotas` | query | boolean | нет | Не возвращать квоты (по умолчанию false) |

### DELETE /vpc/resell/v2/projects/{project_id} — Удаление проекта

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `project_id` | path | string | да | ID проекта |

### GET /vpc/resell/v2/floatingips — Список публичных IP

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `detailed` | query | boolean | нет | Расширенная информация |

### POST /vpc/resell/v2/floatingips/projects/{project_id} — Добавление публичных IP в проект

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `project_id` | path | string | да | ID проекта |
| `floatingips[].quantity` | body | integer | да | Количество |
| `floatingips[].region` | body | string | да | Регион (пул) |
| `floatingips[].ips` | body | string | нет | Конкретные адреса |

### GET /vpc/resell/v2/traffic/report — Отчёт по трафику

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `start_date` | query | string | да | Начало периода (дата) |
| `end_date` | query | string | да | Конец периода (дата) |

### GET /domains/v2/zones — Список DNS-зон

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `X-Auth-Token` | header | string | да | IAM-токен проекта |
| `limit` | query | integer | нет | Сколько вернуть, по умолчанию 1000 |
| `offset` | query | integer | нет | Смещение, по умолчанию 0 |
| `filter` | query | string | нет | Фильтр по имени |
| `sort_by` | query | array | нет | Сортировка, по умолчанию name.ascend |

### POST /domains/v2/zones — Создание DNS-зоны

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `name` | body | string | да | Доменное имя зоны (оканчивается точкой) |

### GET /domains/v2/zones/{zone_id}/rrset — Записи зоны

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `zone_id` | path | string | да | UUID зоны |
| `limit` | query | integer | нет | По умолчанию 1000 |
| `offset` | query | integer | нет | Смещение |
| `rrset_types` | query | array | нет | Фильтр по типу |
| `name` | query | string | нет | Фильтр по имени |
| `search` | query | string | нет | Поиск по имени или содержимому |

### POST /domains/v2/zones/{zone_id}/rrset — Создание набора записей

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `zone_id` | path | string | да | UUID зоны |
| `name` | body | string | да | Имя (FQDN с точкой в конце) |
| `ttl` | body | integer | да | 60–604800 секунд |
| `type` | body | string | да | A, AAAA, ALIAS, CAA, CNAME, DNAME, HTTPS, MX, NS, SOA, SRV, SVCB, SSHFP, TXT |
| `records` | body | array | да | 1–100 записей: content, disabled |
| `comment` | body | string | нет | Комментарий |

### PATCH /domains/v2/zones/{zone_id}/rrset/{rrset_id} — Изменение набора записей

Успех — `204`.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `zone_id` | path | string | да | UUID зоны |
| `rrset_id` | path | string | да | UUID набора записей |
| `ttl` | body | integer | да | 60–604800 секунд |
| `records` | body | array | да | Новый список записей |
| `comment` | body | string | нет | Комментарий |

### DELETE /domains/v2/zones/{zone_id}/rrset/{rrset_id} — Удаление набора записей

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `zone_id` | path | string | да | UUID зоны |
| `rrset_id` | path | string | да | UUID набора записей |

## Нюансы

- Облачные серверы, сети и диски создаются через OpenStack API; Resell API управляет проектами, квотами, публичными IP, подсетями и трафиком.
- Методы `/v2/keypairs` и лицензий в Resell API устарели и будут удалены — для SSH-ключей используйте Nova API.
- Имена зон и записей DNS — полные, с точкой в конце.
- Для пулов в Центральной Азии и Кении используются хосты `*.servercore.com`.
- У каждого API есть OpenAPI-спецификация в JSON на странице документации (например, `https://docs.selectel.ru/api/dns-actual.json`).

## Ошибки

| Код | Описание |
|---|---|
| `400` | Неверный запрос |
| `401` | Нет или неверный токен |
| `403` | Недостаточно прав |
| `404` | Объект не найден |
| `409` | Конфликт |
| `422` | Ошибка валидации |
| `500` | Внутренняя ошибка |

## Ограничения

- IAM-токен живёт 24 часа.
- DNS: TTL 60–604800 секунд, до 100 записей в наборе.

## Источники

- [Selectel API](https://docs.selectel.ru/api/)
- [Аутентификация](https://docs.selectel.ru/api/authorization/)
- [URL для запросов](https://docs.selectel.ru/api/urls/)
- [Облачные проекты и ресурсы](https://docs.selectel.ru/api/cloud-projects-and-resources/)
- [Баланс](https://docs.selectel.ru/api/balance/)
- [DNS-хостинг](https://docs.selectel.ru/api/dns-actual/)

---

Если этого недостаточно — официальная документация: https://docs.selectel.ru/api/
JSON: https://mcp-everything.ru/api/integrations/selectel. MCP: https://mcp-everything.ru/mcp
