Errores y códigos de estado · Developers
Códigos HTTP devueltos por la API pública de Dailybot, su significado y cómo recuperarse.
La API de Dailybot devuelve códigos HTTP estándar en cada respuesta. Las respuestas exitosas caen en el rango 2xx; los errores del cliente en 4xx; los del servidor en 5xx. Cada cuerpo de error sigue la misma forma: un `detail` en el nivel raíz y errores de validación opcionales por campo bajo `errors`.
Envoltura de la respuesta de error
Toda respuesta que no sea 2xx es un objeto JSON con al menos un campo `detail`. Los errores de validación (400 en endpoints de escritura) incluyen adicionalmente un mapa `errors` por campo. Los rate limits (429) devuelven un header `Retry-After` junto con el cuerpo JSON.
{
"detail": "Human-readable summary of what went wrong.",
"errors": {
"field_name": ["Field-level validation message."]
}
}
Códigos de estado devueltos por la API pública
| Estado | Cuándo lo obtienes | Cómo recuperarte |
|---|---|---|
| 200 OK | GET, PATCH exitoso, o un POST que devuelve el recurso. | Nada que hacer — éxito. |
| 201 Created | POST exitoso que crea un recurso nuevo. | El recurso está en el body; anota el `uuid`. |
| 202 Accepted | Petición aceptada para procesamiento async (send-message, send-email, trigger de workflow). | Haz polling o suscríbete a un webhook para saber cuándo se completa. |
| 204 No Content | DELETE o PATCH exitoso sin body de respuesta. | Nada que parsear; éxito. |
| 400 Bad Request | Error de validación. El campo `errors` contiene mensajes por campo. | Corrige el payload y reintenta. Nunca reintentes a ciegas. |
| 401 Unauthorized | Credencial faltante, expirada o inválida. | Confirma tu API key o refresca tu sesión Bearer del CLI con `dailybot login`. |
| 403 Forbidden | Credencial válida pero sin permisos para esta acción, o endpoint CLI-only. | Revisa la matriz de paridad en [/es/developers/authentication#parity-guarantee](/es/developers/authentication#parity-guarantee). |
| 404 Not Found | El recurso no existe, o el llamante no puede verlo en esta organización. | Verifica el UUID y el scope de la credencial. |
| 409 Conflict | La escritura entra en conflicto con el estado actual. | Relee el recurso, elige el siguiente estado correcto, reintenta. |
| 422 Unprocessable Entity | Payload sintácticamente válido pero semánticamente inválido. | Lee `detail` — el mensaje identifica el campo problemático. |
| 429 Too Many Requests | Rate limit excedido. | Respeta el header `Retry-After`. Ver [/es/developers/rate-limits](/es/developers/rate-limits). |
| 500 Internal Server Error | Error inesperado del lado de Dailybot. | Reintenta con exponential backoff. Si persiste, contacta a soporte. |
| 502 / 503 / 504 | Caída upstream o ventana de mantenimiento. | Reintenta con exponential backoff. |
Política de reintentos
Reintenta solo en 429, 502, 503, 504 y 5xx idempotentes. Nunca reintentes un 4xx a ciegas — el error está de tu lado. Para 429, honra `Retry-After`; para 5xx, usa exponential backoff (empieza en 250 ms, tope en 30 s, agrega jitter).