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

# Respuestas

> Estructura, códigos y tipos de respuesta de la API de Verifica

En esta guía hablaremos sobre qué sucede cuando algo sale mal mientras trabajas con el API.

Puedes saber si tu solicitud fue exitosa verificando el código de estado al recibir una respuesta del API. Si la respuesta no fue exitosa, puedes utilizar el tipo de error y el mensaje de error para entender qué salió mal y realizar algunas depuraciones básicas (antes de contactar al soporte).

## Esquema de Respuesta

Todas las respuestas de nuestras APIs poseen la siguiente estructura:

<ResponseField name="type" type="string">
  Indica el tipo de respuesta. Los valores para los tipos se detallan en la sección [Tipos de Respuesta](#tipos-de-respuesta).
</ResponseField>

<ResponseField name="status" type="integer">
  El código de estado corresponde al código de la respuesta de la solicitud. Los valores se detallan en la sección [Códigos de Respuesta](#códigos-de-respuesta).
</ResponseField>

<ResponseField name="message" type="string">
  Es el mensaje que resume el resultado de la solicitud realizada.
</ResponseField>

<ResponseField name="errors" type="array | null">
  Arreglo con los errores correspondientes a la solicitud, de existir y ser necesario; caso contrario el valor puede ser nulo. Está presente en todas las respuestas de error.
</ResponseField>

<ResponseField name="data" type="object | array | null">
  Objeto o arreglo con los datos retornados en respuesta a la solicitud procesada, de existir y ser necesario; caso contrario el valor puede ser nulo. Está presente en todas las respuestas exitosas.
</ResponseField>

```json Objeto respuesta theme={null}
{
  "type": "...",
  "status": XXX,
  "message": "...",
  "errors": [...],
  "data": {...}
}
```

## Códigos de Respuesta

Lista de los diferentes códigos de respuesta devueltos por el API de VerificaID. Utilízalos para entender si una solicitud fue exitosa.

| Código | Descripción                                                                       |
| ------ | --------------------------------------------------------------------------------- |
| `200`  | Indica que la solicitud se ha procesado con éxito.                                |
| `401`  | Indica que la solicitud fue rechazada por carecer de autenticación.               |
| `402`  | Indica que la solicitud autenticada carece de tokens disponibles para procesarla. |
| `404`  | Indica que el endpoint solicitado es inexistente.                                 |
| `405`  | Indica que el método solicitado por el endpoint no está soportado.                |
| `422`  | Indica que la solicitud fue rechazada porque contiene errores.                    |
| `429`  | Indica que se ha alcanzado el límite de solicitudes por rango de tiempo.          |
| `500`  | Indica que ha ocurrido un problema interno en el servidor.                        |
| `503`  | Indica que la solicitud no puede ser procesada en este momento.                   |

## Tipos de Respuesta

Algunos de los tipos de respuesta y de error que podrías encontrar:

| Tipo                | Descripción                                                                                                                |
| ------------------- | -------------------------------------------------------------------------------------------------------------------------- |
| `result`            | Indica que la solicitud se resolvió de manera exitosa.                                                                     |
| `unauthorized`      | La solicitud fue rechazada por carecer de autorización. El API key usado es inválido.                                      |
| `payment_required`  | La solicitud fue rechazada por falta de una condición de pago.                                                             |
| `invalid_request`   | La solicitud fue rechazada porque contiene datos inválidos o en formatos incorrectos.                                      |
| `too_many_requests` | Se ha superado el límite permitido de solicitudes por rango de tiempo. Distintos endpoints pueden tener distintos límites. |
| `api_error`         | Ha ocurrido un error al procesar la solicitud del lado del servidor.                                                       |

```json result theme={null}
{
  "type": "result",
  "status": 200,
  "message": "Se ha validado la información correctamente.",
  "data": { ... }
}
```
