Errores, idempotencia y reintentos
El formato de error de la API, cómo el SDK maneja reintentos y cómo usar idempotencia para no enviar duplicado.
Los errores de la API vienen en un formato consistente, con type, code, message y (cuando aplica) field:
{
"error": {
"type": "invalid_request",
"code": "validation_error",
"message": "subject is required",
"field": "subject",
"request_id": "req_..."
}
}Reintentos
El SDK reintenta automáticamente errores transitorios (red, 429, 5xx) con backoff exponencial. Los errores de validación (4xx) no se reintentan — corrige la petición.
Idempotencia
Para garantizar que un reintento no envíe el correo dos veces, pasa una clave de idempotencia. Las peticiones con la misma clave se procesan una sola vez:
await publiq.emails.send(
{ from, to, templateKey: 'welcome-email' },
{ idempotencyKey: 'signup-user-123' },
);