Обробка помилок

HTTP-статус коди, формати відповідей з помилками та як їх обробляти в API TCG Price Lookup.


Формат відповіді з помилкою

Всі помилки повертають однаковий формат JSON:

{
  "error": {
    "code": "error_code",
    "message": "Зрозумілий опис помилки",
    "details": {}
  }
}

HTTP-статус коди

КодОпис
200Успішно
400Поганий запит (невірні параметри)
401Не авторизовано (невірний або відсутній API-ключ)
403Заборонено (обмеження плану)
404Не знайдено (картка або ресурс не існує)
429Забагато запитів (перевищено rate limit)
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) {
    // Rate limit: перевірте, коли можна повторити
    const retryAfter = error.headers['retry-after'];
    console.log(`Rate limit. Повторіть через ${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"Rate limit. Повторіть через {e.retry_after} секунд")
except AuthError:
    print("Невірний API-ключ")