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

# Errores y paginación

> Formatos de error y patrones de paginación de Insurance Boosters API.

Las APIs usan códigos HTTP estándar y respuestas JSON para indicar errores. Los endpoints de listado utilizan paginación por cursor, URL siguiente o número de página según el recurso.

## Errores

La mayoría de los endpoints devuelve una propiedad `message`:

```json theme={null}
{
  "message": "Database not found"
}
```

Algunos endpoints de WhatsApp y archivos devuelven `error`:

```json theme={null}
{
  "error": "Invalid request payload"
}
```

| HTTP  | Significado                                                | Acción recomendada                        |
| ----- | ---------------------------------------------------------- | ----------------------------------------- |
| `400` | Parámetros o body inválidos.                               | Revisa los campos requeridos y sus tipos. |
| `401` | API key inválida, expirada o faltante.                     | Verifica `x-ib-api-key`.                  |
| `403` | La integración no tiene acceso al recurso.                 | Confirma permisos e identificadores.      |
| `404` | El recurso no existe o no está disponible.                 | Confirma los IDs enviados.                |
| `409` | La operación entró en conflicto con un cambio concurrente. | Consulta el estado actual y reintenta.    |
| `413` | El archivo o payload supera el límite permitido.           | Reduce su tamaño.                         |
| `415` | Tipo de archivo no permitido.                              | Usa un tipo MIME aceptado.                |
| `422` | El contenido tiene una estructura incompatible.            | Revisa la configuración del recurso.      |
| `500` | Error inesperado.                                          | Reintenta; si continúa, contacta soporte. |

<Tip>
  Registra el método, la ruta, el código HTTP y el body de error. Nunca guardes la API key en logs.
</Tip>

## Paginación por cursor

[Listar registros de un tablero](/tableros/listar-registros) devuelve:

```json theme={null}
{
  "records": [],
  "total": 120,
  "hasMore": true
}
```

Cuando `hasMore` sea `true`, envía el ID del último registro como `lastRecordId`. Conserva el mismo `sortBy` y `sortDirection` durante todo el recorrido.

```text theme={null}
GET /databases/{databaseId}/records?limit=50&lastRecordId={recordId}
```

## Paginación por página

[Buscar registros](/tableros/buscar-registros) usa `page` basada en cero y `limit` dentro del body:

```json theme={null}
{
  "query": "",
  "page": 0,
  "limit": 20
}
```

Incrementa `page` mientras `hasMore` sea `true`.

## Paginación por URL siguiente

[Listar plantillas de WhatsApp](/whatsapp/listar-plantillas) puede devolver `paging.next`. Envía ese valor sin modificarlo en `nextUrl`:

```text theme={null}
GET /whatsapp/{phoneNumberId}/templates?nextUrl={paging.next}
```

Si `paging.next` no aparece, ya recibiste todos los resultados.
