Ошибки
Коды ошибок Local API, ошибки, которые выбрасывают клиенты, и коды закрытия стрима.
Каждый неудачный запрос несёт стабильный код. Опирайтесь на код: сообщение
написано для человека и может измениться. По HTTP ошибка — это тело ответа:
{"error": {"code": "not_found", "message": "no such operation"}}.
Коды ошибок
| Код | HTTP | Когда | Что делать |
|---|---|---|---|
unauthorized | 401 | Токена нет, он неверный или API выключен | Скопировать текущий токен и проверить переключатель |
forbidden | 403 | Запрос пришёл со страницы браузера, или его хост — не 127.0.0.1 и не localhost | Вызывать из программы на той же машине |
forbidden_scope | 403 | У токена нет права этого вызова | Проверить meta().scopes |
not_found | 404 | Неизвестный адрес или подключение, или для инструмента нет подключения | Проверить инструмент и connections() |
invalid_request | 400 | Неверный параметр или инструмент, которого нет в справочнике | Исправить параметр |
unsupported | 501 | MOEX, терминал, собранный без рыночных данных, или настройка, которую API не может записать | Не повторять |
not_active | 409 | Кластеры или плечо инструмента ещё не загружены | Повторить через несколько секунд. Для плеча открыть инструмент в терминале |
not_tradable | 409 | Подключение выключено, только для чтения или без ключей | Выбрать торговое подключение |
rate_limited | 429 | Превышен лимит | Немного подождать и повторить |
unavailable | 503 | Биржа или терминал не ответили, или данных ещё нет | Повторить позже |
Стрим использует те же коды. Внутри v1 могут добавляться новые коды.
Поймать ошибку
from spectre_terminal import ApiError
try:
book = terminal.orderbook("binance:futures:BTCUSDT", depth=20)
except ApiError as error:
print(error.status, error.code, error.message)Клиенты выбрасывают такие ошибки.
| Python | TypeScript | Когда |
|---|---|---|
ApiError | ApiError | Терминал ответил кодом из таблицы выше |
TokenMissing | TokenMissingError | Токен не передан и не задан в SPECTRE_LOCAL_API_TOKEN |
LocalApiDisabled | LocalApiDisabledError | Local API выключен |
TerminalUnreachable | TerminalUnreachableError | Терминал не запущен или слушает на другом порту |
IncompatibleTerminal | IncompatibleTerminalError | Клиент не поддерживает версию API терминала |
StreamRequestError | StreamRequestError | subscribe или unsubscribe отклонён |
StreamClosed | StreamClosedError | Терминал закрыл стрим |
Все они наследуют SpectreTerminalError. Токен никогда не попадает в текст
ошибки.
Коды закрытия стрима
| Код | Почему | Что делать |
|---|---|---|
1001 | API выключили или токен перевыпустили | Переподключиться с текущим токеном |
1006 | Соединение потеряно | Переподключиться |
4008 | Ваша программа не читала дольше 5 секунд | Читать быстрее или подписаться на меньшее |
4029 | У токена уже 8 соединений стрима | Использовать уже открытое соединение |
Как переподключаться в коде, см. Переподключиться.