Доступные методы
Коды ошибок
Справочник кодов ошибок API.
Обзор
При возникновении ошибки API возвращает ответ в следующем формате:
{
status: false
statusCode: number // HTTP код ответа
errorCode: number // Внутренний код ошибки
message: string // Описание ошибки
}Таблица кодов ошибок
| errorCode | message | Описание |
|---|---|---|
| 0 | access denied | Нет доступа / неверный токен |
| 1 | not found | Ресурс не найден |
| 2 | user not found | Пользователь не найден |
| 3 | bad request | Неверный запрос |
| 4 | auth params not valid | Параметры авторизации неверны |
| 5 | location not found | Локация не найдена |
| 6 | promocode not found | Промокод не найден |
| 7 | already exists | Ресурс уже существует |
| 8 | enter login instead promocode | Введите логин вместо промокода |
| 9 | no available servers | Нет доступных серверов |
| 10 | location not active | Локация неактивна |
| 11 | its your key | Это ваш ключ |
| 12 | telegram not connected | Telegram не подключён |
| 13 | promocode renew only | Промокод только для продления |
| 14 | promocode new accounts only | Промокод только для новых аккаунтов |
| 15 | referral balance not enough | Недостаточно реферального баланса |
| 16 | promocode invalid product type | Неверный тип продукта для промокода |
| 17 | tariff not available for location | Тариф недоступен для локации |
| 18 | passkey not found | Passkey не найден |
| 19 | passkey already exists | Passkey уже существует |
| 20 | passkey verification failed | Ошибка проверки passkey |
| 21 | passkey limit reached | Достигнут лимит passkey |
| 22 | magic link rate limited | Ограничение частоты magic link |
| 23 | magic link hourly limit exceeded | Превышен часовой лимит magic link |
| 24 | magic link expired | Magic link истёк |
| 25 | magic link already used | Magic link уже использован |
| 26 | magic link not found | Magic link не найден |
| 27 | custom subscription not found | Кастомная подписка не найдена |
| 28 | custom subscription limit reached | Достигнут лимит кастомных подписок |
| 29 | custom subscription item not found | Элемент кастомной подписки не найден |
| 30 | custom subscription invalid item | Неверный элемент кастомной подписки |
| 31 | config title not found | Название конфига не найдено |
| 32 | config index out of range | Индекс конфига вне диапазона |
| 33 | api key not found | API ключ не найден |
| 34 | api key limit reached | Достигнут лимит API ключей (5) |
| 35 | server not found | Сервер не найден |
| 36 | no servers available for migration | Нет серверов для миграции |
| 37 | insufficient capacity for migration | Недостаточно ёмкости для миграции |
| 38 | user banned | Пользователь заблокирован |
| 40 | device not found | Устройство не найдено |
| 41 | device limit reached | Достигнут лимит устройств |
| 42 | device is blocked | Устройство заблокировано |
| 43 | unknown device not allowed | Неизвестное устройство не разрешено |
| 44 | promocode not allowed with pricing rule | Промокод не разрешён с правилом ценообразования |
| 45 | balance not enough | Недостаточный баланс |
| 46 | invalid topup amount | Неверная сумма пополнения |
| 47 | invalid renewal days | Неверное количество дней продления |
| 48 | expired | Ресурс истёк |
| 49 | paid option config not found | Конфиг платной опции не найден |
| 50 | no servers available for paid option | Нет серверов для платной опции |
| 51 | paid option config limit reached | Достигнут лимит конфигов платной опции |
| 52 | server not available | Сервер недоступен |
| 53 | server capacity full | Ёмкость сервера заполнена |
| 54 | xray config validation failed | Ошибка валидации Xray конфига |
| 60 | port not available | Порт недоступен |
| 61 | identity already linked to another account | Идентификатор уже привязан к другому аккаунту |
| 62 | identity already linked to your account | Идентификатор уже привязан к вашему аккаунту |
| 63 | cannot unlink last identity | Нельзя отвязать последний идентификатор |
| 64 | cannot merge banned account | Нельзя объединить заблокированный аккаунт |
| 65 | merge confirmation expired | Подтверждение объединения истекло |
| 66 | invalid hostname | Неверный hostname |
| 67 | invalid client id | Неверный client id |
| 68 | invalid redirect uri | Неверный redirect uri |
| 69 | invalid authorization code | Неверный код авторизации |
| 70 | app session not found | Сессия приложения не найдена |
| 71 | app session limit reached | Достигнут лимит сессий приложения |
| 72 | awg params invalid | Некорректные параметры AWG |
| 73 | xray template invalid | Неверный Xray-шаблон |
| 74 | invalid default config for json mode | Неверный конфиг по умолчанию для JSON-режима |
| 75 | no xray-compatible configs available for json mode | Нет Xray-совместимых конфигов для JSON-режима |
| 76 | captcha verification failed | Ошибка проверки капчи |
| 77 | INVALID_ROUTING_RULES | Неверные правила маршрутизации |
| 78 | TUNNEL_CONFIG_NOT_FOUND | Конфиг туннеля не найден |
| 79 | TUNNEL_INCOMPATIBLE_PROTOCOL | Несовместимый протокол туннеля |
| 80 | TUNNEL_SELF_REFERENCE | Туннель ссылается сам на себя |
| 81 | DUPLICATE_TUNNEL_TAG | Дублирующийся тег туннеля |
| 82 | RESERVED_TAG_NAME | Зарезервированное имя тега |
| 83 | UNKNOWN_OUTBOUND_TAG | Неизвестный outbound-тег |
| 84 | AUTO_SELECT_NO_TUNNELS | Нет туннелей для авто-выбора |
| 85 | PROTOCOL_NOT_SUPPORTED | Протокол не поддерживается |
| 86 | server location does not match requested location | Локация сервера не совпадает с запрошенной |
| 87 | location is not available for this paid option | Локация недоступна для этой платной опции |
| 88 | another config creation is in progress, retry shortly | Создание конфига уже выполняется, повторите позже |
| 89 | paid option purchase limit reached | Достигнут лимит покупок платной опции |
| 89 | failed to deliver feedback | Не удалось доставить отзыв |
Код
39намеренно не используется.
Код
89назначен двум константам (PAID_OPTION_PURCHASE_LIMIT_REACHEDиFEEDBACK_DELIVERY_FAILED) — коллизия на стороне бэкенда.
HTTP коды ответов
| HTTP код | Описание |
|---|---|
| 200 | Успешный запрос |
| 201 | Ресурс успешно создан |
| 400 | Неверный запрос (bad request) |
| 401 | Не авторизован |
| 403 | Доступ запрещён |
| 404 | Ресурс не найден |
| 429 | Превышен лимит запросов |
| 500 | Внутренняя ошибка сервера |
Примеры ошибок
Неверный API ключ
{
"status": false,
"statusCode": 401,
"errorCode": 0,
"message": "access denied"
}Пользователь забанен
{
"status": false,
"statusCode": 403,
"errorCode": 38,
"message": "user banned"
}Конфигурация не найдена
{
"status": false,
"statusCode": 400,
"errorCode": 1,
"message": "not found"
}Бизнес-ошибки (генерируются через errorGenerator) всегда возвращают HTTP-статус 400. Ошибки авторизации возвращаются с 401/403, а превышение лимита — с 429. Ориентируйтесь на поле errorCode, а не на HTTP-статус.
Превышен лимит запросов
{
"status": false,
"statusCode": 429,
"message": "Too Many Requests"
}Неверные параметры запроса
{
"status": false,
"statusCode": 400,
"errorCode": 3,
"message": "bad request"
}Рекомендации
При получении ошибки 429 Too Many Requests рекомендуется подождать 60 секунд перед повторным запросом.
Ошибка errorCode: 0 может означать как неверный API ключ, так и попытку доступа к ресурсу без прав.
Помогла ли вам эта статья?