Documentación para desarrolladores

Errores y reintentos seguros

Gestiona cada estado documentado sin duplicar accidentalmente una solicitud POST facturable.

Dirigido a
Desarrolladores backend y operadores
Antes de empezar
Registros que guarden estado, código de error y encabezados, pero nunca la clave completa

Formato de error

{
  "error": {
    "code": "invalid_request",
    "message": "Unknown topic 'addition' for grade 'grade3'"
  }
}

Decide por status y error.code; message sirve para diagnóstico humano y puede cambiar. Los errores controlados usan este formato. Un fallo no controlado de infraestructura puede devolver un 5xx genérico o un cuerpo no JSON.

Tabla de decisión

Acciones por estado de error
EstadoCódigos habitualesAcción
400invalid_requestCorrige JSON, ids del catálogo, dificultad o límites. No reintentes la misma carga.
401invalid_api_keyComprueba el encabezado y rota una clave revocada. No reintentes sin cambiar credenciales.
402insufficient_creditsAñade créditos o reduce el trabajo; no hagas reintentos automáticos.
403org_not_enabledActiva el contexto correcto o contacta al administrador/soporte.
429rate_limited o quota_exceededRespeta Retry-After cuando esté presente. El límite de plan requiere capacidad nueva, no solo espera corta.
502upstream_errorReintenta con backoff exponencial y jitter solo si la duplicación potencial es aceptable.
Otros 5xxPuede no haber envelopeTrata como transitorio, registra status y hora, y escala si persiste.

Política de reintentos

  • GET /catalog no consume créditos y es seguro de repetir después de un fallo transitorio.
  • Para 429 de ráfaga, espera como mínimo Retry-After. Para 502 u otros 5xx, usa retrasos con jitter, por ejemplo 1 s, 2 s y 4 s, con un máximo pequeño de intentos.
  • Establece timeouts y un presupuesto total. Abre un circuito o degrada la función si el servicio sigue fallando; no mantengas una cola de reintentos ilimitada.

Después de un resultado ambiguo, no repitas automáticamente un POST salvo que tu producto pueda aceptar la salida y el consumo duplicados. Registra tu propio job id, estado de envío, hora y cambio de encabezados para conciliación; ese job id no cambia el comportamiento de la API.

Diagnóstico seguro

Si necesitas ayuda, envía a admin@overthemathwall.com: método y ruta, hora UTC, status, error.code, encabezados de uso y el prefijo visible de la clave. No envíes la clave completa, contraseñas, datos de tarjeta ni datos personales de estudiantes.