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' },
);
Errores, idempotencia y reintentos — Publiq Docs