# Codigos de Error

> Referencia de manejo de errores para la API de TBit

- Página: https://tbit.app/es/docs/api/errors
- URL base: `https://rest-api.tbit.app/v1`
- Autenticación: encabezado `X-API-Key` con tu clave en cada solicitud (los ejemplos la leen de la variable de entorno `TBIT_API_KEY`)

¿Buscas por qué un mensaje de WhatsApp no se entregó? Revisa [Errores de entrega en WhatsApp](https://tbit.app/es/docs/errores-de-entrega-whatsapp).

## Formato de Respuesta de Error

Todos los errores siguen una estructura JSON consistente:

```json
{
  "error": {
    "code": "NOT_FOUND",
    "message": "Activity not found"
  }
}
```

## Codigos de Error

| Estado | Código | Descripción |
| --- | --- | --- |
| `400` | `VALIDATION_ERROR` | Invalid request body or query parameters |
| `401` | `UNAUTHORIZED` | Missing or invalid API key |
| `404` | `NOT_FOUND` | Resource not found or does not belong to your agent |
| `405` | `METHOD_NOT_ALLOWED` | HTTP method not supported for this endpoint |
| `409` | `CONFLICT` | Resource already exists (e.g., contact with this channel) |
| `422` | `SEND_FAILED` | Template send failed (e.g., no messaging window) |
| `429` | `RATE_LIMITED` | Rate limit exceeded (100 requests/minute) |
| `500` | `INTERNAL_ERROR` | Unexpected server error |

## Rate Limit Headers

Every response includes rate limit information in headers:

| Encabezado | Descripción |
| --- | --- |
| `X-RateLimit-Remaining` | Requests remaining in current window |
| `X-RateLimit-Reset` | Timestamp (ms) when the window resets |

## Manejo de Errores

Mejores practicas para manejar errores de API:

- Siempre verifica el codigo de estado HTTP antes de analizar el cuerpo de respuesta
- Implementa backoff exponencial para errores 429 (limite de tasa)
- Registra codigos y mensajes de error para depuracion
- No reintentes errores 400 o 401: corrige la solicitud primero
