# Errores

> Las llamadas estilo TMDB devuelven errores en el cuerpo de TMDB: success false, un status_code numérico y un status_message. Las llamadas estilo OMDb devuelven Response False con una cadena Error. amodb usa 8 códigos de TMDB, del 7 (clave no válida) al 25 (límite de solicitudes) y el 36 (plan caducado). Reintenta solo 429, 500 y 504.

## Cuerpo de error estilo TMDB

Todo error de `https://api.amodb.dev/3` tiene la misma forma JSON que TMDB:

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

## Códigos de error

| HTTP | status_code | status_message                                                               | Qué hacer                             |
| ---- | ----------- | ---------------------------------------------------------------------------- | ------------------------------------- |
| 401  | 7           | Invalid API key: You must be granted a valid key.                            | Revisa la clave y cómo la envías.     |
| 401  | 10          | Suspended API key: Access to your account has been suspended, contact amodb. | Escribe a <support@amodb.dev>.        |
| 402  | 36          | Your plan has expired. Renew at <https://amodb.dev/pricing>                  | Paga un nuevo periodo.                |
| 404  | 34          | The resource you requested could not be found.                               | Revisa el id o la ruta.               |
| 405  | 37          | This method is not offered by amodb.                                         | Usa un endpoint de lectura.           |
| 429  | 25          | Your request count (N) is over the allowed limit of (L).                     | Espera los segundos de `Retry-After`. |
| 500  | 11          | Internal error: Something went wrong, contact amodb.                         | Reintenta tras unos segundos.         |
| 504  | 24          | Your request to the backend server timed out. Try again.                     | Reintenta tras unos segundos.         |

## Cuerpo de error estilo OMDb

El endpoint compatible con OMDb conserva la forma y el texto de OMDb:

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

Una llamada OMDb con `r=xml` devuelve HTTP 400. Usa `r=json` o no pongas `r`.

## Gestionar los errores en el código

```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']}")
```

## Alternativas que no son errores

- Una etiqueta `language` desconocida no falla. amodb sirve inglés para ella.
- Un campo sin datos es `null` o un array vacío, como en TMDB.

## Preguntas y respuestas

### ¿Qué errores debería reintentar mi cliente?

Reintenta 429 tras los segundos de Retry-After, y 500 o 504 con una espera creciente de unos segundos. No reintentes 401, 402, 404 ni 405: la misma llamada vuelve a fallar.

### ¿Por qué recibo 405 en un endpoint de TMDB?

amodb no ofrece los métodos de escritura de TMDB para cuenta, sesión, puntuaciones y listas. Devuelven 405 con status_code 37. Todos los endpoints de lectura funcionan.

## Páginas relacionadas

- [Límites de solicitudes](https://amodb.dev/es/rate-limits/): amodb limita cada clave por solicitudes por minuto en una ventana deslizante de 60 segundos: 20, 40 o 120 según el plan. Lee los encabezados y gestiona el 429.
- [Autenticación](https://amodb.dev/es/authentication/): Cómo enviar tu clave de amodb: api_key en la consulta, un encabezado Bearer o apikey en llamadas OMDb. Formato, almacenamiento, rotación y errores 401.
- [Inicio rápido](https://amodb.dev/es/quickstart/): Haz tu primera llamada a amodb: consigue una clave, pide los detalles de una película en curl, JavaScript, Python, PHP o Go y carga el póster. En 2 minutos.

Actualizado: 2026-10-18. Source: https://amodb.dev/es/errors/
