Penanganan Error

Kode status HTTP, format respons error, dan cara menanganinya di TCG Price Lookup API.


Format Respons Error

Semua error mengembalikan format JSON yang konsisten:

{
  "error": {
    "code": "error_code",
    "message": "Penjelasan error yang dapat dibaca manusia",
    "details": {}
  }
}

Kode Status HTTP

KodeDeskripsi
200Berhasil
400Permintaan tidak valid (parameter tidak valid)
401Tidak terautentikasi (API key tidak valid atau tidak ada)
403Dilarang (pembatasan akses paket)
404Tidak ditemukan (kartu atau sumber daya tidak ada)
429Terlalu banyak permintaan (rate limit terlampaui)
500Error server

Error Umum dan Cara Mengatasinya

401 Unauthorized

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

Solusi: Periksa API key Anda. Pastikan header X-API-Key disetel dengan benar.

429 Too Many Requests

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

Respons menyertakan header Retry-After yang menunjukkan berapa detik hingga permintaan berikutnya:

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

Solusi: Hormati header Retry-After. Batas harian direset tengah malam UTC. Upgrade paket jika Anda memerlukan lebih banyak permintaan.

403 Forbidden

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

Solusi: Fitur seperti riwayat harga, harga graded, dan pencarian batch memerlukan paket yang lebih tinggi.

Penanganan Error dengan SDK

// JavaScript
try {
  const card = await tcg.cards.get('pokemon-base1-4');
} catch (error) {
  if (error.status === 429) {
    // Rate limit: periksa berapa lama harus menunggu
    const retryAfter = error.headers['retry-after'];
    console.log(`Rate limit. Coba lagi dalam ${retryAfter} detik`);
  } else if (error.status === 401) {
    console.error('API key tidak valid');
  }
}
# Python
from tcglookup import TCGLookup, RateLimitError, AuthError

try:
    results = tcg.cards.search(name="charizard", game="pokemon")
except RateLimitError as e:
    print(f"Rate limit. Coba lagi dalam {e.retry_after} detik")
except AuthError:
    print("API key tidak valid")