Ошибки

Вызовы в стиле TMDB возвращают ошибки в теле TMDB: success false, числовой status_code и status_message. Вызовы в стиле OMDb возвращают Response False со строкой Error. amodb использует 8 кодов TMDB, от 7 для неверного ключа до 25 для лимита запросов и 36 для истекшего тарифа. Повторяйте только 429, 500 и 504.

Обновлено Открыть в Markdown

Тело ошибки в стиле TMDB

Каждая ошибка от https://api.amodb.dev/3 имеет тот же JSON, что и в TMDB:

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

Коды ошибок

HTTPstatus_codestatus_messageЧто делать
4017Invalid API key: You must be granted a valid key.Проверьте ключ и способ его передачи.
40110Suspended API key: Access to your account has been suspended, contact amodb.Напишите на support@amodb.dev.
40236Your plan has expired. Renew at https://amodb.dev/pricingОплатите новый период.
40434The resource you requested could not be found.Проверьте ID или путь.
40537This method is not offered by amodb.Используйте эндпоинт чтения.
42925Your request count (N) is over the allowed limit of (L).Подождите Retry-After секунд.
50011Internal error: Something went wrong, contact amodb.Повторите через несколько секунд.
50424Your request to the backend server timed out. Try again.Повторите через несколько секунд.

Тело ошибки в стиле OMDb

Эндпоинт, совместимый с OMDb, сохраняет форму и формулировки OMDb:

Вызов OMDb с r=xml возвращает HTTP 400. Используйте r=json или не указывайте r.

JSON
{
  "Response": "False",
  "Error": "Movie not found!"
}
jspy
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}`);
}
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']}")

Запасные варианты, которые не являются ошибками

  • Неизвестный тег language не вызывает ошибку. amodb отдает для него английский.
  • Поле без данных равно null или пустому массиву, как в TMDB.

Вопросы и ответы

Какие ошибки должен повторять мой клиент?

Повторяйте 429 через Retry-After секунд, а 500 и 504 с нарастающей паузой в несколько секунд. Не повторяйте 401, 402, 404 и 405: тот же вызов снова завершится ошибкой.

Почему я получаю 405 для эндпоинта TMDB?

amodb не предоставляет методы записи TMDB для аккаунта, сессии, оценок и списков. Они возвращают 405 со status_code 37. Все эндпоинты чтения работают.