Skip to content

Ошибки и notices

Ошибки отклоняют команду или сообщают о сбое сервиса. Notices — асинхронные сообщения об открытом стриме.

Фрейм ошибки

Ошибка несёт id команды, которая её вызвала:

json
{
  "op": "error",
  "id": 1,
  "code": "not_on_plan",
  "feature": "detail_full",
  "message": "..."
}
CodeMeaningClient action
unauthorizedКлюч отсутствует, неизвестен или отозванОстановитесь и предоставьте валидный ключ
key_revokedКлюч отозван, пока соединение было открытоЗакройте соединение и ротируйте ключ
invalid_paramsНеизвестный/отсутствующий параметр или значение вне допустимого набораИсправьте команду; не повторяйте без изменений
invalid_addressmint или wallet не является адресом SolanaПроверьте адрес локально
invalid_mintАдрес существует, но это не mint токенаИспользуйте mint токена
unknown_streamИмя стрима не существуетИспользуйте одно из восьми документированных имён
duplicate_subscriptionИдентичная подписка уже открытаПереиспользуйте существующую подписку
subscription_limitИсчерпан лимит открытых подписок планаОтпишитесь или обновите план
connection_limitИсчерпан лимит одновременных соединений планаЗакройте другое соединение или обновите план
rate_limitedСлишком высокая частота командСделайте backoff перед повтором
not_on_planЗапрошенная функция вне планаСмотрите feature; уберите её или обновите план
internal_errorСервис не смог обработать командуПовторите с backoff; сообщайте о устойчивых сбоях

Фичи not_on_plan

feature — одно из:

  • stream
  • detail_full
  • include_raw
  • cursor
  • candles
  • candle_interval
  • quota

Человекочитаемое сообщение содержит ссылку на страницу цен. Ветвьте логику клиента по code и feature, а не по тексту сообщения.

Фрейм notice

Notice не привязан к команде. Он сообщает о состоянии стрима и обычно несёт затронутую подписку:

json
{
  "op": "notice",
  "code": "gap",
  "sub": "tt_1",
  "message": "..."
}
CodeWhat happenedClient action
gapКурсор старше окна replay; доставка начинается с liveЗафиксируйте разрыв и продолжайте
replay_rate_limitedЛимит replay исчерпан; доставка начинается с liveПродолжайте без replay
droppedКлиент читал слишком медленно, события потеряны; cursor — первое потерянное событиеЗафиксируйте разрыв, сузьте фильтры или ускорьте потребление
quota_exceededИсчерпана месячная квота трафика FreeДождитесь следующего периода или обновите план
slow_consumerЧтение стабильно отстаёт; соединение закрываетсяПереподключайтесь только после исправления скорости потребления
server_restartСервис перезапускаетсяПереподключитесь с backoff и последним обработанным курсором

dropped эмитится один раз на серию потерь. Повторные notices означают, что подписку нужно сузить фильтрами или потреблять быстрее.

Политика повторов

Используйте экспоненциальный backoff с джиттером для internal_error, перезапусков и сетевых разрывов. Не повторяйте автоматически без изменений некорректные команды, невалидные ключи или отказы по плану.

Realtime Solana data API