# Błędy

> Wywołania w stylu TMDB zwracają błędy w treści TMDB: success false, liczbowy status_code i status_message. Wywołania w stylu OMDb zwracają Response False z ciągiem Error. amodb używa 8 kodów TMDB, od 7 dla nieprawidłowego klucza przez 25 dla limitu żądań po 36 dla wygasłego planu. Ponawiaj tylko 429, 500 i 504.

## Treść błędu w stylu TMDB

Każdy błąd z `https://api.amodb.dev/3` ma ten sam kształt JSON co w TMDB:

```json
{
  "success": false,
  "status_code": 34,
  "status_message": "The resource you requested could not be found."
}
```

## Kody błędów

| HTTP | status_code | status_message                                                               | Co zrobić                                       |
| ---- | ----------- | ---------------------------------------------------------------------------- | ----------------------------------------------- |
| 401  | 7           | Invalid API key: You must be granted a valid key.                            | Sprawdź klucz i sposób jego wysyłania.          |
| 401  | 10          | Suspended API key: Access to your account has been suspended, contact amodb. | Napisz na <support@amodb.dev>.                  |
| 402  | 36          | Your plan has expired. Renew at <https://amodb.dev/pricing>                  | Opłać nowy okres.                               |
| 404  | 34          | The resource you requested could not be found.                               | Sprawdź ID lub ścieżkę.                         |
| 405  | 37          | This method is not offered by amodb.                                         | Użyj endpointu odczytu.                         |
| 429  | 25          | Your request count (N) is over the allowed limit of (L).                     | Poczekaj tyle sekund, ile podaje `Retry-After`. |
| 500  | 11          | Internal error: Something went wrong, contact amodb.                         | Ponów po kilku sekundach.                       |
| 504  | 24          | Your request to the backend server timed out. Try again.                     | Ponów po kilku sekundach.                       |

## Treść błędu w stylu OMDb

Endpoint zgodny z OMDb zachowuje kształt i sformułowania OMDb:

```json
{
  "Response": "False",
  "Error": "Movie not found!"
}
```

Wywołanie OMDb z `r=xml` zwraca HTTP 400. Użyj `r=json` albo pomiń `r`.

## Obsługa błędów w kodzie

```js
const res = await fetch("https://api.amodb.dev/3/movie/550", {
  headers: { Authorization: `Bearer ${process.env.AMODB_KEY}` },
});
if (!res.ok) {
  const err = await res.json();
  if (res.status === 429) {
    // wait Retry-After seconds, then retry
  }
  throw new Error(`amodb ${res.status} code ${err.status_code}: ${err.status_message}`);
}
```

```python
res = requests.get(url, headers=headers, timeout=10)
if not res.ok:
    err = res.json()
    raise RuntimeError(f"amodb {res.status_code} code {err['status_code']}: {err['status_message']}")
```

## Zachowania zastępcze, które nie są błędami

- Nieznany tag `language` nie powoduje błędu. amodb zwraca dla niego angielski.
- Pole bez danych ma wartość `null` albo jest pustą tablicą, tak jak w TMDB.

## Pytania i odpowiedzi

### Które błędy powinien ponawiać mój klient?

Ponów 429 po Retry-After sekundach, a 500 lub 504 z odstępem kilku sekund. Nie ponawiaj 401, 402, 404 ani 405: to samo wywołanie znów się nie powiedzie.

### Dlaczego dostaję 405 dla endpointu TMDB?

amodb nie oferuje metod zapisu TMDB dla konta, sesji, ocen i list. Zwracają one 405 z status_code 37. Wszystkie endpointy odczytu działają.

## Powiązane strony

- [Limity żądań](https://amodb.dev/pl/rate-limits/): amodb limituje klucz liczbą żądań na minutę w przesuwanym oknie 60 sekund: 20, 40 lub 120 zależnie od planu. Czytaj nagłówki limitu i obsłuż 429 z Retry-After.
- [Uwierzytelnianie](https://amodb.dev/pl/authentication/): Jak wysłać klucz amodb: api_key w zapytaniu, nagłówek Authorization Bearer albo apikey dla wywołań OMDb. Format klucza, przechowywanie, rotacja i błędy 401.
- [Szybki start](https://amodb.dev/pl/quickstart/): Pierwsze wywołanie amodb: zdobądź klucz, pobierz szczegóły filmu w curl, JavaScript, Python, PHP lub Go, potem załaduj plakat z img.amodb.dev. Poniżej 2 minut.

Zaktualizowano: 2026-10-18. Source: https://amodb.dev/pl/errors/
