> ## Documentation Index
> Fetch the complete documentation index at: https://docs.benzinga.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Errores

> Cómo manejar errores y códigos de estado de la API de Benzinga

La API de Benzinga usa códigos de respuesta HTTP convencionales para indicar el éxito o el error de una solicitud de API. En general:

* **2xx**: Éxito.
* **4xx**: Error del cliente (por ejemplo, parámetro ausente, clave de API no válida).
* **5xx**: Error del servidor (algo salió mal del lado de Benzinga).

<Tip>
  Verifica siempre primero el **código de estado HTTP** para determinar si una solicitud fue exitosa. No confíes únicamente en el cuerpo de la respuesta, ya que el formato puede variar entre diferentes endpoints de la API.
</Tip>

<div id="http-status-codes">
  ## Códigos de estado HTTP
</div>

La siguiente tabla enumera los códigos de estado estándar que podrás encontrar.

| Código  | Estado                  | Descripción                                                                                          |
| :------ | :---------------------- | :--------------------------------------------------------------------------------------------------- |
| **200** | `OK`                    | La solicitud se realizó correctamente.                                                               |
| **400** | `Bad Request`           | La solicitud no fue aceptada, a menudo debido a un parámetro ausente o no válido.                    |
| **401** | `Unauthorized`          | No se proporcionó una API Key válida. Verifica tu encabezado `Authorization` o el parámetro `token`. |
| **402** | `Request Failed`        | Los parámetros eran válidos, pero la solicitud falló por razones de lógica de negocio.               |
| **403** | `Forbidden`             | La API Key es válida, pero no tienes permiso para acceder a este recurso.                            |
| **404** | `Not Found`             | El recurso solicitado (por ejemplo, ID, endpoint) no existe.                                         |
| **429** | `Too Many Requests`     | Has excedido tu límite de solicitudes.                                                               |
| **500** | `Internal Server Error` | Algo salió mal en los servidores de Benzinga. Estos casos son poco frecuentes.                       |
| **503** | `Service Unavailable`   | El servicio no está disponible temporalmente (por ejemplo, por mantenimiento).                       |

<div id="error-response-bodies">
  ## Cuerpos de respuesta de error
</div>

Si bien el código de estado HTTP es el indicador principal de un error, el cuerpo de la respuesta a menudo contiene detalles que pueden ayudarte a depurar. El formato de este cuerpo puede variar según la API que utilices.

<div id="format-1-simple-error-message">
  ### Formato 1: Mensaje de error simple
</div>

Muchos endpoints (como la API de noticias) devuelven un `string` sencillo o un objeto JSON simple con un mensaje.

```json theme={null}
"Invalid or Missing Query Parameters"
```

O

```json theme={null}
{
  "message": "Invalid page size"
}
```

<div id="format-2-structured-error-object">
  ### Formato 2: Objeto de error estructurado
</div>

Las APIs más recientes (como Data API Proxy o Fundamentals) devuelven un objeto estructurado que contiene una lista de errores.

```json theme={null}
{
  "data": null,
  "errors": [
    {
      "code": "database_query_error",
      "id": "ERR_12345",
      "value": "No se pueden obtener datos para el símbolo: INVALID"
    }
  ],
  "ok": false
}
```

<div id="handling-errors-programmatically">
  ### Manejo de errores de forma programática
</div>

Debido a la posible variación en los cuerpos de respuesta, recomendamos una estrategia sólida de manejo de errores:

1. **Verificar el código de estado HTTP.** Si es `>= 400`, trátalo como un error.
2. **Registrar el cuerpo de la respuesta.** Registra el cuerpo completo en tus logs para fines de depuración.
3. **Mostrar un mensaje genérico.** A menos que estés integrado con un endpoint específico y conozcas su formato de error exacto, muestra un mensaje genérico como "Se ha producido un error" a tus usuarios finales junto con el código de estado.
