Обработка ошибок

HTTP-коды статусов TCG Price Lookup API, формат ответов об ошибках и способы их устранения.


Формат ответа об ошибке

Все ошибки возвращают единообразный JSON-формат:

{
  "error": {
    "code": "error_code",
    "message": "Понятное описание ошибки",
    "details": {}
  }
}

HTTP-коды статусов

КодОписание
200Успех
400Некорректный запрос (неверные параметры)
401Не аутентифицирован (неверный или отсутствующий API-ключ)
403Запрещено (ограничения плана)
404Не найдено (карта или ресурс не существует)
429Слишком много запросов (превышен лимит)
500Ошибка сервера

Распространённые ошибки и их решение

401 Unauthorized

{ "error": { "code": "unauthorized", "message": "Invalid or missing API key" } }

Решение: Проверьте API-ключ. Убедитесь, что заголовок X-API-Key установлен правильно.

429 Too Many Requests

{ "error": { "code": "rate_limit_exceeded", "message": "Daily limit reached" } }

В ответе содержится заголовок Retry-After с количеством секунд до следующего запроса:

Retry-After: 3600
X-RateLimit-Limit: 200
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1704067200

Решение: Соблюдайте заголовок Retry-After. Дневной лимит сбрасывается в полночь UTC. При необходимости большего количества запросов перейдите на более высокий план.

403 Forbidden

{ "error": { "code": "feature_not_available", "message": "Price history requires Trader plan" } }

Решение: Такие функции как история цен, цены градированных карт и пакетный поиск требуют более высокого плана.

Обработка ошибок в SDK

// JavaScript
try {
  const card = await tcg.cards.get('pokemon-base1-4');
} catch (error) {
  if (error.status === 429) {
    // Лимит запросов: проверьте время до повтора
    const retryAfter = error.headers['retry-after'];
    console.log(`Лимит запросов. Повторите через ${retryAfter} сек.`);
  } else if (error.status === 401) {
    console.error('Неверный API-ключ');
  }
}
# Python
from tcglookup import TCGLookup, RateLimitError, AuthError

try:
    results = tcg.cards.search(name="charizard", game="pokemon")
except RateLimitError as e:
    print(f"Лимит запросов. Повторите через {e.retry_after} сек.")
except AuthError:
    print("Неверный API-ключ")